Marketo
Use GrowthLoop audiences and warehouse lead data for Marketo static lists and records.
Connect this destination to export audience membership into a Marketo static list, or to write warehouse rows onto Marketo leads and custom objects, for use in Marketo campaigns.
This destination writes to your Marketo account and is a good fit when you want to:
- Export contacts that already exist as leads in Marketo
- Match those leads on Marketo Lead ID
- Create or update leads or custom objects from a warehouse table
This maps to GrowthLoop Audiences, Journeys, and Syncs:
| Use it for | Audiences | Journeys | Syncs |
|---|---|---|---|
| Adding existing Marketo leads to a static list | ✓ | ✓ | |
| Writing audience membership to a custom object | ✓ | ||
| Creating or updating Marketo leads or custom objects from a warehouse table | ✓ |
Audience exports do not create Marketo leads. Rows whose Lead ID is not already in Marketo fail. To create or update lead records, use a sync.
Prerequisites
Make sure you have:
- A Marketo account with API access.
- A Marketo Client ID and Client Secret. Create them by following Marketo's authentication help.

- Your Marketo Instance URL. Follow Marketo's base URL help and copy the REST endpoint without
/rest. If you leave/reston the URL, the connection will not work.

- The Program ID for the Marketo program that should hold exported lists. Open the program in Marketing Activities and copy the ID from the end of the URL, such as
PGXXXXXX.
Set up Marketo as a destination
- In GrowthLoop, click the Destinations tab on the left sidebar.
- Click New Destination in the top right corner.
- Search for Marketo and click Add Marketo.
- Enter the required information, then click Create.

| Field | Description |
|---|---|
| Destination Name | Name this destination in GrowthLoop. Use a name so your team recognizes its purpose, like "Marketo Email". |
| Sync Frequency | Set the default export frequency (for example, daily or weekly). You can override this setting for individual exports and syncs. |
| Client ID | Your Marketo API Client ID. |
| Client Secret | Your Marketo API Client Secret. |
| Instance URL | Your Marketo REST base URL without /rest. |
| Program ID | Marketo program that should contain the static lists GrowthLoop creates. Use the ID from the program URL, such as PGXXXXXX. |
| Prefix for Personalization Fields (optional) | Prefix GrowthLoop adds to personalization fields. The default value is fw. Leave this blank for no prefix. If you set one, it must start with a letter and use up to 5 letters or numbers. |
GrowthLoop validates the Client ID, Client Secret, and Instance URL. Marketo then appears in your list of connected destinations.
Export to Marketo
From within GrowthLoop, export from an audience or from a journey Destination Node. See Export an audience or Build a journey if you need more information on these steps.
After building or selecting an audience, click Export, then search for Marketo. In a journey, add a Destination Node under Email and select Marketo.

