ml-connector
Oracle NetSuiteMarketo

Oracle NetSuite and Marketo integration

Oracle NetSuite runs order-to-cash and procure-to-pay for your operations. Marketo drives demand generation and lead nurturing for your sales team. Connecting the two keeps your customer and vendor master data aligned with marketing personas, and flows sales opportunities from Marketo back into NetSuite so your finance team has visibility into deals in progress. ml-connector handles the different sync patterns on each side and stays within Marketo's API rate limits.

How Oracle NetSuite works

Oracle NetSuite exposes customers, vendors, invoices, purchase orders, accounts, departments, locations, and employees through SuiteTalk REST Web Services and SuiteQL queries, authenticated with OAuth2 M2M credentials (certificate-based recommended). It supports Event Subscriptions that push record changes via webhooks to external systems, or polling via SuiteQL for bulk and historical reads. OAuth tokens are valid for 60 minutes with no refresh token in M2M flow, and scopes are governed by the integration role assigned in NetSuite, not named OAuth scopes. NetSuite Event Subscriptions do not include HMAC signatures; IP allowlist or shared secret in URL provide webhook security.

How Marketo works

Marketo exposes leads, companies, opportunities, sales persons, activities, custom objects, and campaigns through REST API authenticated with OAuth2 Client Credentials, where the customer provides Munchkin ID, Client ID, and Client Secret to obtain a Bearer token with up to 3600 second expiry. Marketo supports polling only via GET endpoints with filterType parameters and paging tokens; it does not accept inbound event subscriptions or webhooks. Batch limits are 300 records per request for leads and opportunities. Opportunities, sales persons, and companies are read-only if Salesforce or Microsoft Dynamics sync is enabled. The Bulk Activity Extract API window is limited to 31 days.

What moves between them

Customer records from Oracle NetSuite flow into Marketo as leads and companies, synced on a daily or weekly schedule. Vendor records sync as additional companies for supplier visibility. Opportunities and sales activities from Marketo are read back into NetSuite on a schedule, so finance and operations teams see the pipeline status. Marketo Custom Objects can map to NetSuite custom fields if configured per instance. All syncs are unidirectional per direction; NetSuite is the customer and vendor master, and Marketo is the marketing and opportunity source of truth.

How ml-connector handles it

ml-connector stores OAuth credentials encrypted for both systems. For Oracle NetSuite it uses M2M OAuth2 to authenticate, handles the 60-minute token expiry by requesting a fresh token before each sync cycle, and uses Event Subscriptions where available to detect changes, falling back to SuiteQL polling for historical and bulk reads. For Marketo it exchanges the Munchkin ID, Client ID, and Client Secret for a Bearer token and polls the leads, companies, opportunities, and activities endpoints on the configured schedule. Because Marketo has batch limits and no inbound webhooks, ml-connector paces requests to stay within rate limits, uses paging tokens to stream incremental activity changes, and respects the 31-day window on bulk activity exports. Customer and vendor fields are mapped to Marketo lead and company fields, and opportunities from Marketo are mapped back to NetSuite custom objects or activity records for visibility. Every sync records success or failure in the audit trail, and failed batches can be replayed.

A real-world example

A mid-market B2B software company runs Oracle NetSuite for order management and financial consolidation across multiple divisions, and uses Marketo for lead generation and nurturing campaigns. Before the integration, the sales team maintained a separate spreadsheet of qualified leads pulled from Marketo, manually entered them into NetSuite, and lost visibility when pipeline opportunities moved to close. With Oracle NetSuite and Marketo connected, new customer records created in NetSuite sync to Marketo as leads within hours, existing customers in NetSuite populate Marketo with accurate company data, and opportunities won in Marketo flow back to NetSuite so the finance team sees real-time deal status without re-entry. Month-end forecasting becomes accurate because NetSuite and Marketo agree on the pipeline.

What you can do

  • Sync customer and vendor records from Oracle NetSuite into Marketo as leads and companies on a daily or weekly cadence.
  • Read opportunities and sales activities from Marketo back into Oracle NetSuite for pipeline visibility and accurate forecasting.
  • Authenticate both systems with OAuth2 and handle token refresh automatically before expiry.
  • Map NetSuite custom fields to Marketo custom objects and vice versa, with configurable field-by-field rules per instance.
  • Poll Marketo within its rate and batch limits, manage paging tokens for incremental activity sync, and respect the 31-day activity export window.

Questions

Which direction do customer and opportunity records flow?
Customer and vendor records flow from Oracle NetSuite into Marketo as leads and companies so the marketing team has accurate contact data. Opportunities and sales activities flow from Marketo back into Oracle NetSuite so finance and operations see the sales pipeline. Both sync directions are polled on a schedule you configure.
How does ml-connector handle Marketo's polling-only constraint and rate limits?
Marketo does not support inbound webhooks, only outbound polling from external systems. ml-connector polls the Marketo leads, opportunities, and activities endpoints on the configured schedule, respects the 300-record batch limit per request, uses paging tokens to stream incremental activity changes, and stays within Marketo's API rate limits by pacing requests across the sync window.
What happens when Oracle NetSuite tokens expire?
Oracle NetSuite OAuth2 M2M tokens expire after 60 minutes with no refresh token available. ml-connector requests a fresh token before each sync cycle, so token expiry is transparent and does not interrupt syncs. If a token request fails, the sync is retried on the next scheduled cycle.

Related integrations

Connect Oracle NetSuite and Marketo

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

Get started