This integration was created by Stitch for Singer, an open-source, composable ETL platform. Check out & contribute to the repo on GitHub.
Marketo is currently in Open Beta. The info in this article is subject to change.
Release Status | Open Beta | Availability | Premium |
Status Page | Marketo Status Page | Default Historical Sync | 1 year |
Whitelist Tables/Columns | Unsupported/Unsupported | Default Replication Frequency | 30 minutes |
Full Table Endpoints | 1 | Incremental Endpoints | 3 |
Destination Incompatibilities | None |
Connecting Marketo
Connecting your Marketo data to Stitch is a nine-step process:
- Create an API-Only user role in Marketo
*
- Create a Stitch Marketo API user
- Create an API custom service in Marketo
- Whitelist Stitch’s IP addresses
*
- Retrieve your Marketo REST API base URLs
- Add Marketo as a Stitch data source
- Define the Historical Sync
- Define the Replication Frequency
- Select tables to sync
*
Completing these steps may not be necessary depending on how your Marketo account is configured. Refer to the sections below for more detail.
Creating an API-Only User Role in Marketo
Completing this step is required only if you DON’T have an API-Only user role in your Marketo account. Skip to the next section if your account has this role.
- Sign into your Marketo account.
- Click the Admin option.
- Under Admin, open the Security menu.
- Click Users & Roles.
- Click the Roles tab.
- Click New Role.
- In the Create New Role window, do the following:
- Role Name - Enter a name for the role. If it’s specific to Stitch, make the name specific - something like “Stitch API Role.”
- Description - Enter a description.
- Permissions - Click the checkbox next to the Access API option.
- Click Create.
Creating a Stitch Marketo API User
Next, you’ll create an API User for Stitch. Creating a Stitch-specific user will ensure that Stitch is easily distinguishable in any logs or audits.
- Click the Admin option.
- Under Admin, open the Security menu.
- Click Users & Roles.
- In the Users tab, click Invite New User.
- In the INFO section, enter an email address and first and last name.
- Click Next.
- In the PERMISSIONS section, click the checkboxes next to the API User Role you created and the API Only option.
- Click Next.
- In the MESSAGE section, click the Send button to create the user.
Creating an API Custom Service in Marketo
To generate the API credentials you need to connect Stitch to Marketo, you need to create an API Custom Service and associate it with the Stitch API user.
- In AAdmin, open the Integration menu.
- Click LaunchPoint.
- Click New and then New Service.
- In the New Service window, do the following:
- Display Name - Enter “Stitch”.
- Service - Select Custom from the dropdown.
- Description - Enter a description.
- API Only User - Select the Stitch user you created.
- Click Create.
- After the service is created, it’ll display in the Installed Services grid. Click the View Details link to display your API credentials.
- Copy the Client ID and Secret into a text file.
Whitelisting Stitch’s IP Addresses
Completing this step is required only if you have IP Restriction enabled. You can check if this setting is enabled by clicking Admin > Web Services and looking in the IP Restrictions section. If this setting isn’t enabled, skip ahead to the next step.
- In the Integration menu, click Web Services.
- In the IP Restrictions section, click the Edit button.
- In the Allowed Addresses field, paste one of the IP addresses listed below and then click Add.
-
52.23.137.21/32
-
52.204.223.208/32
-
52.204.228.32/32
-
52.204.230.227/32
- Repeat step 4 until all the Stitch IP addresses are added.
- Click the Save button.
Leave the Web Services page open - you’ll need it in the next step.
Retrieving Your Marketo REST API Base URLs
The last thing you need to do is retrieve your Marketo REST API base URLs.
- On the Web Services page, scroll down to the REST API section.
- In this section, find the Endpoint and Identity fields.
- Copy these URLs into the text file where you have your Client ID and Client Secret.
Add Marketo as a Stitch Data Source
- On the Stitch Dashboard page, click the Add an Integration button.
-
Click the Marketo icon.
-
Enter a name for the integration. This is the name that will display on the for the integration; it’ll also be used to create the schema in your data warehouse.
For example, the name “Stitch Marketo” would create a schema called
stitch_marketo
in the data warehouse. This schema is where all the tables for this integration will be stored. - In the Endpoint Base URL field, paste your Marketo REST API Endpoint URL.
- In the Identity Base URL field, paste your Marketo REST API Identity URL.
- In the Client ID field, paste your Marketo API Client ID.
- In the OAuth Client Secret field, paste your Marketo API Client Secret.
Defining the Historical Sync
The Sync Historical Data setting will define the starting date for your Marketo integration. This means that data equal to or newer than this date will be replicated to your data warehouse.
Change this setting if you want to sync data beyond Marketo’s default setting of 1 year. For a detailed look at historical syncs, check out the Syncing Historical SaaS Data article.
Define the Replication Frequency
The Replication Frequency controls how often Stitch will attempt to replicate data from your Marketo integration. By default the frequency is set to 30 minutes, but you can change it to better suit your needs.
Before setting the Replication Frequency, note that:
- The more often Marketo is set to replicate, the higher the number of replicated rows.
-
The number of rows in the source may not equal the number of rows replicated by Stitch. Tables that use Full Table Replication will result in a higher number of replicated rows.
- If you’re using a data warehouses that doesn’t natively support nested structures, you’ll see a higher number of replicated rows due to the de-nesting Stitch performs.
To help prevent overages, we recommend setting the Replication Frequency to something less frequent - like 6 hours instead of 30 minutes. For tips on reducing your row count, check out the Reducing Your Row Count section of our Billing Guide.
After selecting a Replication Frequency, click Save Integration.
Marketo’s Intial Sync
After you finish setting up Marketo, you might see its Sync Status show as Pending on either the Stitch Dashboard or in the Integration Details page.
For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial sync for the integration. This may take some time to complete.
Replicating Marketo Data
By default, all Marketo accounts have a maximum number of 10,000 daily account calls. Stitch’s Marketo integration is designed to use up to 8,000 of these calls per day to allow other applications API access to your Marketo account.
When the 10,000 account call limit has been reached, Stitch will be unable to replicate any Marketo data until more API quota is available. If you find that the 10,000 call limit isn’t enough, please contact Marketo support to inquire about raising the limit.
Marketo Schema
Stitch's Marketo integration includes these tables:
activities
Replication Method: Incremental
Primary Key: id
Contains Nested Structures?:
Yes
activities
table contains info about lead activities.activities & Nested Structures
This table contains nested structures. If you use a data warehouse that doesn't natively support nested structures, some of the attributes listed below may be in a subtable.
These items are marked with a *
activities Attributes
While we try to include everything Marketo has here, this may not be a full list of attributes. Refer to Marketo's documentation for a full list and description of each attribute.
Activity ID (
id
)leadid
attributes
*
activitydate
activitytypeid
primaryattributevalueid
primaryattributevalue
activity_types
Replication Method: Full Table
Primary Key: id
Contains Nested Structures?:
Yes
activity_types
table contains metadata about the activity types - form fill, web page visit, lead creation, and so on - available in Marketo.activity_types & Nested Structures
This table contains nested structures. If you use a data warehouse that doesn't natively support nested structures, some of the attributes listed below may be in a subtable.
These items are marked with a *
Filtering Deleted Leads
When joined with the activities
table, you can use specific activity types to filter out deleted leads, assess list membership, and more. Here are a few noteworthy activity types:
- Add to List and Remove from List - These events can be used to discover lead list membership.
- Delete Lead - A delete lead event indicates leads that have been deleted. We recommend using this activity to filter out deleted leads.
- Add a Lead to a Nurture Program, Change Nurture Track, and Change Nurture Cadence - These events can help you determine what nurture programs a lead is in and lead activity against that program.
activity_types Attributes
While we try to include everything Marketo has here, this may not be a full list of attributes. Refer to Marketo's documentation for a full list and description of each attribute.
Activity Type ID (
id
)attributes
*
name
description
primaryattribute__name
primaryattribute__datatype
leads
Replication Method: Incremental
Primary Key: id
Contains Nested Structures?:
No
leads
table contains contains info about your Marketo leads.leads Attributes
While we try to include everything Marketo has here, this may not be a full list of attributes. Refer to Marketo's documentation for a full list and description of each attribute.
Lead ID (
id
)acquiredby
isexhausted
membershipdate
nurturecadence
progressionstatus
reachedsuccess
reachedsuccessdate
stream
lists
Replication Method: Incremental
Primary Key: id
Contains Nested Structures?:
No
lists
table contains info about the static lists in your Marketo account. Note that due to some of the limitations in Marketo’s API, only static lists are available.lists Attributes
While we try to include everything Marketo has here, this may not be a full list of attributes. Refer to Marketo's documentation for a full list and description of each attribute.
List ID (
id
)name
description
programname
workspacename
createdat
updatedat
Related | Troubleshooting |
Questions? Feedback?
Did this article help? If you have questions or feedback, please reach out to us.