This integration is powered by Singer's Exact Target tap. For support, visit the GitHub repo or join the Singer Slack.
Salesforce Marketing Cloud integration summary
Stitch’s Salesforce Marketing Cloud integration replicates data using the Salesforce Marketing Cloud SOAP Web Service API. Refer to the Schema section for a list of objects available for replication.
Salesforce Marketing Cloud feature snapshot
A high-level look at Stitch's Salesforce Marketing Cloud (v1) integration, including release status, useful links, and the features supported in Stitch.
STITCH | |||
Release status |
Released on December 5, 2017 |
Supported by | |
Stitch plan |
Standard |
API availability |
Available |
Singer GitHub repository | |||
REPLICATION SETTINGS | |||
Anchor Scheduling |
Supported |
Advanced Scheduling |
Supported |
Table-level reset |
Unsupported |
Configurable Replication Methods |
Unsupported |
DATA SELECTION | |||
Table selection |
Supported |
Column selection |
Supported |
Select all |
Supported |
||
TRANSPARENCY | |||
Extraction Logs |
Supported |
Loading Reports |
Supported |
Connecting Salesforce Marketing Cloud
Salesforce Marketing Cloud setup requirements
To set up Salesforce Marketing Cloud in Stitch, you need:
-
To be using the Pro, Corporate, or Enterprise edition of Salesforce Marketing Cloud. Salesforce requires this to access the Salesforce Marketing Cloud API.
-
A Salesforce Marketing Cloud user with the Marketing Cloud Administrator Role. Salesforce requires this to generate Salesforce Marketing Cloud API credentials.
Note: While this role is required to complete the setup, you’ll be able to limit Stitch’s access in Salesforce Marketing Cloud. This is outlined in Step 2.2 of this guide.
Step 1: Retrieve your Salesforce Marketing Cloud tenant subdomain
A tenant subdomain is an auto-generated ID unique to your Salesforce Marketing Cloud account. You can retrieve this info by looking at the URL when you sign into your Salesforce Marketing Cloud account.
- Navigate to the Salesforce Marketing Cloud login page.
- Enter your Salesforce Marketing Cloud username and click Next.
-
Look at the URL for the page you’re currently on. The string between
https://
and.login
is your tenant subdomain:In this example, the tenant subdomain is
mcx21dt54chc0gprl638px2g7r48
. Keep this handy - you’ll need it to complete the setup in Stitch. - Enter your Salesforce Marketing Cloud password and click Log In.
Step 2: Generate API credentials
To use Salesforce Marketing Cloud’s API, you need a client ID and secret. These credentials are generated when you create an installed package in Marketing Cloud and add an API Integration component.
Step 2.1: Create an Installed Package for Stitch
- While signed into your Salesforce Marketing Cloud account, click the user menu in the top right corner, then Setup.
- In the menu on the left side, click Apps > Installed Packages.
- Click the New button.
- In the New Package Details window, enter a Name and Description for the package. For example:
Stitch
- Click Save.
Step 2.2: Configure the package settings
After the package has been saved, you’ll need to add a component and grant the required permissions. This will allow Stitch to connect to your Salesforce Marketing Cloud instance.
- Click the Add Component button.
- Select the API Integration option in the Choose Your Component Type window. Click Next.
-
Select the Server-to-Server option in the Choose Your Integration Type window:
Click Next.
-
In the Set Server-to-Server Properties window, you’ll grant permissions to the Stitch app.
The table below lists the categories of permissions and the specific permissions Stitch requires. Unless otherwise noted, select the Read permission next to the following options:
Channels
- Push
- SMS
- Social
- Web
Assets
- Documents and Images
- Saved Content
Automation
- Automations
- Journeys
Contacts
- Audiences
- List and Subscribers
Data
- Data Extensions (Read/Write)
- File Locations
- Tracking Events
Hub
- Calendar
- Campaign
- Tags
Provisioning
- Accounts
- Users
Webhooks
- Webhooks
Note: To replicate Data Extension data, you will also need to select the Write permission.
- Click Save.
Step 2.3: Locate your API credentials
After the permissions are saved, you’ll be directed back to the app’s summary page. In the Components section, locate the Client Id and Client Secret fields, which are highlighted in the image below:
Keep these handy - you’ll need them to complete the setup in Stitch.
Step 3: Add Salesforce Marketing Cloud as a Stitch data source
- Sign into your Stitch account.
-
On the Stitch Dashboard page, click the Add Integration button.
-
Click the Salesforce Marketing Cloud icon.
-
Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.
For example, the name “Stitch Salesforce Marketing Cloud” would create a schema called
stitch_salesforce_marketing_cloud
in the destination. Note: Schema names cannot be changed after you save the integration. - In the Client ID field, paste the Salesforce Marketing Cloud Client ID you retrieved in Step 2.3.
- In the Client Secret field, paste the Salesforce Marketing Cloud Client Secret you retrieved in Step 2.3.
- In the Tenant Subdomain field, paste the Salesforce Marketing Cloud tenant subdomain you retrieved in Step 1.
Step 4: Define the historical replication start date
The Sync Historical Data setting defines the starting date for your Salesforce Marketing Cloud integration. This means that:
- For tables using Key-based Incremental Replication, data equal to or newer than this date will be replicated to your destination.
- For tables using Full Table Replication, all data - including records that are older, equal to, or newer than this date - will be replicated to your destination.
Change this setting if you want to replicate data beyond Salesforce Marketing Cloud’s default setting of 1 year. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide.
Step 5: Create a replication schedule
In the Replication Frequency section, you’ll create the integration’s replication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.
Salesforce Marketing Cloud integrations support the following replication scheduling methods:
-
Advanced Scheduling using Cron (Advanced or Premium plans only)
To keep your row usage low, consider setting the integration to replicate less frequently. See the Understanding and Reducing Your Row Usage guide for tips on reducing your usage.
Step 6: Set objects to replicate
The last step is to select the tables and columns you want to replicate. Learn about the available tables for this integration.
Note: If a replication job is currently in progress, new selections won’t be used until the next job starts.
For Salesforce Marketing Cloud integrations, you can select:
-
Individual tables and columns
-
All tables and columns
Click the tabs to view instructions for each selection method.
- In the integration’s Tables to Replicate tab, locate a table you want to replicate.
-
To track a table, click the checkbox next to the table’s name. A blue checkmark means the table is set to replicate.
-
To track a column, click the checkbox next to the column’s name. A blue checkmark means the column is set to replicate.
- Repeat this process for all the tables and columns you want to replicate.
- When finished, click the Finalize Your Selections button at the bottom of the screen to save your selections.
- Click into the integration from the Stitch Dashboard page.
-
Click the Tables to Replicate tab.
- In the list of tables, click the box next to the Table Names column.
-
In the menu that displays, click Track all Tables and Fields:
- Click the Finalize Your Selections button at the bottom of the page to save your data selections.
Initial and historical replication jobs
After you finish setting up Salesforce Marketing Cloud, its Sync Status may show as Pending on either the Stitch Dashboard or in the Integration Details page.
For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial replication job for the integration. This may take some time to complete.
Initial replication jobs with Anchor Scheduling
If using Anchor Scheduling, an initial replication job may not kick off immediately. This depends on the selected Replication Frequency and Anchor Time. Refer to the Anchor Scheduling documentation for more information.
Free historical data loads
The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.
Salesforce Marketing Cloud table reference
Schemas and versioning
Schemas and naming conventions can change from version to version, so we recommend verifying your integration’s version before continuing.
The schema and info displayed below is for version 1 of this integration.
This is the latest version of the Salesforce Marketing Cloud integration.
Table and column names in your destination
Depending on your destination, table and column names may not appear as they are outlined below.
For example: Object names are lowercased in Redshift (CusTomERs
> customers
), while case is maintained in PostgreSQL destinations (CusTomERs
> CusTomERs
). Refer to the Loading Guide for your destination for more info.
campaign
Replication Method : |
Full Table |
Primary Key |
id |
API endpoint : |
The campaign
table contains info about the campaigns in your Salesforce Marketing Cloud account.
id
|
modifiedDate
The date and time the campaign was last modified. |
createdDate
The date and time the campaign was created. |
campaignCode
|
color
|
description
A description of the campaign. |
name
The name of the campaign. |
content_area
Replication Method : |
Key-based Incremental |
Replication Key |
ModifiedDate |
Primary Key |
ID |
API endpoint : |
The content_area
table contains info about the reusable content sections in your Salesforce Marketing Cloud account.
ID
The content area ID. Reference: |
ModifiedDate
The date and time the content area was last modified. |
BackgroundColor
The background color of the content area. |
BorderColor
The color of the border surrounding the content area. |
BorderWidth
The pixel width of the border surrounding the content area. |
CategoryID
The ID of the folder associated with the content area. Reference: |
Cellpadding
The pixel value of the padding around the content area. |
Cellspacing
The pixel value of the spacing for the content area. |
Content
The content contained in a the content area. |
CreatedDate
The date and time the content area was created. |
CustomerKey
User-supplied unique identifier for an object within an object type (corresponds to the external key assigned to an object in the user interface. |
FontFamily
The font family used in the content area. |
HasFontSize
Indicates whether the content area includes a specified font size or not. |
IsBlank
Indicates if the content area contains no content. |
IsDynamicContent
Indicates if the content area contains dynamic content. |
IsLocked
Indicates if specific email the content area within an Enterprise or Enterprise 2.0 account is locked and cannot be changed by subaccounts. |
IsSurvey
Indicates whether a specific the content area contains survey questions. |
Key
Specifies key associated with the content area in HTML body. Relates to the |
Name
The name of the object or property. |
ObjectID
The content area’s object ID. |
Width
The pixel width of the content area. |
data_extension
Replication Method : |
Full Table |
Primary Key |
_CustomObjectKey |
API endpoint : |
The data_extension
table contains info about the data extensions in your Salesforce Marketing Cloud account. A table will be created for each data extension in your Salesforce Marketing Cloud account.
For example: If there are two data extensions named MobileAddress
and MobileSubscription
, two tables would be created: data_extension._MobileAddress
and data_extension._MobileSubscription
Note: Retrieving data extension data requires Read, Write permissions for Data Extensions.
_CustomObjectKey
The data extension’s custom object key. |
CategoryID
The ID of the category the data extension is associated with. |
Custom fields
The fields for the data extension, set in the Email Studio app of your Salesforce Marketing Cloud account. For example: If a data extension has To view the fields for a given data extension, locate the data extension in the Email Studio app in your Salesforce Marketing Cloud account. |
Replication Method : |
Key-based Incremental |
Replication Key |
ModifiedDate |
Primary Key |
ID |
API endpoint : |
The email
table contains info about the emails in your Salesforce Marketing Cloud account.
ID
The email ID. Reference: |
|
ModifiedDate
The date and time the email was last modified. |
|
CategoryID
The ID of the folder containing the email. Reference: |
|
CharacterSet
Indicates encoding used in an email message. |
|
ClonedFromID
THe ID of email message from which the specified email message was created. Reference: |
|
ContentAreaIDs
The IDs of the content areas contained in the email message.
|
|
ContentCheckStatus
Indicates whether content validation has completed for this email message. |
|
CreatedDate
The date and time the email was created. |
|
CustomerKey
User-supplied unique identifier for an object within an object type (corresponds to the external key assigned to an object in the user interface. |
|
EmailType
Defines preferred email type. |
|
HasDynamicSubjectLine
Indicates whether email message contains a dynamic subject line. |
|
HTMLBody
THe HTML body of an email message. |
|
IsActive
Indicates whether the object is active. |
|
IsHTMLPaste
Indicates whether email message was created via pasted HTML. |
|
Name
The name of the object or property. |
|
ObjectID
The email’s object ID. |
|
PreHeader
The text used in preheader of email message on mobile devices. |
|
Status
Defines status of object. Status of an address. |
|
Subject
The subject area information for a message. |
|
SyncTextWithHTML
Makes the text version of an email contain the same content as the HTML version. |
|
TextBody
Contains raw text body of a message. |
Replication Method : |
Key-based Incremental |
Replication Key |
EventDate |
Primary Key |
SendID : EventType : SubscriberKey : EventDate |
API endpoint : |
The event
table contains info about the following event types:
SendID
The ID of the send associated with the tracking event. Reference: |
EventType
The type of tracking event. Possible values are:
|
SubscriberKey
The ID of the subscriber associated with the event. Reference: |
EventDate
The date and time when a tracking event occurred. |
URL
The URL that was clicked. |
folder
Replication Method : |
Key-based Incremental |
Replication Key |
ModifiedDate |
Primary Key |
ID |
API endpoint : |
The folder
table contains info about the folders in your Salesforce Marketing Cloud account.
ID
The folder ID. Reference: |
ModifiedDate
The date and time the folder was last modified. |
AllowChildren
Specifies whether a data folder can have child data folders. |
ContentType
Defines the type of content contained within a folder. |
CreatedDate
The date and time the folder was created. |
CustomerKey
User-supplied unique identifier for an object within an object type (corresponds to the external key assigned to an object in the user interface. |
Description
A description of the folder. |
Name
Name of the object or property. |
ObjectID
The folder’s object ID. |
ParentFolder
Specifies the parent folder for a data folder. Reference: |
Type
Indicates type of specific list. Possible values are:
|
Replication Method : |
Key-based Incremental |
Replication Key |
ModifiedDate |
Primary Key |
ID |
API endpoint : |
The list
table contains info about the lists in your Salesforce Marketing Cloud account.
ID
The list ID. Reference: |
ModifiedDate
The date and time the list was last modified. |
Category
The ID of the folder that an item is located in. Reference: |
CreatedDate
The date and time the list was created. |
ObjectID
The list’s object ID. |
ListClassification
Specifies the classification for a list. |
ListName
The name of a specific list. |
Description
A description of the list. |
SendClassification
Indicates the send classification to use as part of a send definition. |
Type
Indicates type of specific list. Possible values are:
|
list_send
Replication Method : |
Key-based Incremental |
Replication Key |
ModifiedDate |
Primary Key |
ListID : SendID |
API endpoint : |
The list_send
table contains info about the completed sends for lists in your Salesforce Marketing Cloud account.
ListID
List associated with the send. Reference: |
SendID
The ID of the send associated with the list send. Reference: |
ModifiedDate
The date and time the send was last modified. |
CreatedDate
The date and time the send was created. |
CustomerKey
User-supplied unique identifier for an object within an object type (corresponds to the external key assigned to an object in the user interface. |
ExistingUndeliverables
Indicates whether bounces occurred on previous send. |
ExistingUnsubscribes
Indicates whether unsubscriptions occurred on previous send. |
ForwardedEmails
Number of emails forwarded for a send. |
HardBounces
The number of hard bounces associated with a send. |
InvalidAddresses
Specifies the number of invalid addresses associated with a send. |
ID
The send ID. |
MissingAddresses
The number of missing addresses encountered within a send. |
NumberDelivered
The number of sent emails that did not bounce. |
NumberSent
The number of emails actually sent as part of an email send. This number reflects all of the sent messages and may include bounced messages. |
ObjectID
The send’s object ID. |
OtherBounces
Specifies number of |
SoftBounces
The number of soft bounces associated with a specific send. |
UniqueClicks
The number of unique clicks on message. |
UniqueOpens
The number of unique opens resulting from a triggered send. |
Unsubscribes
The number of unsubscribe events associated with a send. |
list_subscriber
Replication Method : |
Key-based Incremental |
Replication Key |
ModifiedDate |
Primary Key |
ListID : SubscriberKey |
API endpoint : |
The list_subscriber
table contains info about the lists associated with a specific subscriber in your Salesforce Marketing Cloud account.
ListID
Defines identification for a list the subscriber resides on. Reference: |
SubscriberKey
The ID of the subscriber associated with the list subscriber. Reference: |
ModifiedDate
The date and time the list subscriber was last modified. |
CreatedDate
The date and time the list subscriber was created. |
ID
The list subscriber ID. |
ObjectID
The list subscriber’s object ID. |
Status
Defines the status of a subscriber’s address. Possible values are:
|
Replication Method : |
Key-based Incremental |
Replication Key |
ModifiedDate |
Primary Key |
ID |
API endpoint : |
The send
table contains info about the email sends in your Salesforce Marketing Cloud account.
ID
The send ID. Reference: |
ModifiedDate
The date and time the send was last modified. |
CreatedDate
The date and time the send was created. |
EmailID
The ID of an email message associated with a send. Reference: |
EmailName
The name of an email message associated with a send. |
FromAddress
The From address associated with the send. This field has been deprecated by Salesforce. |
FromName
The From name associated with the send. This field has been deprecated by Salesforce. |
IsAlwaysOn
If |
IsMultipart
Indicates whether the email is sent with Multipart/MIME enabled. |
SendDate
The date on which a send occurred. |
SentDate
The date on which a send took place. |
Status
Defines status of object. Status of an address. |
Subject
Contains subject area information for a message. |
subscriber
Replication Method : |
Key-based Incremental |
Replication Key |
ModifiedDate |
Primary Key |
ID |
API endpoint : |
The subscriber
table contains info about the subscribers (people subscribed to receive email and/or SMS communication) in your Salesforce Marketing Cloud account.
ID
The subscriber ID. |
|||
ModifiedDate
The date and time the subscriber was last modified. |
|||
Addresses
Indicates addresses belonging to a subscriber, used to create, retrieve, update or delete an email or SMS Address for a given subscriber.
|
|||
CreatedDate
The date and time the subscriber was created. |
|||
CustomerKey
User-supplied unique identifier for an object within an object type (corresponds to the external key assigned to an object in the user interface. |
|||
EmailAddress
Contains the email address for a subscriber. Indicates the data extension field contains email address data. |
|||
EmailTypePreference
The format in which email should be sent. |
|||
ListIDs
The IDs of the lists the subscriber is a part of.
|
|||
Locale
Contains the locale information for an Account. If no location is set, Locale defaults to en-US (English in United States). |
|||
ObjectID
The subscriber’s object ID. |
|||
PartnerKey
Unique identifier provided by partner for an object, accessible only via API. |
|||
PartnerType
The partner associated with a subscriber. |
|||
PrimaryEmailAddress
The primary email address for a subscriber. |
|||
PrimarySMSAddress
The primary SMS address for a subscriber. Used to create and update SMS Address for a given subscriber. |
|||
PrimarySMSPublicationStatus
Indicates the subscriber’s modality status. |
|||
Status
Defines status of object. Status of an address. |
|||
SubscriberKey
The ID of the subscriber. |
|||
SubscriberTypeDefinition
Specifies if a subscriber resides in an integration, such as Salesforce or Microsoft Dynamics CRM. |
|||
UnsubscribedDate
Represents the date subscriber unsubscribed from a list. |
Related | Troubleshooting |
Questions? Feedback?
Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.