Search documentation...

ChangelogBook a demoSign up


Build robust marketing campaigns on Marketo using rich customer data from your data warehouse

Marketo is a premium destination and is only available on Business tier plans.

Supported syncing

Sync TypeDescriptionSupported Sync ModesAPI Reference
Standard and custom objectsSync data from any source to any custom or standard objects including leads, companies, and opportunitiesUpsert, UpdateObject docs
ActivitiesSync data from any source to custom activitiesInsertActivities docs
Static ListsMatch data from any source to static listsInsert, UpdateStatic Lists docs
Campaign triggersTrigger campaigns using source dataInsertCampaign docs

For more information about sync modes, refer to the sync modes docs.

Connect to Marketo

Go to the Destinations overview page and click the Add destination button. Select Marketo and click Continue. You can then authenticate Hightouch to Marketo by entering the following fields:

  • Client ID
  • Client Secret
  • Base URL

To find the Client ID and Secret, navigate to Admin > LaunchPoint in your Marketo account and select a service.

You can find the Base URL in Admin > Integration > Web Services. Only use the part after https:// and before /rest as your base URL, for example,

Sync configuration

Once you've set up your Marketo destination and have a model to pull data from, you can set up your sync configuration to begin syncing data. Go to the Syncs overview page and click the Add sync button to begin. Then, select the relevant model and the Marketo destination you want to sync to.

Syncing objects

Hightouch supports syncing to both standard and custom Marketo objects. The standard objects that Hightouch supports are:

  • Leads
  • Companies
  • Opportunities

Record matching

Records can be matched from your source to your Marketo object. The fields available to match depend on the object.

Field mapping

You can sync columns from your source to Marketo's fields.

Syncing activities

Hightouch supports syncing to custom activities. To sync custom activities they must first be created and approved in Marketo.

When syncing activities, Hightouch treats any records added to your source as new activities and sends them to Marketo when your sync runs.

To ensure syncs send each activity, your event model must use a truly unique primary key. See the events syncs documentation for more information.

You can learn more about creating custom activities in Marketo's docs.

Activity configuration

Hightouch allows you to choose the activity, timestamp, and the lead ID that your Marketo activity is linked to.



Record matching

Records can be matched from your source to your Marketo activity's primary attribute.

Field mappings

Hightouch allows you to sync data from your source to your Marketo activity's attributes.

Creating and syncing to static lists

Hightouch supports creating and updating Marketo static lists.

Static lists

Hightouch supports automatically creating a new list for your sync. You can specify a custom name for this list, or Hightouch will use the name of the model.

Here, the name List 1 will be used as the list name:

Selecting a folder

When creating a new static list in Marketo, you need to select the folder the list will be created in.

Static list description

Hightouch supports adding an optional description to your Marketo static list.

Campaign trigger

Hightouch allows you to trigger campaigns through Marketo Campaign API with records in your model.


Before you are able to set up a Hightouch sync to trigger a campaign, you are required to have an active trigger campaign with the Web Service API as the source in Marketo. See the steps below.


  1. If you haven't already, go to Design Studio to build your email template in your Marketo instance. Before your email template can be used in Hightouch, your draft must be approved.

You can use custom tokens to populate your email template with data from your model.

In the example above, we want to dynamically populate our email subject. See tokens.

  1. Setup your campaign.
    1. Setup your trigger.
      A. Create a Smart Campaign that you will trigger. Make sure that your campaign belongs to a program.
      B. Go to Smart List tab to configure the trigger.
      C. Select Campaign is Requested under the triggers.
      D. Select Web Service API for source.
    2. Setup your flow.
      A. Go to Flow.
      B. Select Email.
      C. Select the email template you want to send.
    3. Setup your qualifications and activate.
      A. Go to Schedule.
      B. Click on Edit to edit your qualifications.
      C. Activate this campaign.

For additional reference, see Marketo's how-to article.


Hightouch sync will trigger your Marketo Smart Campaign when rows first appear in your sync. This means that Hightouch will trigger your Marketo Smart Campaign for every row in your model on the first time you run your sync or when you do a full resync, and for every new row that is added to your query results in the subsequent syncs.

The Hightouch Marketo destination will not check if an email has been sent to a distinct lead. This means that if a lead with email appears in two of the queried rows from your model, then a trigger (emails) request for each of these rows will be sent to Marketo's API. A total of two triggers will be sent for If you wish to only send emails once per lead, set your qualification settings in Marketo to only once.

Leads mapping

Marketo Smart Campaigns are only triggered for leads that already exist in your Marketo instance. You can provide a lead ID or a lead email for every lead that you want to send your email to.

If you are using email for your lead mapping and your leads aren't de-duplicated by email, Hightouch will use the latest lead based on the createdAt timestamp when performing the lookup.

Token mappings

Use this section to map your tokens with data from your rows. You only need to add mappings for tokens that are used in your email template.


When testing, we recommend that you use an example lead so you can access the test email. You will use this lead to perform dry run tests for the campaign trigger sync.

Before running your sync, we highly recommend testing it with a single row.

A. You can manually overwrite columns of a test row. In our example We're using the email column to match leads by their email field, so we need to manually overwrite the email field to our own email to send a test email. If you are using the lead_id column to match leads, you need to manually overwrite the lead_id field to your own lead_id to send a test email.
B. Once ready, press Sync as added row.

Check the email of the lead for testing to verify that your setup works.

Tips and troubleshooting

Common errors

If you encounter an error or question not listed below and need assistance, don't hesitate to . We're here to help.

Code 603 "Access denied"

This error means that authentication to Marketo was successful but the account you authenticated with doesn't have sufficient permission to call the Marketo API. For more information, see Marketo's help article.

Ensure you've turned on the Read-Write Activity permission for the Marketo account you're connecting to Hightouch with, and that it has access to the Marketo workspaces and partitions you want to use in Hightouch.

Code 1003 "Campaign is not part of a program"

To resolve this error, move your campaign into a program.

Code 1007 "Multiple lead match lookup criteria"

To resolve this error, remove any duplicate rows with the same primary key in your model.

Live debugger

Hightouch provides complete visibility into the API calls made during each of your sync runs. We recommend reading our article on debugging tips and tricks to learn more.

Sync alerts

Hightouch can alert you of sync issues via Slack, PagerDuty, SMS, or email. For details, please visit our article on alerting.

Ready to get started?

Jump right in or a book a demo. Your first destination is always free.

Book a demoSign upBook a demo

Need help?

Our team is relentlessly focused on your success. Don't hesitate to reach out!

Feature requests?

We'd love to hear your suggestions for integrations and other features.

Last updated: May 25, 2023

On this page

Supported syncingConnect to MarketoSync configurationSyncing objectsRecord matchingField mappingSyncing activitiesActivity configurationRecord matchingField mappingsCreating and syncing to static listsStatic listsSelecting a folderStatic list descriptionCampaign triggerPrerequisitesSyncTestingTips and troubleshootingCommon errorsLive debuggerSync alerts

Was this page helpful?