Skip to main content

Marketo

This page contains the setup guide and reference information for the Marketo source connector.

Prerequisites

  • (Optional) Allowlist Airbyte's IP address if needed
  • An API-only Marketo User Role
  • An Airbyte Marketo API-only user
  • A Marketo API Custom Service
  • Marketo Client ID and Client Secret
  • Marketo Base URL

Setup guide

Step 1: Set up Marketo

Step 1.1: (Optional) Allowlist Airbyte's IP address

If you don't have IP Restriction enabled in Marketo, skip this step.

If you have IP Restriction enabled in Marketo, you need to allowlist the IP address of the machine running your Airbyte instance. To obtain your IP address, run curl ifconfig.io from the node running Airbyte. Copy the IP address returned and keep it on hand.

Once you have the IP address, allowlist it by following the Marketo documentation for allowlisting IP addresses for API-based access.

Step 1.2: Create an API-only Marketo User Role

Follow the Marketo documentation for creating an API-only Marketo User Role.

Step 1.3: Create an Airbyte Marketo API-only user

Follow the Marketo documentation to create an API-only user.

Step 1.4: Create a Marketo API custom service

Follow the Marketo documentation for creating a custom service for use with a REST API.

Make sure to follow the "Credentials for API Access" section in the Marketo docs to generate a Client ID and Client Secret. Once generated, copy those credentials and keep them handy for use in the Airbyte UI later.

Step 1.5: Obtain your Endpoint and Identity URLs provided by Marketo

Follow the Marketo documentation for obtaining your base URL. Specifically, copy your Endpoint without "/rest" and keep them handy for use in the Airbyte UI.

After you have your Endpoint URL, Client ID, and Client Secret, you can configure the Marketo connector in Airbyte.

Step 2: Set up the Marketo connector in Airbyte

For Airbyte Cloud:

  1. Log into your Airbyte Cloud account.
  2. In the left navigation bar, click Sources. In the top-right corner, click +new source.
  3. On the Set up the source page, enter the name for the Marketo connector and select Marketo from the Source type dropdown.
  4. Enter the start date, domain URL, client ID and secret
  5. Submit the form

For Airbyte Open Source:

  1. Navigate to the Airbyte Open Source dashboard
  2. Set the name for your source
  3. Enter the start date
  4. Enter the domain URL
  5. Enter client ID and secret
  6. Click Set up source

Supported sync modes

The Marketo source connector supports the following sync modes:

  • Full Refresh | Overwrite
  • Full Refresh | Append
  • Incremental | Append
  • Incremental | Deduped

Supported streams

This connector syncs the following streams from Marketo:

StreamSync modeDescription
Activities_XIncrementalLead activities of type X. For example, activities_send_email contains lead activities related to the send_email activity type. One stream is created per activity type. See the Marketo Activities API docs for details.
Activity typesFull RefreshMetadata about activity types.
CampaignsIncrementalMarketo campaigns. Uses createdAt as the cursor field.
EmailsIncrementalMarketo email assets, including subject, sender info, status, and template. Uses updatedAt as the cursor field.
LeadsIncrementalMarketo leads. The schema is dynamically generated from the leads/describe.json API, so custom fields are automatically discovered and included.
ListsIncrementalMarketo static lists. Uses createdAt as the cursor field.
ProgramsIncrementalMarketo programs, including user-defined tags and period costs. Uses updatedAt as the cursor field.
Program TokensFull RefreshToken definitions (My Tokens) for each program. This is a child stream of Programs, fetching tokens for every program.
SegmentationsFull RefreshMarketo segmentations.

Limitations and troubleshooting

Leads stream: field availability and schema behavior

The Leads stream schema includes all fields from the static schema (standard Marketo fields) plus any custom fields discovered through the Marketo leads/describe.json API. Not all standard fields defined in the static schema exist in every Marketo instance. Unavailable fields still appear in the schema for consistency but always contain null values in synced records, because only fields confirmed by the leads/describe.json endpoint are requested in bulk export API calls. If you select fields that are not available in your Marketo instance's describe endpoint, those fields are silently excluded from the export request to prevent Marketo API error 1003 ("Invalid fields").

Program Tokens stream performance

The Program Tokens stream makes one API call per program in your Marketo instance. If you have a large number of programs, this stream may take longer to sync and consume more of your daily API quota.

Performance considerations

By default, Marketo caps all accounts to 50,000 API calls per day. The Marketo API also enforces a rate limit of 100 calls per 20 seconds and a maximum of 10 concurrent API calls.

By default, this connector caps itself to 40,000 API calls per day. You can customize the maximum number of API calls this source connector makes per day to Marketo, which is helpful if other applications also use the Marketo API. If this source connector reaches the maximum number you configured, it does not replicate any data until the next day.

If the 50,000 limit is too stringent, contact Marketo support for a quota increase.

