Acumatica and Marketo integration
Acumatica runs finance, distribution, and customer master data. Adobe Marketo Engage runs B2B marketing automation: leads, companies, campaigns, and engagement. Connecting the two keeps the marketing audience in step with the customers and contacts that already exist in the ERP, so campaigns target real accounts and new contacts created in finance reach marketing without re-keying. Acumatica stays the system of record, since Marketo has no general ledger or accounts payable. ml-connector moves the records between two very different APIs on a schedule you control.
What moves between them
Customer and contact master data moves from Acumatica into Marketo. Acumatica customers become Marketo companies keyed on external company id, and the contacts under each customer become Marketo leads keyed on email, so the marketing database mirrors the accounts and people in the ERP. Where useful, won-deal and invoice-derived signals such as account revenue flow from Acumatica into Marketo company or lead fields to drive segmentation and scoring. GL accounts, AP bills, payments, and vendors stay inside Acumatica and are never written into Marketo, because Marketo has no accounting ledger. Engagement data such as activities stays in Marketo. Cadence is scheduled polling on both sides, since neither system pushes change events to a connector by default.
How ml-connector handles it
ml-connector stores both credential sets encrypted and holds two separate OAuth tokens. On the Acumatica side it accepts the full instance URL and the endpoint version per customer, since Acumatica publishes no shared base URL and a version mismatch returns 404, and it wraps every field value in the required value object and expands contacts under each customer. On the Marketo side it exchanges client credentials for a bearer token and renews it before the one-hour expiry or on a 602 error. Acumatica customers map to Marketo companies on external company id, and Acumatica contacts map to Marketo leads on email, the field-value dedupe keys Marketo uses instead of an idempotency header. Because Marketo never calls a connector when records change, both systems are polled: Acumatica on a LastModifiedDateTime filter and Marketo on updatedAt, with the bulk extract API used for large initial loads. Marketo returns HTTP 200 with a success flag and an errors array, so each response body is parsed rather than trusting the status code, and rate-limit code 606 or concurrency code 615 triggers backoff with jitter against the 50,000-call daily quota. Acumatica throttles per license tier and returns HTTP 429, which is also retried. If the customer has SFDC or Dynamics CRM sync active, Marketo companies and opportunities are read-only, so ml-connector writes only lead fields in that case. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized industrial supplies company with around 150 staff runs Acumatica for finance, inventory, and customer accounts, and its marketing team runs campaigns in Adobe Marketo Engage. Before the integration, marketing worked from a CSV of contacts exported every few weeks, so new customers onboarded in finance were invisible to nurture campaigns for a month and bounced emails piled up against accounts that finance had already closed. With Acumatica and Marketo connected, each new customer and contact in the ERP flows into Marketo as a company and lead within the polling window, and account revenue from Acumatica lands on the Marketo company record so the team can segment by spend. The manual export step is gone and campaigns target the current customer base.
What you can do
- Upsert Acumatica customers into Marketo as companies and their contacts as leads, keyed on external company id and email.
- Carry Acumatica account revenue and won-deal signals into Marketo lead and company fields to drive segmentation and scoring.
- Keep accounting data such as GL accounts, AP bills, and payments inside Acumatica, since Marketo has no ledger to receive them.
- Bridge Acumatica OAuth and the Marketo client-credentials bearer token, renewing the Marketo token before its one-hour expiry.
- Poll both systems on a schedule with parsed success-flag responses, backoff on Marketo rate limits, and a full audit trail on every record.
Questions
- Which direction does data move between Acumatica and Marketo?
- Customers and contacts move from Acumatica into Marketo, becoming companies and leads in the marketing database. Account-level signals such as revenue can also flow from Acumatica into Marketo to support segmentation. Acumatica stays the system of record, and accounting data such as GL accounts and AP bills is never written into Marketo, which has no ledger to hold it.
- Why does the integration poll instead of using webhooks?
- Marketo's webhooks are outbound calls it makes during a campaign flow step, not change events it sends to a connector, so Marketo never notifies ml-connector when a lead is updated. For that reason ml-connector polls Marketo on updatedAt and uses the bulk extract API for large loads. Acumatica is polled on LastModifiedDateTime on the same schedule, so both sides stay current without relying on a push.
- What happens if Marketo is already syncing with a CRM like Salesforce?
- If SFDC or Microsoft Dynamics CRM sync is enabled in Marketo, its companies, opportunities, and sales persons become read-only through the API. In that case ml-connector writes only lead fields and treats the CRM-managed objects as read-only, so the existing CRM sync stays the authority for accounts. Lead enrichment from Acumatica still works, since lead records remain writable.
Related integrations
More Acumatica integrations
Other systems that connect to Marketo
Connect Acumatica and Marketo
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started