Search documentation...



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


Create Marketo authorization details by navigating to Admin > LaunchPoint and selecting 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,

Go to

Click "Add New"

Click "Marketo"

Add any destination name (for example, "Marketo")

Copy Client ID, Client Secret, and Base URL into form

Click Add Marketo Destination


Hightouch supports the following Marketo sync types:

  • Objects
  • Activities
  • Static Lists
  • Campaign Trigger

Syncing objects

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

  • Leads
  • Companies
  • Opportunities

Sync modes

Hightouch supports the following sync modes for objects:

  • Upsert: Upsert mode pushes new objects to Marketo and updates fields that change in your warehouse.
  • Update: Update mode updates particular fields on existing objects in Marketo.

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, use a hash function for the activity model's primary key . The hash should combine all columns, including member ID, timestamp, etc. See the event sync 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.


Common errors:

  • Code 1003 "Campaign is not part of a program" -> You have to move your campaign into a program.

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.

On this page

SetupTypesSyncing objectsSync modesRecord matchingField mappingSyncing activitiesActivity configurationRecord matchingField mappingsCreating and syncing to static listsStatic listsSelecting a folderStatic list descriptionCampaign triggerPrerequisitesSyncTestingTroubleshooting

Was this page helpful?