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:
- Log into your Airbyte Cloud account.
- In the left navigation bar, click Sources. In the top-right corner, click +new source.
- On the Set up the source page, enter the name for the Marketo connector and select Marketo from the Source type dropdown.
- Enter the start date, domain URL, client ID and secret
- Submit the form
For Airbyte Open Source:
- Navigate to the Airbyte Open Source dashboard
- Set the name for your source
- Enter the start date
- Enter the domain URL
- Enter client ID and secret
- 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:
| Stream | Sync mode | Description |
|---|---|---|
| Activities_X | Incremental | Lead 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 types | Full Refresh | Metadata about activity types. |
| Campaigns | Incremental | Marketo campaigns. Uses createdAt as the cursor field. |
| Emails | Incremental | Marketo email assets, including subject, sender info, status, and template. Uses updatedAt as the cursor field. |
| Leads | Incremental | Marketo leads. The schema is dynamically generated from the leads/describe.json API, so custom fields are automatically discovered and included. |
| Lists | Incremental | Marketo static lists. Uses createdAt as the cursor field. |
| Programs | Incremental | Marketo programs, including user-defined tags and period costs. Uses updatedAt as the cursor field. |
| Program Tokens | Full Refresh | Token definitions (My Tokens) for each program. This is a child stream of Programs, fetching tokens for every program. |
| Segmentations | Full Refresh | Marketo 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 Type | Airbyte Type | Notes |
|---|---|---|
array | array | primitive arrays are converted into arrays of the types described in this table |
int, long | number | |
object | object | |
string | string |
Reference
Config fields reference
Changelog
Expand to review
| Version | Date | Pull Request | Subject |
|---|---|---|---|
| 1.6.0 | 2026-03-19 | 74826 | Add Emails and Program Tokens streams |
| 1.5.0 | 2026-03-18 | 74136 | Add dynamic schema discovery for custom fields on Leads stream; add tags and costs to Programs schema; add workspace to Segmentations schema |
| 1.4.40 | 2026-02-25 | 73309 | Fix KeyError and TypeError when Marketo API responses lack 'result' key in export status and create endpoints |
| 1.4.39 | 2026-01-26 | 71849 | Add error handling for type conversion in format_value |
| 1.4.38 | 2025-10-21 | 68475 | Update dependencies |
| 1.4.37 | 2025-10-14 | 67858 | Update dependencies |
| 1.4.36 | 2025-10-07 | 67394 | Update dependencies |
| 1.4.35 | 2025-09-30 | 66352 | Update dependencies |
| 1.4.34 | 2025-09-09 | 65855 | Update dependencies |
| 1.4.33 | 2025-08-23 | 65168 | Update dependencies |
| 1.4.32 | 2025-08-16 | 64988 | Update dependencies |
| 1.4.31 | 2025-08-09 | 64729 | Update dependencies |
| 1.4.30 | 2025-08-02 | 64262 | Update dependencies |
| 1.4.29 | 2025-07-26 | 63912 | Update dependencies |
| 1.4.28 | 2025-07-12 | 63152 | Update dependencies |
| 1.4.27 | 2025-07-05 | 61142 | Update dependencies |
| 1.4.26 | 2025-05-28 | 60823 | Fix Attribute Errors on Leads stream |
| 1.4.25 | 2025-05-24 | 60693 | Update dependencies |
| 1.4.24 | 2025-05-10 | 59770 | Update dependencies |
| 1.4.23 | 2025-05-03 | 58788 | Update dependencies |
| 1.4.22 | 2025-04-12 | 57702 | Update dependencies |
| 1.4.21 | 2025-04-05 | 57071 | Update dependencies |
| 1.4.20 | 2025-03-29 | 56674 | Update dependencies |
| 1.4.19 | 2025-03-22 | 56016 | Update dependencies |
| 1.4.18 | 2025-03-08 | 55426 | Update dependencies |
| 1.4.17 | 2025-03-01 | 54761 | Update dependencies |
| 1.4.16 | 2025-02-22 | 54321 | Update dependencies |
| 1.4.15 | 2025-02-15 | 53790 | Update dependencies |
| 1.4.14 | 2025-02-01 | 52711 | Update dependencies |
| 1.4.13 | 2025-01-25 | 52278 | Update dependencies |
| 1.4.12 | 2025-01-11 | 51165 | Update dependencies |
| 1.4.11 | 2025-01-04 | 50890 | Update dependencies |
| 1.4.10 | 2024-12-28 | 50655 | Update dependencies |
| 1.4.9 | 2024-12-21 | 43736 | Starting 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.8 | 2024-12-20 | 49972 | Pin CDK due to breaking changes in newer versions. |
| 1.4.7 | 2024-07-06 | 40629 | Update dependencies |
| 1.4.6 | 2024-06-26 | 40530 | Update dependencies |
| 1.4.5 | 2024-06-25 | 40318 | Update dependencies |
| 1.4.4 | 2024-06-23 | 40001 | Update dependencies |
1.4.3 | 2024-06-18 | 39549 | Refactor: use client_side_incremental feature |
1.4.2 | 2024-06-06 | 39297 | [autopull] Upgrade base image to v1.2.2 |
1.4.1 | 2024-05-23 | 38631 | Update deprecated authenticator package |
1.4.0 | 2024-04-15 | 36854 | Migrate to low-code |
1.3.2 | 2024-04-19 | 36650 | Updating to 0.80.0 CDK |
1.3.1 | 2024-04-12 | 36650 | schema descriptions |
1.3.0 | 2024-03-19 | 36267 | Pin airbyte-cdk version to ^0 |
1.2.6 | 2024-02-09 | 35078 | Manage dependencies with Poetry. |
1.2.5 | 2024-01-15 | 34246 | prepare for airbyte-lib |
1.2.4 | 2024-01-08 | 33999 | Fix for Export daily quota exceeded |
1.2.3 | 2023-08-02 | 28999 | Fix for _csv.Error: line contains NUL |
1.2.2 | 2023-10-19 | 31599 | Base image migration: remove Dockerfile and use the python-connector-base image |
1.2.1 | 2023-09-18 | 30533 | Fix json_schema for stream Leads |
1.2.0 | 2023-06-26 | 27726 | License Update: Elv2 |
1.1.0 | 2023-04-18 | 23956 | Add Segmentations Stream |
1.0.4 | 2023-04-25 | 25481 | Minor fix for bug caused by <= producing additional API call when there is a single date slice |
1.0.3 | 2023-02-13 | 22938 | Specified date formatting in specification |
1.0.2 | 2023-02-01 | 22203 | Handle Null cursor values |
1.0.1 | 2023-01-31 | 22015 | Set AvailabilityStrategy for streams explicitly to None |
1.0.0 | 2023-01-25 | 21790 | Fix activities_* stream schemas |
0.1.12 | 2023-01-19 | 20973 | Fix encoding error (note: this change is not in version 1.0.0, but is in later versions |
0.1.11 | 2022-09-30 | 17445 | Do not use temporary files for memory optimization |
0.1.10 | 2022-09-30 | 17445 | Optimize memory consumption |
0.1.9 | 2022-09-28 | 17304 | Migrate to per-stream sate. |
0.1.7 | 2022-08-23 | 15817 | Improved unit test coverage |
0.1.6 | 2022-08-21 | 15824 | Fix semi incremental streams: do not ignore start date, make one api call instead of multiple |
0.1.5 | 2022-08-16 | 15683 | Retry failed creation of a job instead of skipping it |
0.1.4 | 2022-06-20 | 13930 | Process failing creation of export jobs |
0.1.3 | 2021-12-10 | 8429 | Updated titles and descriptions |
0.1.2 | 2021-12-03 | 8483 | Improve field conversion to conform schema |
0.1.1 | 2021-11-29 | 0000 | Fix timestamp value format issue |
0.1.0 | 2021-09-06 | 5863 | Release Marketo CDK Connector |