Visma and Marketo integration
Visma.net ERP holds your customer and supplier master data and general ledger accounts. Marketo runs your B2B marketing campaigns and lead scoring. Connecting the two keeps your Marketo company profiles in sync with your Visma customer and supplier records, and ensures new accounts, name changes, and payment status from Visma flow into your marketing operations without re-keying. ml-connector bridges the very different authentication models and API shapes on each side.
What moves between them
Customer and supplier records flow from Visma into Marketo. On each sync cycle, ml-connector reads Visma customers and suppliers using the lastModifiedDateTime parameter to fetch only records changed since the last poll, maps them to Marketo company records or custom objects, and creates or updates them in batches of 300. Visma payments status, account names, and contact dimensions are synced to keep Marketo company profiles current. Reference data such as customer categories and supplier payment terms flow one-way from Visma to Marketo.
How ml-connector handles it
ml-connector stores both OAuth 2.0 credential sets encrypted and refreshes the Visma and Marketo bearer tokens on a schedule, retrying if either endpoint returns 401. On the Visma side it reads the company ID from the credential set and includes the required ipp-company-id header on every list query. Because Visma supports webhooks only for one-time notification without retry, ml-connector polls Visma customers and suppliers on a configurable schedule tied to your account maintenance cadence, using the lastModifiedDateTime query parameter to fetch deltas since the last sync. Marketo batch inserts and updates are split into 300-record chunks to respect Marketo's batch limit, and each request is wrapped with a job ID for idempotent replay if a downstream Marketo write fails. The integration tracks Marketo's unique Munchkin ID per instance and routes all Marketo calls to the correct subdomain.
A real-world example
A mid-market B2B software vendor runs Visma.net ERP for accounting and customer billing in the Nordic region, and uses Marketo for lead generation and account-based marketing campaigns. Before integration, the marketing team manually imported customer account lists from Visma into Marketo every quarter, leading to stale company profiles and missed signals when a customer changed payment status or location. With Visma and Marketo connected, each new customer or supplier added to Visma automatically flows into Marketo as a company record within an hour, payment terms and account status sync continuously, and the sales team's target account lists stay current without manual pulls. The marketing operations team no longer spends a day per month on data reconciliation.
What you can do
- Sync Visma customers and suppliers to Marketo companies and custom objects on a polling schedule.
- Map Visma customer categories, payment status, and contact dimensions to Marketo company fields and custom object attributes.
- Handle OAuth 2.0 token refresh for both Visma and Marketo, retrying on 401 errors.
- Batch Marketo inserts and updates in 300-record chunks and track job IDs for idempotent replay.
- Poll Visma on a schedule and use the lastModifiedDateTime query parameter to fetch only changed records since the last sync.
Questions
- Why does ml-connector poll Visma instead of using webhooks?
- Visma webhooks are one-time notifications with no automatic retry, so a failed delivery means the change is lost. ml-connector polls Visma customers and suppliers using the lastModifiedDateTime query parameter on a schedule tied to your account maintenance cycle. This ensures no changes are missed and allows replaying a sync if a Marketo write fails.
- How does ml-connector handle the different batch limits between Visma and Marketo?
- Visma list endpoints return up to 100 records per call by default. ml-connector fetches all changed Visma records across multiple paginated calls, then batches them into 300-record chunks for Marketo's batch API. Each Marketo batch is tagged with a job ID, so if a write fails it can be replayed without creating duplicates.
- What happens when a Visma or Marketo OAuth token expires?
- ml-connector refreshes both tokens on a schedule before expiry. If a call returns 401, ml-connector immediately refreshes the token and retries the request. Visma requires the ipp-company-id header on every call, and ml-connector includes it automatically from the stored credential set.
Related integrations
More Visma integrations
Other systems that connect to Marketo
Connect Visma and Marketo
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started