Data type map

Integration TypeAirbyte TypeNotes
arrayarrayprimitive arrays are converted into arrays of the types described in this table
int, longnumber
objectobject
stringstring

Reference

Config fields reference

Field
Type
Property name
string
client_id
string
client_secret
string
domain_url
string
start_date

Changelog

Expand to review
VersionDatePull RequestSubject
1.6.02026-03-1974826Add Emails and Program Tokens streams
1.5.02026-03-1874136Add dynamic schema discovery for custom fields on Leads stream; add tags and costs to Programs schema; add workspace to Segmentations schema
1.4.402026-02-2573309Fix KeyError and TypeError when Marketo API responses lack 'result' key in export status and create endpoints
1.4.392026-01-2671849Add error handling for type conversion in format_value
1.4.382025-10-2168475Update dependencies
1.4.372025-10-1467858Update dependencies
1.4.362025-10-0767394Update dependencies
1.4.352025-09-3066352Update dependencies
1.4.342025-09-0965855Update dependencies
1.4.332025-08-2365168Update dependencies
1.4.322025-08-1664988Update dependencies
1.4.312025-08-0964729Update dependencies
1.4.302025-08-0264262Update dependencies
1.4.292025-07-2663912Update dependencies
1.4.282025-07-1263152Update dependencies
1.4.272025-07-0561142Update dependencies
1.4.262025-05-2860823Fix Attribute Errors on Leads stream
1.4.252025-05-2460693Update dependencies
1.4.242025-05-1059770Update dependencies
1.4.232025-05-0358788Update dependencies
1.4.222025-04-1257702Update dependencies
1.4.212025-04-0557071Update dependencies
1.4.202025-03-2956674Update dependencies
1.4.192025-03-2256016Update dependencies
1.4.182025-03-0855426Update dependencies
1.4.172025-03-0154761Update dependencies
1.4.162025-02-2254321Update dependencies
1.4.152025-02-1553790Update dependencies
1.4.142025-02-0152711Update dependencies
1.4.132025-01-2552278Update dependencies
1.4.122025-01-1151165Update dependencies
1.4.112025-01-0450890Update dependencies
1.4.102024-12-2850655Update dependencies
1.4.92024-12-2143736Starting with this version, the Docker image is now rootless. Please note that this and future versions will not be compatible with Airbyte versions earlier than 0.64
1.4.82024-12-2049972Pin CDK due to breaking changes in newer versions.
1.4.72024-07-0640629Update dependencies
1.4.62024-06-2640530Update dependencies
1.4.52024-06-2540318Update dependencies
1.4.42024-06-2340001Update dependencies
1.4.32024-06-1839549Refactor: use client_side_incremental feature
1.4.22024-06-0639297[autopull] Upgrade base image to v1.2.2
1.4.12024-05-2338631Update deprecated authenticator package
1.4.02024-04-1536854Migrate to low-code
1.3.22024-04-1936650Updating to 0.80.0 CDK
1.3.12024-04-1236650schema descriptions
1.3.02024-03-1936267Pin airbyte-cdk version to ^0
1.2.62024-02-0935078Manage dependencies with Poetry.
1.2.52024-01-1534246prepare for airbyte-lib
1.2.42024-01-0833999Fix for Export daily quota exceeded
1.2.32023-08-0228999Fix for _csv.Error: line contains NUL
1.2.22023-10-1931599Base image migration: remove Dockerfile and use the python-connector-base image
1.2.12023-09-1830533Fix json_schema for stream Leads
1.2.02023-06-2627726License Update: Elv2
1.1.02023-04-1823956Add Segmentations Stream
1.0.42023-04-2525481Minor fix for bug caused by <= producing additional API call when there is a single date slice
1.0.32023-02-1322938Specified date formatting in specification
1.0.22023-02-0122203Handle Null cursor values
1.0.12023-01-3122015Set AvailabilityStrategy for streams explicitly to None
1.0.02023-01-2521790Fix activities_* stream schemas
0.1.122023-01-1920973Fix encoding error (note: this change is not in version 1.0.0, but is in later versions
0.1.112022-09-3017445Do not use temporary files for memory optimization
0.1.102022-09-3017445Optimize memory consumption
0.1.92022-09-2817304Migrate to per-stream sate.
0.1.72022-08-2315817Improved unit test coverage
0.1.62022-08-2115824Fix semi incremental streams: do not ignore start date, make one api call instead of multiple
0.1.52022-08-1615683Retry failed creation of a job instead of skipping it
0.1.42022-06-2013930Process failing creation of export jobs
0.1.32021-12-108429Updated titles and descriptions
0.1.22021-12-038483Improve field conversion to conform schema
0.1.12021-11-290000Fix timestamp value format issue
0.1.02021-09-065863Release Marketo CDK Connector