Xero and Marketo integration
Xero manages your accounting and customers. Marketo manages your marketing pipeline and opportunities. Connecting the two keeps your lead records and deal pipeline aligned with your actual customer base. New customers in Xero flow into Marketo as leads, and opportunities in Xero map to deal records in Marketo so your finance and marketing teams work from the same customer data. ml-connector handles the different authentication models and keeps both systems in sync on a schedule you control.
What moves between them
Customer records flow from Xero into Marketo. Xero Contacts sync to Marketo Leads, mapping name, email, and phone from the contact record. Opportunities and sales pipeline data flow from Xero manual journals or custom tracking into Marketo Opportunities, keeping deal records aligned with financial records in Xero. The sync runs on a polling schedule that can be tied to your sales cycle, with incremental updates via Marketo's updatedAt and activity change APIs so you retrieve only new or changed records.
How ml-connector handles it
ml-connector stores both OAuth2 credential sets encrypted and manages token refresh on each side: on Xero, refreshing the 30-minute access token before it expires, and on Marketo, exchanging Client Credentials for a new bearer token every 3600 seconds. On the Xero side, ml-connector accepts the tenant ID and polls Xero Contacts, mapping them to Marketo Leads by email and name. Custom fields on Xero contacts map to Marketo lead attributes. Because Marketo has no inbound webhook API, ml-connector polls the Lead Changes endpoint with paging tokens to catch updates without redundant full syncs, respecting Marketo's 300-record batch limit per request. Xero rate limits at 60 calls per minute per tenant, so ml-connector queues requests and backs off on 429 responses. All synced records carry a full audit trail for replay and troubleshooting.
A real-world example
A mid-market B2B SaaS company runs Xero for accounting and customer records, and Marketo for sales and marketing automation. Before integration, the sales team manually exported customer lists from Xero into a spreadsheet and uploaded them to Marketo as leads every week, causing duplicate records and stale data in the pipeline. With Xero and Marketo connected, new customers in Xero automatically flow to Marketo as leads, eliminating manual exports and keeping the marketing team working with current customer data. Sales can track which customers have invoices and payment history in Xero without switching systems, and Xero's accounting team sees which leads turned into paying customers in Marketo.
What you can do
- Sync Xero Contacts into Marketo as Leads, with name, email, and phone mapped across platforms.
- Keep Marketo Opportunities aligned with Xero invoice and payment records so deal tracking matches financial reality.
- Handle Xero's 30-minute OAuth2 access token refresh and Marketo's 3600-second Client Credentials token exchange automatically.
- Poll Marketo's incremental Lead Changes API with paging tokens to catch updates efficiently without redundant full syncs.
- Respect Xero's 60-per-minute rate limit and Marketo's 300-record batch limit, with automatic backoff and retries on rate limit responses.
Questions
- Which direction does data move between Xero and Marketo?
- The main flow is Xero into Marketo. Customer contacts from Xero sync into Marketo as leads, and opportunities or sales pipeline data from Xero map to Marketo opportunities, keeping deal tracking aligned with financial records. Marketo Leads and Opportunities do not flow back into Xero.
- Why does ml-connector poll Marketo instead of using webhooks?
- Marketo does not support inbound webhooks from external systems. Webhooks in Marketo are outbound only, where Marketo pushes events to an external endpoint. ml-connector uses Marketo's REST API with updatedAt filtering and the incremental Lead Changes endpoint to efficiently retrieve only new and changed records on a schedule.
- How does ml-connector handle OAuth2 token refresh for both systems?
- Xero access tokens expire every 30 minutes; ml-connector refreshes them before expiry using the stored refresh token. Marketo access tokens expire after 3600 seconds; ml-connector exchanges Client Credentials for a new token when needed. Both credential sets are stored encrypted, and token refresh happens automatically on each API call.
Related integrations
More Xero integrations
Other systems that connect to Marketo
Connect Xero and Marketo
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started