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

Singer Community

Stitch plan

Standard

API availability

Available

Singer GitHub repository

singer-io/tap-exacttarget

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:


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.

  1. Navigate to the Salesforce Marketing Cloud login page.
  2. Enter your Salesforce Marketing Cloud username and click Next.
  3. Look at the URL for the page you’re currently on. The string between https:// and .login is your tenant subdomain:

    The tenant subdomain, highlighted in the login URL for Salesforce Marketing Cloud

    In this example, the tenant subdomain is mcx21dt54chc0gprl638px2g7r48. Keep this handy - you’ll need it to complete the setup in Stitch.

  4. 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

  1. While signed into your Salesforce Marketing Cloud account, click the user menu in the top right corner, then Setup.
  2. In the menu on the left side, click Apps > Installed Packages.
  3. Click the New button.
  4. In the New Package Details window, enter a Name and Description for the package. For example: Stitch
  5. 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.

  1. Click the Add Component button.
  2. Select the API Integration option in the Choose Your Component Type window. Click Next.
  3. Select the Server-to-Server option in the Choose Your Integration Type window:

    Server-to-Server integration type highlighted in the Choose Your Integration Type window of the Installed Package creation workflow

    Click Next.

  4. 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

    • Email
    • 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.

  5. 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:

Client ID and Client Secret fields highlighted in Salesforce Marketing Cloud App Components Summary page

Keep these handy - you’ll need them to complete the setup in Stitch.

Step 3: Add Salesforce Marketing Cloud as a Stitch data source

  1. Sign into your Stitch account.
  2. On the Stitch Dashboard page, click the Add Integration button.

  3. Click the Salesforce Marketing Cloud icon.

  4. 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.

  5. In the Client ID field, paste the Salesforce Marketing Cloud Client ID you retrieved in Step 2.3.
  6. In the Client Secret field, paste the Salesforce Marketing Cloud Client Secret you retrieved in Step 2.3.
  7. 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 data equal to or newer than this date will be replicated to your data warehouse.

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:

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:

  1. Individual tables and columns

  2. All tables and columns

Click the tabs to view instructions for each selection method.

  1. In the integration’s Tables to Replicate tab, locate a table you want to replicate.
  2. To track a table, click the checkbox next to the table’s name. A blue checkmark means the table is set to replicate.

  3. To track a column, click the checkbox next to the column’s name. A blue checkmark means the column is set to replicate.

  4. Repeat this process for all the tables and columns you want to replicate.
  5. When finished, click the Finalize Your Selections button at the bottom of the screen to save your selections.
  1. Click into the integration from the Stitch Dashboard page.
  2. Click the Tables to Replicate tab.

  3. In the list of tables, click the box next to the Table Names column.
  4. In the menu that displays, click Track all Tables and Fields:

    The Track all Tables and Fields menu in the Tables to Replicate tab

  5. 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.

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

campaigns

The campaigns table contains info about the campaigns in your Salesforce Marketing Cloud account.

Replication Method

Full Table

Primary Key

id

Replication Key

modifiedDate

Useful links

campaigns schema on GitHub

Salesforce Marketing Cloud API method

campaignCode

STRING

color

STRING

createdDate

STRING

description

STRING

id

STRING

modifiedDate

STRING

name

STRING

content_areas

The content_areas table contains info about the reusable content sections in your Salesforce Marketing Cloud account.

Replication Method

Key-based Incremental

Primary Key

ID

Replication Key

ModifiedDate

Useful links

content_areas schema on GitHub

Salesforce Marketing Cloud API method

Join content_areas with on
emails
content_areas.ID = emails.ContentAreaIDs
content_areas.CategoryID = emails.CategoryID
folders
content_areas.CategoryID = folders.ID
content_areas.CategoryID = folders.ParentFolder
lists
content_areas.CategoryID = lists.Category

BackgroundColor

STRING

BorderColor

STRING

BorderWidth

INTEGER

CategoryID

INTEGER

Cellpadding

INTEGER

Cellspacing

INTEGER

Content

STRING

CreatedDate

STRING

CustomerKey

STRING

FontFamily

STRING

HasFontSize

BOOLEAN

ID

INTEGER

IsBlank

BOOLEAN

IsDynamicContent

BOOLEAN

IsLocked

BOOLEAN

IsSurvey

BOOLEAN

Key

STRING

ModifiedDate

STRING

Name

STRING

ObjectID

STRING

PartnerProperties

ARRAY

Name

