---
schema_version: "1"
id: be8bcbeef64b9ec1d13451b7210645e1869b26808c6b0b366bc0d47d854468db
title: Salesforce Output Connection
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/analytics/264-0-0/bi_integrate_connectors_output_salesforce.md
canonical_url: https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_connectors_output_salesforce.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: c19406b734de622dea471779eed7cdcb2be60c155dc96bc24d5acd428202a32b
description: Push your prepared dataset data into any Salesforce org from CRM Analytics Salesforce Output connector and Data Prep. With your prepared data back in Salesforce, you can integrate external data, apply the suite of Salesforce automation tools to act on the data, and allow non-CRM Analytics users access to the data through reports and dashboards. External connectors require OAuth 2.0 for server to server communication.
products:
  - CRM Analytics
  - Cross Cloud
release: "264"
---
# Salesforce Output Connection

Push your prepared dataset data into any Salesforce org from CRM Analytics Salesforce Output connector and Data Prep. With your prepared data back in Salesforce, you can integrate external data, apply the suite of Salesforce automation tools to act on the data, and allow non-CRM Analytics users access to the data through reports and dashboards. External connectors require OAuth 2.0 for server to server communication.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/images/icon_note.png)

Note

As of Summer '27, the SOAP API login() call in SOAP API versions 31.0 through 64.0 will no longer be supported and no longer be available. For more information, [SOAP API login() Call in SOAP API Versions 31.0 Through 64.0 Is Being Retired](https://help.salesforce.com/s/articleView?id=release-notes.rn_api_upcoming_retirement_260rn.htm&release=260&language=en_US).

The **Username** and **Password** authentication settings in Salesforce output connectors cease to function after October 27—31, 2026. Until then, data syncs for existing connections still run with warnings in the job logs. After support ends, the data syncs fail.

New Salesforce output connectors require OAuth with Client ID and Client Secret for authentication. You must update existing Salesforce output connectors with Username and Password authentication to use OAuth settings.

Restricted API access isn't supported for Salesforce Output and External connectors. Enable the Use Any API Client permission for the user creating the connector. For more information, see [Manage API Access](https://help.salesforce.com/s/articleView?id=xcloud.security_api_access_control_about.htm&type=5&language=en_US).

Use the [Salesforce External Connections](https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_connectors_salesforce_external_settings.htm&release=264.0.0&type=5 "Use a Salesforce external connector to sync data from another Salesforce org to CRM Analytics. External connectors require OAuth 2.0 for server to server communication.") to sync data from another Salesforce org to CRM Analytics.

## How the Salesforce Output Connector with Output Node Works

The CRM Analytics Salesforce Output connectors allow you to write the outcome of a recipe to any Salesforce org for further analysis, business automation, and expanded access. After you configure an output connector to the Salesforce org, create a recipe using Data Prep. Add an Output node to the recipe, select the Salesforce Output connection, and configure the node with the object, mapping, and other settings. When the recipe runs, CRM Analytics can INSERT, UPDATE, or UPSERT the output dataset to supported objects.

## Set Up an External Client App for OAuth

External client apps (ECA) provide single sign-on (SSO) and use OAuth protocols to authorize external connections.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/images/icon_note.png)

Note

It’s recommended to create a separate Salesforce user account that isn’t assigned to a person to set up a connection. A person’s account can be deactivated when the user leaves your organization, which stops any connections created with the account from functioning.

1. To create an ECA for your ‌organization, from the Salesforce Setup page, enter External in the Quick Find box, and then select **External Client App Manager**.
2. Click **New External Client App**.
3. Enter the basic information.
    1. Enter the name for the ECA to display in the External Client App Manager.
    2. Enter the API name to be used when referring to your app from a program. This field defaults to a version of the app’s name with underscores in place of the spaces.
    3. Enter the contact email for Salesforce to use in case we want to contact you or your support team.
    4. Select **Local** for the Distribution State.