Map contact identifiers
On an audience or in a journey Destination Node, map Marketo Lead ID. This field is required.
Static list exports write list membership only. GrowthLoop does not create leads or write personalization fields to the list.
Configure the export
This is where you set the campaign type and schedule for audience exports. On a journey Destination Node, you set timing on the journey canvas.
| Setting | Audience export | Journey Destination Node |
|---|---|---|
| Export Name | Defaults to {audience name}_GL_Audience_{audience ID}. That is the Marketo list name unless you change it. | Required. Enter a name so you can find the export in GrowthLoop and the list in Marketo. |
| Audience Type | Static List (default) or Custom Object. | Journeys create a static list. |
| Custom Objects | Shown when Audience Type is Custom Object. | Journeys do not use custom object exports. |
| Campaign type | Choose a one-time or ongoing export. | The journey schedule controls when the journey runs and contacts are sent to Marketo. |
| Schedule | Set frequency, start date, end date, and days of the week for ongoing exports. | Users reach this node when the journey runs. Add a Delay Node or set Criteria Evaluation to control timing. |
Export behavior
This is what GrowthLoop writes when you export an audience.
| Behavior | What happens |
|---|---|
| What GrowthLoop writes | Static list membership for leads that already exist in Marketo. Direction is GrowthLoop → Marketo. |
| When it runs | GrowthLoop sends the export as a batch on the next successful run. An export that starts Now runs within about 15 minutes. Journeys send exports on demand when users reach the Destination Node. |
| List | GrowthLoop creates a static list in the Program ID you set on the destination and uses that list on later runs. The list name is the export name. |
| Match field | Marketo Lead ID. |
| Lead does not exist in Marketo | The row fails. GrowthLoop does not create the lead. |
| Adds | GrowthLoop adds the existing lead to the list. |
| One-time exports | GrowthLoop sends current membership once. |
| Ongoing adds and removals | Ongoing exports add contacts who enter the audience and remove those who leave that list. |
| Deletes | GrowthLoop does not delete Marketo leads or the static list. |
Custom Object exports
On an audience export, Audience Type can be Custom Object. Journeys do not use this type.
GrowthLoop writes membership rows to the Marketo custom object flywheel_audience_member. It does not write to the object you select in Custom Objects.
Each row includes email, audience_id, and audience_name. Map an email column as a personalization field so Marketo can look up the row. You can also map custom attributes from the audience. GrowthLoop stores those extra fields with an fw_ prefix and can add them to the flywheel_audience_member schema.
Adds bulk-import rows into that object. Ongoing removals delete matching flywheel_audience_member rows.
Create a sync in GrowthLoop
Create a sync from a warehouse table to write rows onto Marketo leads or custom objects. See Syncs for information on how to complete those steps.
Select an Object Type:
| Object | Use it for | Sync modes |
|---|---|---|
| Lead | Create or update lead records | Insert, Update, or Upsert |
| Custom object | Create or update records on a custom object that already exists in Marketo | Insert, Update, or Upsert |
When you configure the sync:
- Connection: Select your Marketo destination.
- Object Type: Select Lead or a custom object from your Marketo instance. Create the custom object in Marketo first.
- Update Rule: Choose Insert, Update, or Upsert. See Sync behavior.
- Dataset/Table: Select the warehouse table that holds the records.
- Match Field: For Lead, map Email or Marketo GUID. For a custom object, map the lookup field Marketo uses to find the record.
After you map fields, click Update Sync. Enable the sync with the toggle at the top of the page.
When you update mappings on an existing sync, choose Updates only unless you need Back-fill. Back-fill rewrites already synced rows and can be expensive on your warehouse.
Syncs write lead or custom object records. They do not add or remove contacts from a static list. To manage list membership, export an audience.
Lead fields
Map Email or Marketo GUID, then map the lead fields you want to write. See Marketo's standard lead fields.
| Destination field | Required | Description |
|---|---|---|
| Email or Marketo GUID | Yes | Lookup field. Update looks up the lead by Marketo GUID (id). Insert and Upsert use the match field you mapped |
| Other lead fields | No | Any standard or custom lead field Marketo exposes |
Custom object fields
Map the lookup field for that object, then map the fields you want to write. GrowthLoop loads the field list from Marketo for the object you selected.
Sync behavior
| Behavior | What happens |
|---|---|
| When it runs | GrowthLoop sends the sync as a batch on the next successful run. |
| Insert | GrowthLoop bulk-imports rows. New leads can be created when the lookup does not match. |
| Update | GrowthLoop looks up the record by Marketo GUID (id) and updates mapped fields. New records are not created. |
| Upsert | GrowthLoop looks up the record by the match field you mapped and inserts or updates. |
| Custom objects | GrowthLoop bulk-imports to the custom object you selected. That object must already exist in Marketo. |
| List membership | Syncs do not add or remove contacts from a static list. |
| Deletes | GrowthLoop does not delete Marketo leads or custom object records. |
Rows without the lookup field fail.
Confirm the export was successful
When the run finishes, confirm you can use the data in Marketo.
- Audience export: Open Marketing Activities and open the program you used for Program ID. Look up the
_GL_Audience_list name unless you changed Export Name. - Journey Destination Node: Open that program and look up the static list named after the export.
- Lead sync: Search for the lead and check the mapped attributes.
- Custom object sync: Search for the custom object row and check the mapped attributes.
In GrowthLoop, review counts on the audience Exports tab, open the Activity tab on the journey Destination Node, or confirm the sync appears in the Syncs table. See Export an audience, Monitor a journey, or Syncs for more information.
Congrats on successfully exporting to Marketo!
Troubleshooting
These are the issues we see most often. You can always email us at [email protected] for help.
| Problem | Cause | Resolution |
|---|---|---|
| Connection fails to validate | Client ID, Client Secret, or Instance URL is wrong | Confirm the API credentials in Marketo. Paste the Instance URL without /rest |
| List was not created | Program ID is missing or does not match a program in that instance | Open the program in Marketing Activities and copy the ID from the URL, such as PGXXXXXX |
| Lead was not added to the list | The Marketo Lead ID does not exist | Create or import the lead in Marketo first, then export again |
| Rows fail to export | Marketo Lead ID is not mapped | Map Marketo Lead ID |
| You cannot find the list | You are searching for the unsuffixed audience name | Search the program for the _GL_Audience_ export name |
| Custom object rows are missing | GrowthLoop writes to flywheel_audience_member, not the object in the picker | Open that custom object in Marketo, and include email as a personalization field |
| A lead sync does not create a new lead | Update Rule is Update | Use Insert or Upsert to create leads. Update looks up an existing Marketo GUID |
| A lead sync fails to match | Email or Marketo GUID is not mapped | Map Email or Marketo GUID |
| A custom object sync fails | The object does not exist in Marketo, or the lookup field is not mapped | Create the custom object in Marketo first, then map its lookup field |
| A sync did not change a static list | Syncs write lead or custom object records only | Export an audience to add or remove static list membership |
Updated 12 days ago
