ml-connector
Sage IntacctMarketo

Sage Intacct and Marketo integration

Sage Intacct runs your accounting and vendor data. Marketo runs your marketing campaigns and sales engagement. Connecting the two keeps your vendor master and company lists synchronized between finance and marketing, so your campaigns target the right accounts and your sales team has clean contact records for vendors. Vendor information entered once in Sage Intacct can populate Marketo companies and leads without manual re-entry or spreadsheet exports.

How Sage Intacct works

Sage Intacct is a cloud-based ERP and accounting system that exposes vendors, accounts payable bills, GL accounts, and organizational dimensions through a single XML gateway endpoint at https://api.intacct.com/ia/xml/xmlgw.phtml. Authentication uses session-based credentials: a senderId, senderPassword, companyId, userId, and userPassword are exchanged in an initial getAPISession call for a sessionid that is cached for 50 minutes. All operations serialize through the XML gateway POST connection. HTTP responses are 200 even when application-level errors occur, so error checking must parse the XML body for errormessage tags. Sage Intacct does not support webhooks, so all data flows are driven by scheduled polls or manual runs.

How Marketo works

Marketo is a cloud-based marketing automation platform that manages leads, companies, opportunities, and sales persons via REST JSON API at https://<munchkin-id>.mktorest.com/rest/v1, where the munchkin-id is unique to each instance. Authentication uses OAuth2 client credentials: the customer provides a Munchkin ID, Client ID, and Client Secret to obtain a Bearer token with a maximum 3600 second expiry. Marketo's REST API supports GET requests with filterType and paging parameters to retrieve leads, companies, and activities incrementally. Like Sage Intacct, Marketo does not support inbound event subscriptions, so a connector must poll the API to detect changes.

What moves between them

The main data flow is from Sage Intacct into Marketo. Vendor records from Sage Intacct are polled and synced into Marketo as company objects, with vendor names, IDs, and status. Vendor contacts are created as lead records in Marketo, keyed to their company. The sync runs on a schedule you define, typically daily or weekly depending on how frequently your vendor master changes. GL account hierarchies or cost center dimensions can optionally be synced to custom object fields in Marketo for segmentation and campaign targeting. No data flows back from Marketo into Sage Intacct, as Marketo is a consumer of the vendor information.

How ml-connector handles it

ml-connector manages two different authentication patterns on a single connection. On the Sage Intacct side, it sends the XML session credentials once, caches the returned sessionid for up to 50 minutes, and automatically refreshes the session on the next poll if expiry approaches. On the Marketo side, it stores the Munchkin ID and OAuth2 credentials and requests a new Bearer token before each batch of API calls, since Marketo tokens expire after one hour. The connector polls Sage Intacct's vendor list using the XML gateway, then maps each vendor to a Marketo company record, using the vendor ID as the external ID for deduplication. Vendor contacts are created as leads and linked to their company via the companyId field. Because both systems are polling-only, the connector runs on your cadence and handles XML parsing errors on the Intacct side and HTTP 429 rate limits on the Marketo side with exponential backoff. Each record carries a full audit trail showing the source vendor ID, the timestamp of the sync, and whether the Marketo record was created or updated.

A real-world example

A mid-sized software company maintains a vendor list in Sage Intacct for procurement, contracts, and accounts payable, with hundreds of active vendors spanning software, consulting, cloud services, and hardware. The marketing team wants to run account-based marketing campaigns targeting vendors in specific categories (for example, software partners or reseller channels). Before the integration, the marketing team manually exported vendor lists from Sage Intacct and imported them into Marketo twice a quarter, a process that was error-prone and left gaps when new vendors were added. With Sage Intacct and Marketo connected, vendor records sync daily, so new vendors appear in Marketo within 24 hours and the marketing team can segment and target vendors without manual lists.

What you can do

  • Sync vendor master records from Sage Intacct to Marketo companies, using the vendor ID as the external key for deduplication.
  • Create lead records in Marketo for vendor contacts, linked to their company record via the Marketo companyId field.
  • Authenticate Sage Intacct via XML session credentials with automatic 50-minute session refresh, and Marketo via OAuth2 Bearer tokens.
  • Poll Sage Intacct and Marketo on a defined schedule with error handling for XML parse failures and HTTP rate limits.
  • Maintain a full audit trail of every vendor synced, including the source vendor ID, sync timestamp, and create or update action.

Questions

Which direction does data flow between Sage Intacct and Marketo?
Data flows from Sage Intacct into Marketo. Vendor records and contacts are synced from Sage Intacct into Marketo companies and leads. Marketo does not push data back into Sage Intacct, as Marketo is a marketing consumer of the vendor information, not a source of accounting data.
How does ml-connector handle the different authentication models?
Sage Intacct uses session-based XML authentication that expires after 50 minutes; ml-connector caches the sessionid and refreshes it automatically on the next poll. Marketo uses OAuth2 client credentials with a 1-hour token expiry; ml-connector requests a fresh Bearer token before each batch of API calls. Both credential sets are stored encrypted and the connector transparently manages renewal on each sync.
How often does the sync run, and what happens if one system is unreachable?
The sync runs on a schedule you define, typically daily or weekly. If Sage Intacct or Marketo is temporarily unreachable, ml-connector backs off with exponential jitter, retries up to a limit, and surfaces the error in the audit log so you can investigate. The next scheduled run will retry the sync automatically.

Related integrations

Connect Sage Intacct and Marketo

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started