> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sync.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Salesforce Marketing Cloud

export const CommonDatasourceMoreInformation = ({datasource = "the data source", advancedurl = "", siteName = "CData Sync", driverVersion = ""}) => {
  return <>
      <p>
        For more information about interactions between {siteName} and {datasource}, see{' '}
        <a href={`https://cdn.cdata.com/help/${advancedurl}${driverVersion}/synch/default.htm`}>
          {datasource} Connector for {siteName}
        </a>.
      </p>
    </>;
};

export const CommonAuthSchemeBasic = ({siteName = "CData Sync", siteNameShort = "Sync", datasource = "the data source"}) => {
  return <>
      <p>To connect with your user credentials, set the following properties:</p>
      <ul>
        <li><strong>Auth Scheme:</strong> Select <strong>Basic</strong>.</li>
        <li><strong>User:</strong> Enter the username that you use to authenticate to your {datasource} account.</li>
        <li><strong>Password:</strong> Enter the password that you use to authenticate to your {datasource} account.</li>
      </ul>
    </>;
};

export const CommonAuthSchemeOauthCustom = ({siteName = "CData Sync", siteNameShort = "Sync", datasource = "the data source"}) => {
  return <>
      <p>To connect with OAuth custom credentials, specify the following properties:</p>
      <ul>
        <li><strong>Auth Scheme:</strong> Select <strong>OAuth</strong>.</li>
        <li><strong>OAuth Client Id:</strong> Enter the client Id that you were assigned when you registered your application with an OAuth authorization server.</li>
        <li><strong>OAuth Client Secret:</strong> Enter the client secret that you were assigned when you registered your application with an OAuth authorization server.</li>
      </ul>
    </>;
};

export const CommonDatasourceAddConnector = ({datasource = "the data source", title = "the connector", destination = false, siteNameShort = "Sync"}) => {
  return <>
      <p>
        To enable {siteNameShort} to use data from {datasource}, you first must add the
        connector, as follows:
      </p>
      <ol>
        <li>Open the <strong>Connections</strong> page of the {siteNameShort} dashboard.</li>
        <li>Click <strong>Add Connection</strong> to open the <strong>Select Connectors</strong> page.</li>
        <li>
          Click the <strong>{destination ? "Destinations" : "Sources"}</strong> tab and locate
          the <strong>{title}</strong> row.
        </li>
        <li>
          Click the <strong>Configure Connection</strong> icon at the end of that row to open
          the <strong>New Connection</strong> page. This action opens the{' '}
          <strong>Add Connection</strong> dialog box.
          <br />
          <strong>Note:</strong> If the <strong>Configure Connection</strong> icon is not
          available, click the <strong>Download Connector</strong> icon to install
          the {title} connector.
        </li>
        <li>Enter a name for your connection in the <strong>Add Connection</strong> dialog box.</li>
        <li>Click <strong>Add</strong> to open the <strong>Settings</strong> tab for your connector.</li>
      </ol>
      <p>
        For more information about installing new connectors, see{' '}
        <a href="../connections">Connections</a>.
      </p>
    </>;
};

export const CommonDatasourceIntroDestination = ({datasource = "the data source", siteName = "CData Sync"}) => {
  return <p>
      You can use the {datasource} connector from the {siteName} application to move data
      from any supported source to the {datasource} destination. To do so, you need to add
      the connector, authenticate to the connector, and complete your connection.
    </p>;
};

export const driverVersion = "M";

export const siteNameShort = "Sync";

export const siteName = "CData Sync";

<CommonDatasourceIntroDestination datasource="Salesforce Marketing Cloud" siteName={siteName} />

## Add the Salesforce Marketing Cloud Connector

<CommonDatasourceAddConnector datasource="Salesforce Marketing Cloud" title="Salesforce Marketing Cloud" destination={true} siteNameShort={siteNameShort} />

## Authenticate to Salesforce Marketing Cloud

After you add the connector, you need to set the required properties.

**Subdomain:** Enter the subdomain of your Salesforce Marketing Cloud API.

Salesforce Marketing Cloud supports two API schema types. Select your schema below to proceed to the relevant section for your schema.

