Odoo and Marketo integration
Odoo runs your order-to-cash and finance operations. Marketo automates your B2B marketing campaigns and lead scoring. Connecting the two keeps your prospect database and engagement history in sync with your operational data. New customers created in Odoo flow into Marketo as leads and companies, campaign engagement is tracked and scored in Marketo, and qualified opportunities sync back into Odoo as sales records.
What moves between them
Odoo res.partner records flow into Marketo as leads and companies, with product data created as Marketo custom objects. Opportunity records created in Marketo for qualified prospects sync back into Odoo as sales orders or opportunities, enabling your sales team to work in Odoo while marketing fills the pipeline in Marketo. Activity and engagement records from Marketo (email opens, clicks, form submissions) are polled and imported into Odoo as activity logs tied to each partner record for pipeline visibility and campaign reporting.
How ml-connector handles it
ml-connector stores the Odoo API key and Marketo OAuth2 credentials encrypted and exchanges the Marketo token on each request using the stored client secret. Because Marketo does not support inbound webhooks, ml-connector polls both systems on a schedule aligned with your campaign calendar, using write_date filters in Odoo and updatedAt filters in Marketo to retrieve only records changed since the last sync run. Batch sizes are capped at 300 records per Marketo request to respect API limits, and failed syncs are retried with exponential backoff. If Marketo has Salesforce or Dynamics sync enabled, Opportunities and Companies become read-only and ml-connector will skip writes to those entities, but leads and custom objects continue to sync. Every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized B2B SaaS company uses Odoo for order management and finance, and Marketo for lead nurturing and campaign automation across multiple industries. Before the integration, the marketing team manually exported Marketo engagement reports and re-entered qualified leads into Odoo by hand, and product teams had no visibility into which prospects engaged with content or how many touches each opportunity required. With Odoo and Marketo connected, new Odoo customers automatically appear in Marketo as leads for nurture campaigns, email engagement and form submissions flow back into Odoo as activity records tied to each customer, and marketing qualified leads sync into Odoo as opportunities ready for the sales team. The sales team now works in Odoo with a full engagement history visible, and marketing has automation rules based on Odoo product and industry fields without manual re-keying.
What you can do
- Sync Odoo partners and contacts into Marketo as leads and companies with all core fields mapped.
- Map Odoo product catalogs into Marketo custom objects for campaign targeting and segmentation.
- Poll Marketo for email engagement, form submissions, and lead scoring, then import those activities into Odoo as activity records.
- Sync qualified Marketo opportunities back into Odoo as sales orders or opportunity records for sales team follow-up.
- Handle OAuth2 token refresh, API key authentication, batch limits, and read-only constraints if Salesforce or Dynamics sync is enabled on Marketo.
Questions
- Which direction does data move between Odoo and Marketo?
- Primarily Odoo to Marketo: partners, contacts, and products flow from Odoo into Marketo as leads, companies, and custom objects. Marketing engagement and lead scores flow back from Marketo into Odoo as activity records so sales has visibility into prospect engagement. Qualified opportunities created in Marketo can also sync back into Odoo as sales records if that instance does not have Salesforce or Dynamics sync enabled.
- Does the integration work if Marketo is already syncing with Salesforce or Dynamics?
- Yes, but with limits. If Marketo is already synced to Salesforce or Dynamics, Opportunities and Companies in Marketo become read-only to prevent conflicts with the other integration. ml-connector will continue to sync leads and custom objects into Marketo, and will not attempt to write to read-only entities. Check with your Marketo admin to confirm which entities are writable before enabling the integration.
- How does the integration handle Marketo's lack of inbound webhooks?
- Marketo does not push change events to external systems, so ml-connector polls both Odoo and Marketo on a schedule you define, typically aligned with your campaign cycles (daily, hourly, or after each campaign send). Polling uses write_date filters in Odoo and updatedAt filters in Marketo to fetch only changed records since the last sync run, and batch sizes are capped at 300 records per Marketo request to respect API rate limits.
Related integrations
More Odoo integrations
Other systems that connect to Marketo
Connect Odoo and Marketo
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started