Sage 100 and Marketo integration
Sage 100 runs your on-premises finance and operations. Marketo runs your B2B marketing campaigns. Connecting the two brings your customer master from Sage 100 into Marketo so your marketing team can target and track leads against the actual sales orders and invoices your ERP has already recorded. Customer contact data and sales order line items flow into Marketo with no re-entry, keeping your marketing database clean and in sync with your source of truth.
What moves between them
Customer records and contact details move from Sage 100 into Marketo as Leads and Companies every 15 to 30 minutes. Sales order data is pulled from Sage 100 as Opportunities and synced into Marketo to track pipeline and closed business against the orders in the ERP. Contact names, email addresses, and phone numbers from Sage 100's Customer Contact entity populate Marketo Lead fields, and company-level attributes like industry and billing address populate Marketo Companies. Because Marketo is primarily read for deal tracking unless custom objects are enabled, most data flows inbound from Sage 100.
How ml-connector handles it
ml-connector runs on the customer's network and connects to the local Sage 100 BOI agent using Windows service account authentication plus the customer's supplied API credentials. It polls Sage 100 every 15 to 30 minutes for new or updated customers and sales orders by checking the DateLastUpdated field. On the Marketo side, ml-connector exchanges the customer's Client ID and Client Secret for an OAuth2 Bearer token at the start of each cycle and uses it to upsert Leads and Companies into Marketo via the REST API. Company code is prepended to every Sage 100 query to ensure the correct entity scope. Sage 100's COM layer has concurrency limits due to record locking, so ml-connector backs off and retries on lock conflicts. If a Lead or Company upsert fails in Marketo (due to 429 rate limit or temporary unavailability), the record is logged for replay. Contact lookups in Marketo use email as the deduplication key, while company lookups use the Sage 100 customer number mapped to a custom field.
A real-world example
A B2B software distributor with 50 sales reps runs Sage 100 for order fulfillment and invoicing. Every month, the marketing team exports an CSV of new customers from Sage 100 and imports it into Marketo to launch welcome campaigns, then manually updates company information as deals close. With Sage 100 and Marketo connected, new customers appear in Marketo within 30 minutes of their first sales order, campaigns can start automatically, and the company profile stays current as invoices post. The sales team can now see which leads were originally sourced by which campaign, tying marketing credit to orders in the ERP.
What you can do
- Sync customer names, contacts, email, and phone numbers from Sage 100 into Marketo Leads every 15 to 30 minutes.
- Populate Marketo Companies with Sage 100 customer master data including billing address and customer number.
- Map Sage 100 sales orders into Marketo Opportunities to track pipeline against actual ERP orders.
- Authenticate Sage 100 via the local BOI Windows agent and Marketo via OAuth2 Client Credentials with automatic token refresh.
- Poll Sage 100 using DateLastUpdated to capture changes and handle COM lock conflicts with exponential backoff and audit replay.
Questions
- How does ml-connector authenticate to Sage 100 if it has no cloud API?
- ml-connector runs on the customer's network and communicates with the local Sage 100 BOI agent using a Windows service account plus an API key or mTLS certificate. The agent wraps the Sage 100 COM layer and exposes it to ml-connector over a secured connection on the customer's LAN. The customer must enable Web Services in Sage 100 admin and provide the agent credentials.
- What happens if a customer record fails to sync into Marketo?
- ml-connector logs the failed record with the Marketo error (rate limit, validation, or timeout) and stores it in the audit trail for manual replay. If a Lead or Company upsert returns a 429 (too many requests), ml-connector backs off, sleeps, and retries the batch. Critical fields like email are deduplication keys, so Marketo rejects duplicate Leads automatically; the connector detects this and moves on.
- Can data flow from Marketo back into Sage 100?
- Marketo is primarily a read platform for deal tracking in this integration; Opportunities and Custom Objects may be read-only if a CRM sync (SFDC or Microsoft Dynamics) is enabled on the Marketo instance. The main flow is inbound from Sage 100 to keep the marketing database fresh. If two-way sync is needed later, a separate flow can be designed to write updates back to Sage 100 customer records.
Related integrations
More Sage 100 integrations
Other systems that connect to Marketo
Connect Sage 100 and Marketo
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started