Skip to main content
Salesforce Marketing Cloud

Overview

This source syncs marketing data from Salesforce Marketing Cloud (SFMC) using both the Marketing Cloud Engagement REST API and the SOAP API. Authentication uses the OAuth 2.0 client_credentials flow via an installed package.

Authentication

Create an Installed Package in Marketing Cloud:
  1. In Marketing Cloud, go to Setup → Platform Tools → Apps → Installed Packages.
  2. Click New and give the package a name.
  3. Under Components, click Add Component → API Integration → Server-to-Server.
  4. Grant the scopes listed below and save.
  5. Copy the Client ID, Client Secret, and the tenant subdomain from the Authentication Base URI (e.g. mc563885gzs27c5t9-63k636ttgm from https://mc563885gzs27c5t9-63k636ttgm.auth.marketingcloudapis.com/).

Required scopes

AreaScope
Campaignscampaigns_read
Content Builder (assets)documents_and_images_read, saved_content_read
Journey Builderjourneys_read
Automation Studioautomations_read
Email Studio / SOAPlist_and_subscribers_read, tracking_events_read, data_extensions_read

Configuration

KeyRequiredDefaultDescription
client_idOAuth 2.0 client ID from the installed package.
client_secretOAuth 2.0 client secret from the installed package.
subdomainTenant-specific subdomain. Accepts a bare subdomain (mc563885gzs27c5t9-63k636ttgm) or a full URL — the connector parses the subdomain automatically.
account_idMID of the child business unit to target. Omit to use the top-level account.
start_dateISO 8601 lower bound for incremental streams. Required for event streams (sent_events, open_events, click_events, bounce_events, unsub_events). Example: 2024-01-01T00:00:00Z.

Sample configs

Minimal — REST streams only:
client_id: abcdef1234567890abcdef1234567890
client_secret: ABCDEF1234567890abcdef1234567890
subdomain: mc563885gzs27c5t9-63k636ttgm
With child business unit and event streams:
client_id: abcdef1234567890abcdef1234567890
client_secret: ABCDEF1234567890abcdef1234567890
subdomain: mc563885gzs27c5t9-63k636ttgm
account_id: "7281234"
start_date: "2024-01-01T00:00:00Z"

Streams

REST streams

StreamReplicationKeyDescription
campaignsFull tableentity_idMarketing campaigns.
assetsIncremental (modifiedDate)entity_idContent Builder assets — emails, images, and templates.
journeysFull tableentity_idJourney Builder definitions including triggers, goals, and activities.
journey_statisticsFull tableentity_idAggregate send/open/click/bounce metrics per journey, plus per-activity breakdowns.
automationsFull tableentity_idAutomation Studio definitions including schedule and steps.

SOAP streams

StreamReplicationKeyDescription
subscriber_listsFull tableentity_idEmail Studio subscriber lists.
data_extensionsFull tableentity_idData Extension definitions — name, key, sendable flag, and retention settings.
subscribersFull tableentity_idAll subscribers with email address and status.
sendsFull tableentity_idEmail send job summaries with delivered/open/click/bounce counts.
sent_eventsIncremental (EventDate)entity_idIndividual email send records per subscriber. Requires start_date.
open_eventsIncremental (EventDate)entity_idEmail open tracking records per subscriber. Requires start_date.
click_eventsIncremental (EventDate)entity_idLink click records including URL. Requires start_date.
bounce_eventsIncremental (EventDate)entity_idBounce records with category, type, and SMTP details. Requires start_date.
unsub_eventsIncremental (EventDate)entity_idUnsubscribe records per subscriber. Requires start_date.
Event streams use 30-day date windowing to avoid SFMC server-side timeouts on large datasets. The start_date config value (or the EventDate bookmark from a previous sync) is used as the window start.