Salesforce Marketing Cloud snapshot

A high-level look at Stitch's Salesforce Marketing Cloud integration, including release status, useful links, and the features supported in Stitch.

STITCH
Release Status

Released

Supported By

Singer Community

Stitch Plan

Free

Singer GitHub Repository

Exact Target Repository

DATA SELECTION
Table Selection

Supported

Column Selection

Supported

REPLICATION SETTINGS
Anchor Scheduling

Supported

Table-level Reset

Unsupported

Configurable Replication Methods

Unsupported

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: 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 1.1: Create an Installed Package for Stitch

  1. Sign into your Salesforce Marketing Cloud account.
  2. Click the user menu in the top right corner, then Administration.
  3. On the Administration page, click Account > Installed Packages.
  4. Click the New button.
  5. In the New Package Details window, enter a Name and Description for the package. For example: Stitch
  6. Click Save.

Step 1.2: Add an API Integration component to the package and set permissions

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. In the Add Component window, select the API Integration option.
  3. In the Add API Integration 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.

  4. Click Save.

Step 1.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 2: 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 1.3.
  6. In the Client Secret field, paste the Salesforce Marketing Cloud Client Secret you retrieved in Step 1.3.

Step 3: Define the historical sync

The Sync Historical Data setting will define the starting date for your Salesforce Marketing Cloud integration. This means that:

  • For tables using Incremental Replication, data equal to or newer than this date will be replicated to your data warehouse.
  • 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 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 4: 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.

Stitch offers two methods of creating a replication schedule:

  • Replication Frequency: This method requires selecting the interval you want replication to run for the integration. Start times of replication jobs are based on the start time and duration of the previous job. Refer to the Replication Frequency documentation for more information and examples.
  • Anchor scheduling: Based on the Replication Frequency, or interval, you select, this method “anchors” the start times of this integration’s replication jobs to a time you select to create a predictable schedule. Anchor scheduling is a combination of the Anchor Time and Replication Frequency settings, which must both be defined to use this method. Additionally, note that:

    • A Replication Frequency of at least one hour is required to use anchor scheduling.
    • An initial replication job may not begin immediately after saving the integration, depending on the selected Replication Frequency and Anchor Time. Refer to the Anchor Scheduling documentation for more information.

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 5: Set tables and columns to replicate

To complete the setup, you’ll need to select the tables and columns you want to replicate to your data warehouse.

Check out the Schema section to learn more about the available tables in Salesforce Marketing Cloud and how they replicate.

  1. In the list of tables that displays - or in the Tables to Replicate tab, if you skipped this step during setup - locate a table you want to replicate.
  2. To track a table, click the checkbox next to the table’s name. A green checkmark means the table is set to replicate.

  3. To track a column, click the checkbox next to the column’s name. A green 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.

Note: If you change these settings while a replication job is still in progress, they will not be used until the next job starts.

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 schemas

Replication Method :

Full Table

Primary Key :

id

API endpoint :

Retrieve campaigns

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

id
STRING

modifiedDate
DATE-TIME

The date and time the campaign was last modified.

createdDate
DATE-TIME

The date and time the campaign was created.

campaignCode
STRING

color
STRING

description
STRING

A description of the campaign.

name
STRING

The name of the campaign.


Replication Method :

Key-based Incremental

Replication Key :

ModifiedDate

Primary Key :

ID

API endpoint :

Retrieve content areas

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

ID
INTEGER

The content area ID.

Reference:

ModifiedDate
DATE-TIME

The date and time the content area was last modified.

BackgroundColor
STRING

The background color of the content area.

BorderColor
STRING

The color of the border surrounding the content area.

BorderWidth
INTEGER

The pixel width of the border surrounding the content area.

CategoryID
INTEGER

The ID of the folder associated with the content area.

Reference:

Cellpadding
INTEGER

The pixel value of the padding around the content area.

Cellspacing
INTEGER

The pixel value of the spacing for the content area.

Content
STRING

The content contained in a the content area.

CreatedDate
DATE-TIME

The date and time the content area was created.

CustomerKey
STRING

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
STRING

The font family used in the content area.

HasFontSize
BOOLEAN

Indicates whether the content area includes a specified font size or not.

IsBlank
BOOLEAN

Indicates if the content area contains no content.

IsDynamicContent
BOOLEAN

Indicates if the content area contains dynamic content.

IsLocked
BOOLEAN

Indicates if specific email the content area within an Enterprise or Enterprise 2.0 account is locked and cannot be changed by subaccounts.

IsSurvey
BOOLEAN

Indicates whether a specific the content area contains survey questions.

Key
STRING

Specifies key associated with the content area in HTML body. Relates to the email object via a custom type.

Name
STRING