STRING

Value

STRING

Width

INTEGER

data_extension

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.

Replication Method

Full Table

Primary Key

_CustomObjectKey

Useful links

data_extension schema on GitHub

Salesforce Marketing Cloud API method

CategoryID

INTEGER

_CustomObjectKey

STRING

emails

The emails table contains info about the emails in your Salesforce Marketing Cloud account.

Replication Method

Key-based Incremental

Primary Key

ID

Replication Key

ModifiedDate

Useful links

emails schema on GitHub

Salesforce Marketing Cloud API method

Join emails with on
content_areas
emails.ContentAreaIDs = content_areas.ID
emails.CategoryID = content_areas.CategoryID
sends
emails.ID = sends.EmailID
emails.ClonedFromID = sends.EmailID
folders
emails.CategoryID = folders.ID
emails.CategoryID = folders.ParentFolder
lists
emails.CategoryID = lists.Category

CategoryID

INTEGER

CharacterSet

STRING

ClonedFromID

INTEGER

ContentAreaIDs

ARRAY

ContentCheckStatus

STRING

CreatedDate

STRING

CustomerKey

STRING

EmailType

STRING

HTMLBody

STRING

HasDynamicSubjectLine

BOOLEAN

ID

INTEGER

IsActive

BOOLEAN

IsHTMLPaste

BOOLEAN

ModifiedDate

STRING

Name

STRING

ObjectID

STRING

PartnerProperties

ARRAY

Name

STRING

Value

STRING

PreHeader

STRING

Status

STRING

Subject

STRING

SyncTextWithHTML

BOOLEAN

TextBody

STRING

__AdditionalEmailAttribute1

STRING

__AdditionalEmailAttribute2

STRING

__AdditionalEmailAttribute3

STRING

__AdditionalEmailAttribute4

STRING

__AdditionalEmailAttribute5

STRING

events

The events table contains info about the events in your Salesforce Marketing Cloud account.

Replication Method

Key-based Incremental

Primary Keys

EventType

EventDate

SendID

SubscriberKey

Replication Key

EventDate

Useful links

events schema on GitHub

Join events with on
list_sends
events.SendID = list_sends.SendID
sends
events.SendID = sends.ID
list_subscribers
events.SubscriberKey = list_subscribers.SubscriberKey
subscribers
events.SubscriberKey = subscribers.ID

BatchID

INTEGER

CorrelationID

STRING

EventDate

DATE-TIME

EventType

STRING

SendID

INTEGER

SubscriberKey

STRING

URL

STRING

folders

The folders table contains info about the folders in your Salesforce Marketing Cloud account.

Replication Method

Key-based Incremental

Primary Key

ID

Replication Key

ModifiedDate

Useful links

folders schema on GitHub

Salesforce Marketing Cloud API method

Join folders with on
content_areas
folders.ID = content_areas.CategoryID
folders.ParentFolder = content_areas.CategoryID
emails
folders.ID = emails.CategoryID
folders.ParentFolder = emails.CategoryID
lists
folders.ID = lists.Category
folders.ParentFolder = lists.Category

AllowChildren

BOOLEAN

ContentType

STRING

CreatedDate

STRING

CustomerKey

STRING

Description

STRING

ID

INTEGER

ModifiedDate

STRING

Name

STRING

ObjectID

STRING

ParentFolder

INTEGER

PartnerProperties

ARRAY

Name

STRING

Value

STRING

Type

STRING

list_sends

The list_sends table contains info about the completed sends for lists in your Salesforce Marketing Cloud account.

Replication Method

Key-based Incremental

Primary Keys

ListID

SendID

Replication Key

ModifiedDate

Useful links

list_sends schema on GitHub

Salesforce Marketing Cloud API method

Join list_sends with on
lists
list_sends.ListID = lists.ID
list_subscribers
list_sends.ListID = list_subscribers.ListID
subscribers
list_sends.ListID = subscribers.ListIDs
events
list_sends.SendID = events.SendID
sends
list_sends.SendID = sends.ID

CreatedDate

STRING

CustomerKey

STRING

ExistingUndeliverables

INTEGER

ExistingUnsubscribes

INTEGER

ForwardedEmails

INTEGER

HardBounces

INTEGER

ID

INTEGER

InvalidAddresses

INTEGER

ListID

INTEGER

MissingAddresses

INTEGER

ModifiedDate

STRING

NumberDelivered

INTEGER

NumberSent

INTEGER

ObjectID

STRING

