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 forAudiencesJourneysSyncs
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.
Marketo API credentials showing Client ID and Client Secret
  • Your Marketo Instance URL. Follow Marketo's base URL help and copy the REST endpoint without /rest. If you leave /rest on the URL, the connection will not work.
Marketo Admin Integration Web Services page showing the REST API endpoint URL
  • 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

  1. In GrowthLoop, click the Destinations tab on the left sidebar.
  2. Click New Destination in the top right corner.
  3. Search for Marketo and click Add Marketo.
  4. Enter the required information, then click Create.
Marketo destination setup form with destination name, Client ID, Client Secret, and Instance URL
FieldDescription
Destination NameName this destination in GrowthLoop. Use a name so your team recognizes its purpose, like "Marketo Email".
Sync FrequencySet the default export frequency (for example, daily or weekly). You can override this setting for individual exports and syncs.
Client IDYour Marketo API Client ID.
Client SecretYour Marketo API Client Secret.
Instance URLYour Marketo REST base URL without /rest.
Program IDMarketo 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.

Journey Destination Node with export name, match fields, and personalization signals

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.

SettingAudience exportJourney Destination Node
Export NameDefaults 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 TypeStatic List (default) or Custom Object.Journeys create a static list.
Custom ObjectsShown when Audience Type is Custom Object.Journeys do not use custom object exports.
Campaign typeChoose a one-time or ongoing export.The journey schedule controls when the journey runs and contacts are sent to Marketo.
ScheduleSet 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.

BehaviorWhat happens
What GrowthLoop writesStatic list membership for leads that already exist in Marketo. Direction is GrowthLoop → Marketo.
When it runsGrowthLoop 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.
ListGrowthLoop 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 fieldMarketo Lead ID.
Lead does not exist in MarketoThe row fails. GrowthLoop does not create the lead.
AddsGrowthLoop adds the existing lead to the list.
One-time exportsGrowthLoop sends current membership once.
Ongoing adds and removalsOngoing exports add contacts who enter the audience and remove those who leave that list.
DeletesGrowthLoop 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:

ObjectUse it forSync modes
LeadCreate or update lead recordsInsert, Update, or Upsert
Custom objectCreate or update records on a custom object that already exists in MarketoInsert, 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 fieldRequiredDescription
Email or Marketo GUIDYesLookup field. Update looks up the lead by Marketo GUID (id). Insert and Upsert use the match field you mapped
Other lead fieldsNoAny 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

BehaviorWhat happens
When it runsGrowthLoop sends the sync as a batch on the next successful run.
InsertGrowthLoop bulk-imports rows. New leads can be created when the lookup does not match.
UpdateGrowthLoop looks up the record by Marketo GUID (id) and updates mapped fields. New records are not created.
UpsertGrowthLoop looks up the record by the match field you mapped and inserts or updates.
Custom objectsGrowthLoop bulk-imports to the custom object you selected. That object must already exist in Marketo.
List membershipSyncs do not add or remove contacts from a static list.
DeletesGrowthLoop 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.

ProblemCauseResolution
Connection fails to validateClient ID, Client Secret, or Instance URL is wrongConfirm the API credentials in Marketo. Paste the Instance URL without /rest
List was not createdProgram ID is missing or does not match a program in that instanceOpen the program in Marketing Activities and copy the ID from the URL, such as PGXXXXXX
Lead was not added to the listThe Marketo Lead ID does not existCreate or import the lead in Marketo first, then export again
Rows fail to exportMarketo Lead ID is not mappedMap Marketo Lead ID
You cannot find the listYou are searching for the unsuffixed audience nameSearch the program for the _GL_Audience_ export name
Custom object rows are missingGrowthLoop writes to flywheel_audience_member, not the object in the pickerOpen that custom object in Marketo, and include email as a personalization field
A lead sync does not create a new leadUpdate Rule is UpdateUse Insert or Upsert to create leads. Update looks up an existing Marketo GUID
A lead sync fails to matchEmail or Marketo GUID is not mappedMap Email or Marketo GUID
A custom object sync failsThe object does not exist in Marketo, or the lookup field is not mappedCreate the custom object in Marketo first, then map its lookup field
A sync did not change a static listSyncs write lead or custom object records onlyExport an audience to add or remove static list membership

What’s Next

Export an audience after you connect a destination

Did this page help you?