The name of the object or property.

ObjectID
STRING

The content area’s object ID.

Width
INTEGER

The pixel width of the content area.


Replication Method :

Full Table

Primary Key :

_CustomObjectKey

API endpoint :

Retrieve all data extensions

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
STRING

The data extension’s custom object key.

CategoryID
INTEGER

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 id, name, and date fields, these are the fields that will display in Stitch.

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 :

Retrieve emails

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

ID
INTEGER

The email ID.

Reference:

ModifiedDate
DATE-TIME

The date and time the email was last modified.

CategoryID
INTEGER

The ID of the folder containing the email.

Reference:

CharacterSet
STRING

Indicates encoding used in an email message.

ClonedFromID
INTEGER

THe ID of email message from which the specified email message was created.

Reference:

ContentAreaIDs
ARRAY

The IDs of the content areas contained in the email message.

value
INTEGER

The content area ID.

Reference:

email (table), ContentAreaIDs (attribute)

ContentCheckStatus
STRING

Indicates whether content validation has completed for this email message.

CreatedDate
DATE-TIME

The date and time the email was created.

CustomerKey
STRING

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
STRING

Defines preferred email type.

HasDynamicSubjectLine
BOOLEAN

Indicates whether email message contains a dynamic subject line.

HTMLBody
STRING

THe HTML body of an email message.

IsActive
BOOLEAN

Indicates whether the object is active.

IsHTMLPaste
BOOLEAN

Indicates whether email message was created via pasted HTML.

Name
STRING

The name of the object or property.

ObjectID
STRING

The email’s object ID.

PreHeader
STRING

The text used in preheader of email message on mobile devices.

Status
STRING

Defines status of object. Status of an address.

Subject
STRING

The subject area information for a message.

SyncTextWithHTML
BOOLEAN

Makes the text version of an email contain the same content as the HTML version.

TextBody
STRING

Contains raw text body of a message.


Replication Method :

Key-based Incremental

Replication Key :

EventDate

Primary Key :

SendID : EventType : SubscriberKey : EventDate

API endpoint :

Retrieve events

The event table contains info about the following event types:

SendID
INTEGER

The ID of the send associated with the tracking event.

Reference:

EventType
STRING

The type of tracking event. Possible values are:

  • BounceEvent
  • ClickEvent
  • OpenEvent
  • SentEvent
  • UnsubEvent

SubscriberKey
STRING

The ID of the subscriber associated with the event.

Reference:

EventDate
DATE-TIME

The date and time when a tracking event occurred.

URL
STRING

The URL that was clicked.


Replication Method :

Key-based Incremental

Replication Key :

ModifiedDate

Primary Key :

ID

API endpoint :

Retrieve folders

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

ID
INTEGER

The folder ID.

Reference:

ModifiedDate
DATE-TIME

The date and time the folder was last modified.

AllowChildren
BOOLEAN

Specifies whether a data folder can have child data folders.

ContentType
STRING

Defines the type of content contained within a folder.

CreatedDate
DATE-TIME

The date and time the folder was created.

CustomerKey
STRING

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
STRING

A description of the folder.

Name
STRING

Name of the object or property.

ObjectID
STRING

The folder’s object ID.

ParentFolder
INTEGER

Specifies the parent folder for a data folder.

Reference:

Type
STRING

Indicates type of specific list. Possible values are:

  • Public
  • Private
  • Salesforce
  • GlobalUnsubscribe
  • Master

Replication Method :

Key-based Incremental

Replication Key :

ModifiedDate

Primary Key :

ID

API endpoint :

Retrieve lists

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

ID
INTEGER

The list ID.

Reference:

ModifiedDate
DATE-TIME

The date and time the list was last modified.

Category
INTEGER

The ID of the folder that an item is located in.

Reference:

CreatedDate
DATE-TIME

The date and time the list was created.

ObjectID
STRING

The list’s object ID.

ListClassification
STRING

Specifies the classification for a list.

ListName
STRING

The name of a specific list.

Description
STRING

A description of the list.

SendClassification
STRING

Indicates the send classification to use as part of a send definition.

Type
STRING

Indicates type of specific list. Possible values are:

  • Public
  • Private
  • Salesforce
  • GlobalUnsubscribe
  • Master

Replication Method :

Key-based Incremental

Replication Key :

ModifiedDate

Primary Key :

ListID : SendID

API endpoint :

Retrieve list sends

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

ListID
INTEGER

List associated with the send.

Reference:

SendID
INTEGER

The ID of the send associated with the list send.

Reference:

ModifiedDate
DATE-TIME

The date and time the send was last modified.

CreatedDate
DATE-TIME

The date and time the send was created.

CustomerKey
STRING

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
INTEGER