OtherBounces

INTEGER

PartnerProperties

ARRAY

Name

STRING

Value

STRING

SendID

INTEGER

SoftBounces

INTEGER

UniqueClicks

INTEGER

UniqueOpens

INTEGER

Unsubscribes

INTEGER

list_subscribers

The list_subscribers table contains info about the lists associated with a specific subscriber in your Salesforce Marketing Cloud account.

Replication Method

Key-based Incremental

Primary Keys

ListID

SubscriberKey

Replication Key

ModifiedDate

Useful links

list_subscribers schema on GitHub

Salesforce Marketing Cloud API method

Join list_subscribers with on
lists
list_subscribers.ListID = lists.ID
list_sends
list_subscribers.ListID = list_sends.ListID
subscribers
list_subscribers.ListID = subscribers.ListIDs
list_subscribers.SubscriberKey = subscribers.ID
events
list_subscribers.SubscriberKey = events.SubscriberKey

CreatedDate

STRING

ID

INTEGER

ListID

INTEGER

ModifiedDate

STRING

ObjectID

STRING

PartnerProperties

ARRAY

Name

STRING

Value

STRING

Status

STRING

SubscriberKey

STRING

lists

The lists table contains info about the lists in your Salesforce Marketing Cloud account.

Replication Method

Key-based Incremental

Primary Key

ID

Replication Key

ModifiedDate

Useful links

Salesforce Marketing Cloud documentation

lists schema on GitHub

Salesforce Marketing Cloud API method

Join lists with on
content_areas
lists.Category = content_areas.CategoryID
emails
lists.Category = emails.CategoryID
folders
lists.Category = folders.ID
lists.Category = folders.ParentFolder
list_sends
lists.ID = list_sends.ListID
list_subscribers
lists.ID = list_subscribers.ListID
subscribers
lists.ID = subscribers.ListIDs

Category

INTEGER

CreatedDate

STRING

Description

STRING

ID

INTEGER

ListClassification

STRING

ListName

STRING

ModifiedDate

STRING

ObjectID

STRING

PartnerProperties

ARRAY

Name

STRING

Value

STRING

SendClassification

STRING

Type

STRING

sends

The sends table contains info about the email sends in your Salesforce Marketing Cloud account.

Replication Method

Key-based Incremental

Primary Key

ID

Replication Key

ModifiedDate

Useful links

sends schema on GitHub

Salesforce Marketing Cloud API method

Join sends with on
emails
sends.EmailID = emails.ID
sends.EmailID = emails.ClonedFromID
events
sends.ID = events.SendID
list_sends
sends.ID = list_sends.SendID

CreatedDate

STRING

EmailID

INTEGER

EmailName

STRING

FromAddress

STRING

FromName

STRING

ID

INTEGER

IsAlwaysOn

BOOLEAN

IsMultipart

BOOLEAN

ModifiedDate

STRING

PartnerProperties

ARRAY

Name

STRING

Value

STRING

SendDate

DATE-TIME

SentDate

DATE-TIME

Status

STRING

Subject

STRING

subscribers

The subscribers table contains info about the subscribers (people subscribed to receive email and/or SMS communication) in your Salesforce Marketing Cloud account.

Replication Method

Key-based Incremental

Primary Key

ID

Replication Key

ModifiedDate

Useful links

subscribers schema on GitHub

Salesforce Marketing Cloud API method

Join subscribers with on
lists
subscribers.ListIDs = lists.ID
list_sends
subscribers.ListIDs = list_sends.ListID
list_subscribers
subscribers.ListIDs = list_subscribers.ListID
subscribers.ID = list_subscribers.SubscriberKey
events
subscribers.ID = events.SubscriberKey

Addresses

ARRAY

Address

STRING

AddressStatus

STRING

AddressType

STRING

Attributes

ARRAY

Name

STRING

Value

STRING

CreatedDate

STRING

CustomerKey

STRING

EmailAddress

STRING

EmailTypePreference

STRING

ID

INTEGER

ListIDs

ARRAY

Locale

STRING

ModifiedDate

STRING

ObjectID

STRING

PartnerKey

STRING

PartnerProperties

ARRAY

Name

STRING

Value

STRING

PartnerType

STRING

PrimaryEmailAddress

STRING

PrimarySMSAddress

STRING

PrimarySMSPublicationStatus

STRING

Status

STRING

SubscriberKey

STRING

SubscriberTypeDefinition

STRING

UnsubscribedDate

STRING


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.