ml-connector
QuickBooks OnlineMarketo

QuickBooks Online and Marketo integration

QuickBooks Online runs your books; Marketo runs your marketing pipeline. Syncing the two keeps your sales team's lead database current with real customer data from accounting, and feeds Marketo with company information from active QuickBooks customers. New customers and vendor companies added to QuickBooks flow into Marketo as new leads and company records. Changes to customer details in QuickBooks update matching Marketo company profiles, so your marketing team always has fresh data.

How QuickBooks Online works

QuickBooks Online exposes customers, vendors, accounts, journal entries, bills, invoices, and transactions through the QuickBooks Accounting API (v3) with a base URL per company realm ID. The platform authenticates with OAuth 2.0 authorization code flow (access tokens valid 1 hour, refresh tokens rotating every 24-26 hours with up to 5 years lifetime). QuickBooks supports both webhook push for Create/Update/Delete/Void events and a CDC (Change Data Capture) polling endpoint with 30-day history. Webhook payloads contain only entity IDs and must be followed by a GET to fetch the full record. Customers, vendors, and accounts can only be marked inactive, not hard-deleted.

How Marketo works

Marketo exposes leads, companies, opportunities, custom objects, activities, and sales persons through a REST API scoped to each instance by Munchkin ID. Authentication uses OAuth2 client credentials (bearer tokens with 1-hour expiry). Marketo supports polling only through the Leads API with updatedAt filters, the Bulk Activity Extract API (max 31-day window), or the Activities API with paging tokens. Webhooks in Marketo are outbound only - Marketo cannot receive inbound events, so all integrations must pull. Opportunities and companies are read-only if SFDC or Dynamics sync is enabled. Batch limits are 300 records per request.

What moves between them

Customer and vendor records from QuickBooks Online flow into Marketo. Active QuickBooks customers map to Marketo leads and companies; vendor companies map to Marketo companies. The sync runs on a schedule you define, typically daily or after key accounting periods. QuickBooks customer and vendor attributes (name, email, billing address, phone, custom fields) map to Marketo lead and company fields. Marketo is write-free in this integration - ml-connector never writes back to QuickBooks.

How ml-connector handles it

ml-connector stores both OAuth credential sets encrypted (QuickBooks realm ID and refresh token, Marketo Munchkin ID and client secret). It refreshes QuickBooks tokens when the 1-hour window closes and Marketo tokens on the same schedule, handling 401 responses by re-authenticating. Since Marketo supports polling only, ml-connector pulls QuickBooks customer and vendor records on your defined schedule and compares against the last sync state to detect new and changed records. For each new or changed QuickBooks customer, it upserts a matching Marketo lead and company record by name and email, mapping QuickBooks custom fields to Marketo lead attributes. QBO's webhook payloads omit full record details, so ml-connector polls the CDC endpoint for reliable field-level updates rather than relying on best-effort webhooks. Marketo batch limits cap each push to 300 leads or companies per request, so large customer bases are batched automatically.

A real-world example

A B2B software company uses QuickBooks Online for accounting and Marketo for lead nurturing and sales pipeline. Before the integration, the sales team manually added new customers to Marketo after contract signing, often weeks after the customer was created in accounting, leaving marketing out of the loop on pipeline velocity. With QuickBooks Online and Marketo connected, every new customer created in QuickBooks automatically flows into Marketo as a lead and company record within hours. The marketing team now runs post-sale engagement campaigns targeting new customers by industry and spend level from QuickBooks customer data, and sales can see in Marketo which accounts are active in marketing campaigns. Month-end reporting shows which marketing-touched segments actually converted to paying customers.

What you can do

  • Sync active customers and vendor companies from QuickBooks Online into Marketo as leads and companies on a schedule.
  • Map QuickBooks customer attributes (name, email, billing address, phone) to Marketo lead and company fields.
  • Refresh OAuth2 tokens automatically for both QuickBooks Online and Marketo to keep the sync reliable.
  • Detect and sync new and changed customer records from QuickBooks while respecting Marketo batch limits of 300 records per request.
  • Pull from QuickBooks CDC endpoint and customer API to ensure full record details are captured without relying on best-effort webhooks.

Questions

Which direction does data flow between QuickBooks Online and Marketo?
Data flows one direction: from QuickBooks Online into Marketo. Customers and vendors from QuickBooks become leads and companies in Marketo. Marketo remains read-only for this integration - ml-connector never writes changes back to QuickBooks. This ensures your accounting records stay authoritative and marketing changes do not alter your books.
How does ml-connector handle QuickBooks webhook limitations?
QuickBooks webhook payloads contain only entity IDs and operation type, so ml-connector does not rely on them for field-level detail. Instead, it polls the QuickBooks CDC endpoint and customer API to fetch full records with all fields. This approach is more reliable than waiting for best-effort webhooks that may arrive out-of-order or be duplicated.
What happens when OAuth tokens expire for either system?
ml-connector stores both credential sets encrypted and refreshes tokens automatically. QuickBooks access tokens expire in 1 hour, while refresh tokens rotate every 24-26 hours - ml-connector detects 401 responses and re-authenticates seamlessly. Marketo bearer tokens expire in 1 hour and are refreshed on the same schedule, so the sync never stalls due to token age.

Related integrations

Connect QuickBooks Online and Marketo

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

Get started