* [**SOAP**](#soap-api) (default)
* [**REST**](#rest-api)

### SOAP API

To connect to Salesforce Marketing Cloud through the SOAP API, specify the following properties:

* **Schema:** Select **SOAP**.
* **Auth Scheme:** Select the [authentication method](#soap-authentication-methods) that you want to use to connect to Salesforce Marketing Cloud.
  * [**OAuth**](#oauth-soap)
  * [**OAuth Client**](#oauth-client-soap)
  * [**Basic**](#basic) (default)

### REST API

To connect to Salesforce Marketing Cloud through the REST API, specify the following properties:

* **Schema:** Select **REST**.
* **Auth Scheme:** Select the [authentication method ](#rest-authentication-methods) that you want to use to connect to Salesforce Marketing Cloud.
  * [**OAuth**](#oauth-rest) (default)
  * [**OAuth Client**](#oauth-client-rest)

## SOAP Authentication Methods

### OAuth

<CommonAuthSchemeOauthCustom siteName={siteName} />

After you specify the authentication scheme, [complete the remaining steps](#complete-your-connection) for establishing your connection.

### OAuth Client {/* oauth-client-soap */}

To connect with an OAuth client, specify the following properties:

* **Auth Scheme:** Select **OAuthClient**.
* **OAuth Client Id:** Enter the client Id that you were assigned when you registered your application with an OAuth authorization server.
* **OAuth Client Secret:** Enter the client secret that you were assigned when you registered your application with an OAuth authorization server.

After you specify the authentication scheme, [complete the remaining steps](#complete-your-connection) for establishing your connection.

### Basic

<CommonAuthSchemeBasic siteName={siteName} datasource="Salesforce Marketing Cloud" />

After you specify the authentication scheme, [complete the remaining steps](#complete-your-connection) for establishing your connection.

## REST Authentication Methods

### OAuth

<CommonAuthSchemeOauthCustom siteName={siteName} />

* **User Legacy Authentication:** Select whether you want the connection to be made to the Salesforce Marketing Cloud REST API using legacy authentication. By default, the **Enable** checkbox is not selected.

After you specify the authentication scheme, [complete the remaining steps](#complete-your-connection) for establishing your connection.

### OAuth Client {/* oauth-client-rest */}

To connect with an OAuth client, specify the following properties:

* **Auth Scheme:** Select **OAuthClient**.
* **OAuth Client Id:** Enter the client Id that you were assigned when you registered your application with an OAuth authorization server.
* **OAuth Client Secret:** Enter the client secret that you were assigned when you registered your application with an OAuth authorization server.
* **User Legacy Authentication:** Select whether you want the connection to be made to the Salesforce Marketing Cloud REST API using legacy authentication. By default, the **Enable** checkbox is not selected.

After you specify the authentication scheme, [complete the remaining steps](#complete-your-connection) for establishing your connection.

## Salesforce Marketing Cloud as a Reverse ETL Destination

In the {siteNameShort} application, you can configure Salesforce Marketing Cloud as a reverse ETL destination so that it can receive processed data from your source database or warehouse.

As a reverse ETL destination, Salesforce Marketing Cloud supports all three transfer modes (**Insert**, **Upsert**, and **Update**).

### Supported Schemas

In {siteNameShort}, the Salesforce Marketing Cloud destination supports two schemas: SOAP and REST. For both of these schemas, **Insert** mode behaves the same for all tables and requires no special configuration. However, the behavior of the **Update** and **Upsert** modes differs based on schema, as explained below.

**SOAP Schema (default)**

* **Update** mode is supported for all standard and custom tables. For the AccountUser table, you must specify both primary keys as the delta snapshot key when you configure a task's column mapping. (The *delta snapshot key* is the column (or set of columns) that are used to track changes when {siteNameShort} processes data from multiple snapshots of a dataset.) For all other tables, you can specify one key from all of a table's primary keys as the delta snapshot key.
* **Upsert** mode is supported only for the standard tables Subscribers, List, Send, and Role, as well as for all custom tables and data extensions. For this transfer mode, you must specify all of the table's primary keys as the delta snapshot key when you configure a task's column mapping.

**REST Schema**

* **Update** mode is supported for all tables. You can specify one key from all of the table's primary keys as the delta snapshot key when you configure a task's column mapping.
* **Upsert** mode is supported only for the Contacts table. You can one key from all of the table's primary keys as the delta snapshot key when you configure a task's column mapping.

### Transfer-Modes Summary

**SOAP Schema**

|  Mode  | Supported                                                                                         | Key Used for Matching                                                                                 | Notes                                            |
| :----: | :------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------- | :----------------------------------------------- |
| Insert | Yes                                                                                               | N/A (always creates new records)                                                                      | Inserts new records.                             |
| Update | Yes                                                                                               | The AccountUser table requires both primary keys; other tables use any one key from all primary keys. | Updates existing records.                        |
| Upsert | Yes for the Subscribers, List, Send, and Role tables; also for all custom tables/data extensions. | All the table's primary keys must be specified as the delta snapshot key.                             | Inserts or updates records depending on a match. |

**REST Schema**

|  Mode  | Supported                         | Key Used for Matching                            | Notes                                            |
| :----: | :-------------------------------- | :----------------------------------------------- | :----------------------------------------------- |
| Insert | Yes                               | N/A (always creates new records)                 | Inserts new records.                             |
| Update | Yes                               | Any one key of the table's primary keys.         | Updates existing records.                        |
| Upsert | Yes (for the Contacts table only) | You can use any one of the table's primary keys. | Inserts or updates records depending on a match. |

For more information about reverse ETL jobs, see [Reverse ETL](../../jobs/reverse-etl).

## Complete Your Connection

To complete your connection:

1. Define advanced connection settings on the **Advanced** tab. (In most cases, though, you should not need these settings.)
2. If you authenticate with OAuth, click **Connect to Salesforce Marketing Cloud** to connect to your Salesforce Marketing Cloud account.
3. Click **Create & Test** to create your connection.

## More Information

<CommonDatasourceMoreInformation datasource="Salesforce Marketing Cloud" advancedurl="FE" siteName={siteName} driverVersion={driverVersion} />