4. Click **Enable OAuth** to configure the OAuth policy.
5. Enter the app settings.
    1. Enter the **Callback URL**. The callback URL is the app URL where you’re embedding the code and the URL can accept the authentication returned from the Salesforce ECA. An example of a callback URL is `https://<3p-domain>/callback.html`.
    2. For **OAUTH Scopes**, select **Manage user data via APIS (api)** and **Access Analytics REST API resources (wave\_api)**. If you have other OAuth needs, select other scopes as needed. For more information, see [OAuth Tokens and Scopes](https://help.salesforce.com/s/articleView?id=xcloud.remoteaccess_oauth_tokens_scopes.htm&language=en_US)
6. For Flow Enablement, select **Enable Client Credentials Flow**. This flow allows for server to server interactions. For more information, see [OAuth 2.0 Client Credentials Flow for Server-to-Server Integration](https://help.salesforce.com/s/articleView?id=xcloud.remoteaccess_oauth_client_credentials_flow.htm&language=en_US)
7. For Security, disable **Require Proof Key for Code Exchange (PKCE) extension for Supported Authorization Flows**.
8. Click **Create**.
9. On the Policies tab, click **Edit**. For OAuth Flows and External Client App Enhancements, ensure **Enable Client Credentials Flow** is enabled. Enter a user email for **Run As**. This user must be a valid execution user.
10. On the Settings tab, click **Consumer Key and Secret** to copy and save the values. You need the consumer key value for the Client Id and the consumer secret value for the Client Secret.

## Enable and Add the Salesforce Output Connector

1. From Setup, in the Quick Find box, enter Analytics, select **Analytics**, and then **Settings**.
2. Select **Enable Salesforce output connection** and then save your changes.
3. In the Data Manager, click the **Connections** tab.
4. Click **New Connection**.
5. Click **Output**.
6. Select **Salesforce Output Connector**.
7. Enter the connection settings.
8. Click **Save & Test**. Save & Test validates your settings by attempting to connect to the source. If the connection fails, CRM Analytics shows possible reasons.

All settings require a value, unless otherwise indicated.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d63230e293">Connection Setting</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d63230e296">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e293 ">Connection Name</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e296 ">Required. Identifies the connection. Use a convention that lets you easily distinguish
              between different connections.</td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e293 ">Developer Name</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e296 ">Required. The API name for the connection. This name can’t include spaces. You can’t change
              the developer name after you create the connection.</td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e293 ">Description</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e296 ">Required. The connector description.</td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e293 ">Authentication Type</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e296 ">Required. The authentication type. Valid values include <code>OAuth</code>.</td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e293 ">Username</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e296 ">
              <p>No longer supported after Winter '27. User name used to connect to external
                Salesforce org.</p>
              <p style="margin-bottom:0;">Required if the authentication type is Password.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e293 ">Password</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e296 ">
              <p>No longer supported after Winter '27. Password for the user specified in
                <dfn>Username</dfn>. Depending on your security settings, append the user’s
                security token to the end of the password. For information about obtaining a
                security token, see <a href="https://help.salesforce.com/HTViewHelpDoc?id=user_security_token.htm&amp;language=en_US" target="_blank">Reset Your Security Token</a>.
              </p>
              <p style="margin-bottom:0;">Required if the
                authentication type is Password.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e293 ">Client Id</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e296 ">
              <p>Required. The client ID for your OAuth connection. </p>
              <p style="margin-bottom:0;">This value is the consumer key from your External Client App.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e293 ">Client Secret</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e296 ">
              <p>Required. The client secret for your OAuth connection.</p>
              <p style="margin-bottom:0;">This value is the consumer secret from your External Client App.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e293 ">Service URL</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e296 ">
              <p>No longer supported after Winter '27. Login URL for the external org. The
                default value uses the generic Salesforce login URL for your org. For an added layer
                of security, update this field to use your org’s My Domain login URL. For a
                production org, use the
                format:<samp class="filepath">https://&lt;<var>MyDomainName</var>.my
                  .salesforce.com/services/Soap/<var>Identifier</var>/<var>VersionNumber</var>.0</samp>For
                example:
              </p>
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>https://mycompany.my.salesforce.com/services/Soap/u/34.0</code></pre>
            </td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e293 ">Domain URL</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d63230e296 ">Required. The My Domain URL for your external Salesforce org. In the external Salesforce org, go to My Domain in Setup.
              The URL format must be <code>https://*.salesforce.com</code></td>

          </tr>
        </tbody>
      </table>

## Push Data to Salesforce

With the Salesforce Output Connector configured, build a Data Prep recipe that merges and transforms the data to push to a Salesforce org. Add an output node and configure it to use the Salesforce Output connector.

![A Data Prep output node configured with a Salesforce output connection.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/resources-global/analytics/images/bi_integrate_salesforce_output_node.png)

1. Select to write to an **Output Connection** (1).
2. Select the connection name of the Salesforce Output connection you created (2).
3. Select the destination Salesforce object (3). Objects available to the User ID used to configure the connector are listed. Supported objects are listed in Considerations.
4. Choose whether to INSERT (add new records), UPDATE (change data of existing records), or UPSERT (add new records and update existing records). (4)
5. If you UPSERT, select a field from the destination object for the External ID to act as the unique record identifier. (5) The default External ID is the connected object’s ID field.
6. Map recipe columns to their equivalent Salesforce object columns. (6) All columns must be mapped to apply the output node. Id is only mapped for UPDATE and UPSERT.
7. Select **Apply**.
8. Save the recipe.

## Salesforce Output Connector Considerations

Keep these behaviors in mind when working with the Salesforce output connector and using a Data Prep recipe output node.

- To troubleshoot unsuccessful or partial failed runs, see Investigate Unsuccessful Salesforce Output Connector Runs.
- You can use an output connection more than once per recipe, but each output node must use a different object. Each output node can use up to the connector's per-run limit independently, but is still subject to the rolling 24-hour limit.
- Output connections are only available for recipes built with Data Prep.
- This connector doesn’t support objects that are the parent or child in a parent-child relationship. If there are two custom objects with a dependency, manually insert the header record, get the header ID, then insert the detail record with those details.
- Sharing descriptors, the ID of any user or group that has access to a record, aren’t included in the output from the source org to the target org.
- This connector supports INSERT, UPDATE, and UPSERT to:
    - Custom objects
    - Salesforce objects:
        - Account
        - AccountContactRelationship
        - AccountForecast
        - AccountProductForecast
        - AccountProductPeriodForecast
        - AccountForecastPeriodMetrics
        - AccountTeamMember
        - Activities
        - AdvAccountForecastFact
        - AdvAccountForecastSetPartner
        - Asset
        - Campaign
        - CampaignMember
        - Cases
        - ContactPointAddress
        - ContactPointEmail
        - ContactPointPhone
        - Contacts
        - CurrencyType
        - Event
        - Leads
        - ObjectTerritory2Association
        - Opportunity
        - OpportunityLineItem
        - OpportunityLineItemSchedule
        - OpportunityTeamMember
        - Order
        - OrderItem
        - Product2
        - ProgramRebateTypPayoutSrc
        - RebateMemberProductAggregate
        - RebateProgramMemberPayout
        - RebateProgramPayoutPeriod
        - Task
        - TransactionJournal
    - Salesforce Industries objects:
        - AccountServicePreference (Health Cloud)
        - Claim (Automotive Cloud, Financial Services Cloud, and Manufacturing Cloud)
        - ClaimItem (Automotive Cloud, Financial Services Cloud, and Manufacturing Cloud)
        - QuoteLineItem (Commerce Cloud)
        - SalesAgreement (Manufacturing Cloud)
        - Visit (Consumer Goods Cloud)
- To output null measure values to Salesforce, see Enable Null Measure Handling. To output null dimension values, add a [bucket transformation](https://help.salesforce.com/s/articleView?id=sf.bi_integrate_recipe_transformation_bucket_dimension.htm&language=en_US) for each dimension column with nulls, select **Bucket null values**, and set the value N/A.

- **[Troubleshoot an Unsuccessful Salesforce Output Connector Run](https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_troubleshoot_output_workbench.htm&release=264.0.0&type=5)**  
    The CRM Analytics Salesforce Output Connector pushes data from CRM Analytics into a Salesforce org as a Bulk API job. If a portion of the data push fails, use Salesforce Setup and Postman or cURL to troubleshoot.