Search documentation...


Salesforce Marketing Cloud

Supercharge what your teams can do in Salesforce Marketing Cloud with rich customer data from your data warehouse

Salesforce Marketing Cloud is a premium destination and is only available on Business Tier plans.


To connect Hightouch to Marketing Cloud, a "package" must be created in Marketing Cloud on behalf of Hightouch.

Navigate to Setup > Apps > Installed Packages and click "New." Name your package and after creating it, add an API Integration component to the package with the integration type as "Server-to-server."

Grant Hightouch the scopes for journey, list, subscribers, accounts, and data extensions as below. These are the minimum scopes. If using FTP mode, additional permissions are required.

With the API Integration created, copy the client ID, client secret, and subdomain into Hightouch. The subdomain is the part of the authentication base URI highlighted in the red box.

Syncing Marketing Cloud contacts

Sync modes

This integration only supports upserting contacts into Marketing Cloud. In this mode, new users will be inserted into Marketing Cloud and all user attributes will be kept up-to-date when mapped.

Record matching

Records can be matched from your source to your Marketing Cloud workspace by your contact key. Note: this is not the ID or email address, but the contact key on the top left of the contact page.

Field mapping

You can sync columns from your source to Marketing Cloud's attribute sets.

Ensure all the required fields in each attribute set is completed. For example, to add an email address, both Email Address and HTML Enabled must be mapped. Refer to the Usage section of the Creating Contacts documentation.

Managing user journeys

Hightouch can manage the entry and exit of contacts in Marketing Cloud journeys based your results.

  • When a record enters your results set, a contact will be added to the journey via a contact key (this is done by triggering the entry event)
  • When a record leaves your results set, a contact will be exited from the journey

Journey selection

Here is an example journey that the Hightouch would work for, note that it's:

  • A multi-step journey
  • Triggered by an entry API event with an associated event definition key and data extension

Hightouch will automatically look for the event definition key, simply select a journey that fits the above requirements.

Record matching

Hightouch will enter and exit contacts in the journey based on a column containing the contact key.

Field mapping

Field mapping is needed to map other columns in your results to the data extension containing data for your journey.

In the data extension, there is a required attribute email_address which means that you will have to map a result column to that attribute. You can do this in Hightouch by typing the attribute name in the mappings section.

Syncing Data Extension objects

Hightouch supports syncing objects to existing Data Extensions.

Automatic creation of Data Extensions

If enabled, Hightouch will create a Data Extension for you the first time the sync runs:

The Data Extension's name can be specified as well. The name defaults to the model name, and it will be used for the Data Extension's customer key as well.

The Data Extension will only be created the first time the sync runs. Hightouch will not modify the name or customer key of the Data Extension after the first run. If you want to change the name or customer key, you will have to create a new sync.

Automatic file import via FTP

If FTP is selected, Hightouch will upload a file via FTP to SFMC. Then, Hightouch will create and run an Import Definition to import the file to the Data Extension. This is done in batches. After each batch, Hightouch processes the SFMC results file to determine row errors.

If you enable deletion in FTP mode, Hightouch removes deleted rows in the Data Extension using the SOAP API. SFMC doesn't support deletions using FTP directly.

FTP mode requires:

  • FTP credentials to be configured for the destination in Hightouch.
    • Username, which is typically a ~10 digit numeric ID.
    • Password or private key with a corresponding public key uploaded to SFMC.
    • The private key in the Hightouch destination configuration should be the full private key, starting with -----BEGIN...PRIVATE KEY-----. You can generate a private-public key pair with a tool like ssh-keygen.
    • A private key passphrase if required by your private key.
  • The following permissions granted to the installed package in SFMC:
    • File location read and write
    • Automation read, write, and execute

The default mode uses only the SOAP API and works in smaller batches. FTP mode is generally faster.

Field mapping for automatically created Data Extensions

If you are using a Data Extension automatically created by Hightouch, you can create new fields and select their types.

The primary field will be required. If it's a text field, its max length will be set to the maximum of 4000.

All other fields will be optional.

Hightouch will add new fields to the Data Extension that are added each run.

Hightouch will not remove fields that are dropped from the sync.

Sync modes

Hightouch supports upsert mode for Data Extension objects. In this mode, new objects will be inserted into the data extension and all object attributes will be kept up-to-date when mapped.

Deletion is disabled by default. If you enable it, Hightouch will delete objects that are removed from your results set.

Record matching

Objects can be matched from your source to your Data Extension by the "primary" field of your Data Extension.

Field mapping

Marketing Cloud requires a minimum of one field mapping when sending data using SOAP-mode. This can be a placeholder field.

You can map from your source to any field in your Data Extension. Make sure that you include all non-nullable fields when syncing new objects to the Data Extension. In upsert mode, it's possible to send requests that don't have all non-nullable fields, but only if the object already exists in the Data Extension. For new objects, non-nullable fields are required.

Sendable and testable Data Extensions

For auto-created Data Extensions, you can select whether the Data Extension is sendable and testable. These properties are set the next time the sync runs.

Testable can only be set if sendable is set.

The options available for the sendable field are the currently mapped fields.

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

SetupSyncing Marketing Cloud contactsSync modesRecord matchingField mappingManaging user journeysJourney selectionRecord matchingField mappingSyncing Data Extension objectsAutomatic creation of Data ExtensionsAutomatic file import via FTPField mapping for automatically created Data ExtensionsSync modesRecord matchingField mappingSendable and testable Data Extensions

Was this page helpful?