Indicates whether bounces occurred on previous send.

ExistingUnsubscribes
INTEGER

Indicates whether unsubscriptions occurred on previous send.

ForwardedEmails
INTEGER

Number of emails forwarded for a send.

HardBounces
INTEGER

The number of hard bounces associated with a send.

InvalidAddresses
INTEGER

Specifies the number of invalid addresses associated with a send.

ID
INTEGER

The send ID.

MissingAddresses
INTEGER

The number of missing addresses encountered within a send.

NumberDelivered
INTEGER

The number of sent emails that did not bounce.

NumberSent
INTEGER

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
STRING

The send’s object ID.

OtherBounces
INTEGER

Specifies number of Other-type bounces in a send.

SoftBounces
INTEGER

The number of soft bounces associated with a specific send.

UniqueClicks
INTEGER

The number of unique clicks on message.

UniqueOpens
INTEGER

The number of unique opens resulting from a triggered send.

Unsubscribes
INTEGER

The number of unsubscribe events associated with a send.


Replication Method :

Key-based Incremental

Replication Key :

ModifiedDate

Primary Key :

ListID : SubscriberKey

API endpoint :

Retrieve list subscribers

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

ListID
INTEGER

Defines identification for a list the subscriber resides on.

Reference:

SubscriberKey
STRING

The ID of the subscriber associated with the list subscriber.

Reference:

ModifiedDate
DATE-TIME

The date and time the list subscriber was last modified.

CreatedDate
DATE-TIME

The date and time the list subscriber was created.

ID
INTEGER

The list subscriber ID.

ObjectID
STRING

The list subscriber’s object ID.

Status
STRING

Defines the status of a subscriber’s address. Possible values are:

  • Active
  • Bounced
  • Held
  • Unsubscribed
  • Deleted

Replication Method :

Key-based Incremental

Replication Key :

ModifiedDate

Primary Key :

ID

API endpoint :

Retrieve sends

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

ID
INTEGER

The send ID.

Reference:

ModifiedDate
DATE-TIME

The date and time the send was last modified.

CreatedDate
DATE-TIME

The date and time the send was created.

EmailID
INTEGER

The ID of an email message associated with a send.

Reference:

EmailName
STRING

The name of an email message associated with a send.

FromAddress
STRING

The From address associated with the send. This field has been deprecated by Salesforce.

FromName
STRING

The From name associated with the send. This field has been deprecated by Salesforce.

IsAlwaysOn
BOOLEAN

If true, the request can be performed while the system is in maintenance mode.

IsMultipart
BOOLEAN

Indicates whether the email is sent with Multipart/MIME enabled.

SendDate
DATE-TIME

The date on which a send occurred.

SentDate
DATE-TIME

The date on which a send took place.

Status
STRING

Defines status of object. Status of an address.

Subject
STRING

Contains subject area information for a message.


Replication Method :

Key-based Incremental

Replication Key :

ModifiedDate

Primary Key :

ID

API endpoint :

Retrieve subscribers

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

ID
INTEGER

The subscriber ID.

ModifiedDate
DATE-TIME

The date and time the subscriber was last modified.

Addresses
ARRAY

Indicates addresses belonging to a subscriber, used to create, retrieve, update or delete an email or SMS Address for a given subscriber.

Address
STRING

AddressType
STRING

AddressStatus
STRING

subscriber (table), Addresses (attribute)

CreatedDate
DATE-TIME

The date and time the subscriber was created.

CustomerKey
STRING

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
STRING

Contains the email address for a subscriber. Indicates the data extension field contains email address data.

EmailTypePreference
STRING

The format in which email should be sent.

ListIDs
ARRAY

The IDs of the lists the subscriber is a part of.

value
STRING

The list ID.

Reference:

subscriber (table), ListIDs (attribute)

Locale
STRING

Contains the locale information for an Account. If no location is set, Locale defaults to en-US (English in United States).

ObjectID
STRING

The subscriber’s object ID.

PartnerKey
STRING

Unique identifier provided by partner for an object, accessible only via API.

PartnerType
STRING

The partner associated with a subscriber.

PrimaryEmailAddress
STRING

The primary email address for a subscriber.

PrimarySMSAddress
STRING

The primary SMS address for a subscriber. Used to create and update SMS Address for a given subscriber.

PrimarySMSPublicationStatus
STRING

Indicates the subscriber’s modality status.

Status
STRING

Defines status of object. Status of an address.

SubscriberKey
STRING

The ID of the subscriber.

SubscriberTypeDefinition
STRING

Specifies if a subscriber resides in an integration, such as Salesforce or Microsoft Dynamics CRM.

UnsubscribedDate
DATE-TIME

Represents the date subscriber unsubscribed from a list.



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.