<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>RudderStack Docs – Salesforce Bulk Upload Destination</title><link>https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/</link><description>Recent content in Salesforce Bulk Upload Destination on RudderStack Docs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/index.xml" rel="self" type="application/rss+xml"/><item><title>Destinations: Connect Reverse ETL Source to Salesforce Bulk Upload</title><link>https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/</guid><description>
&lt;p>This guide takes you through the steps to connect a &lt;a href="https://www.rudderstack.com/docs/sources/reverse-etl/" >Reverse ETL source&lt;/a> to your Salesforce Bulk Upload destination.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="setup" data-heading="Setup" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/" data-title="Connect Reverse ETL Source to Salesforce Bulk Upload" -->
&lt;h2 id="setup">Setup&lt;/h2>&lt;ol>
&lt;li>Set up and configure your Reverse ETL source.&lt;/li>
&lt;li>In the &lt;strong>Overview&lt;/strong> tab of the source page, click &lt;strong>Add destination&lt;/strong> &amp;gt; &lt;strong>Create new destination&lt;/strong>. You can also select an already-configured destination here.&lt;/li>
&lt;li>From the list of destinations, select &lt;strong>Salesforce Bulk Upload&lt;/strong> and click &lt;strong>Continue&lt;/strong>.&lt;/li>
&lt;li>Specify a unique name to identify this destination in RudderStack.&lt;/li>
&lt;li>In the &lt;strong>Event delivery account&lt;/strong> section, click &lt;strong>Select&lt;/strong> to choose an existing Salesforce account from the list, then skip to &lt;strong>Step 7&lt;/strong>.&lt;/li>
&lt;li>To add a new account, click &lt;strong>Add account&lt;/strong>, select &lt;strong>OAuth&lt;/strong>, and specify the following settings:&lt;/li>
&lt;/ol>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Setting&lt;/th>
&lt;th style="text-align:left">&lt;div style="width: 350px;">Description&lt;/div>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Account Name&lt;/td>
&lt;td style="text-align:left">Specify a unique account name&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Environment type&lt;/td>
&lt;td style="text-align:left">Select the Salesforce environment type — &lt;strong>Production&lt;/strong> or &lt;strong>Sandbox&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Connect account&lt;/td>
&lt;td style="text-align:left">Click &lt;strong>Connect account&lt;/strong>, sign in to Salesforce, and give RudderStack the required permissions to access your Salesforce account.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;ol start="7">
&lt;li>Click &lt;strong>Continue&lt;/strong> to configure the &lt;a href="#mapping-settings" >mapping settings&lt;/a>.&lt;/li>
&lt;/ol>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="mapping-settings" data-heading="Mapping settings" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/" data-title="Connect Reverse ETL Source to Salesforce Bulk Upload" -->
&lt;h2 id="mapping-settings">Mapping settings&lt;/h2>&lt;p>Under &lt;strong>Where do you want to sync data to?&lt;/strong>, select the Salesforce object. Click &lt;strong>Reload objects&lt;/strong> to refresh the list of available objects.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="sync-mode" data-heading="Sync mode" data-level="3" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/" data-title="Connect Reverse ETL Source to Salesforce Bulk Upload" -->
&lt;h3 id="sync-mode">Sync mode&lt;/h3>&lt;p>RudderStack supports only &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-modes/#upsert-mode" >Upsert mode&lt;/a> for this integration.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="cursor-column-settings" data-heading="Cursor column settings" data-level="3" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/" data-title="Connect Reverse ETL Source to Salesforce Bulk Upload" -->
&lt;h3 id="cursor-column-settings">Cursor column settings&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Setting&lt;/th>
&lt;th style="text-align:left">&lt;div style="width: 350px;">Description&lt;/div>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Use Cursor Column&lt;/td>
&lt;td style="text-align:left">Toggle on to use a &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/cursor-column-support/" >cursor column&lt;/a> for incremental syncs&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Cursor Column&lt;/td>
&lt;td style="text-align:left">Specify the appropriate cursor column from the dropdown&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="map-identifiers" data-heading="Map identifiers" data-level="3" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/" data-title="Connect Reverse ETL Source to Salesforce Bulk Upload" -->
&lt;h3 id="map-identifiers">Map identifiers&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Setting&lt;/th>
&lt;th style="text-align:left">&lt;div style="width: 350px;">Description&lt;/div>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Choose identifier&lt;/td>
&lt;td style="text-align:left">Select a warehouse column to uniquely identify your records and map it to the relevant Salesforce field.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Map field&lt;/td>
&lt;td style="text-align:left">Configure which warehouse column maps to which Salesforce field.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/event-stream-destinations/salesforce-bulk-upload/mappings.webp" href="https://www.rudderstack.com/docs/docs/images/event-stream-destinations/salesforce-bulk-upload/mappings.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/event-stream-destinations/salesforce-bulk-upload/mappings.webp"
alt="Mapping settings"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="sync-settings" data-heading="Sync settings" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/" data-title="Connect Reverse ETL Source to Salesforce Bulk Upload" -->
&lt;h2 id="sync-settings">Sync settings&lt;/h2>
&lt;p>RudderStack determines how and when to run a sync based on the &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-schedule-settings/" >sync schedule&lt;/a> you set for your Reverse ETL connection.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Schedule type&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Basic&lt;/td>
&lt;td style="text-align:left">Run syncs at a given time interval and specified time (in UTC).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">CRON&lt;/td>
&lt;td style="text-align:left">Run syncs based on a specified CRON expression (in UTC).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Manual&lt;/td>
&lt;td style="text-align:left">Run syncs manually.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="sync-observability-settings" data-heading="Sync observability settings" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/" data-title="Connect Reverse ETL Source to Salesforce Bulk Upload" -->
&lt;h4 id="sync-observability-settings">Sync observability settings&lt;/h4>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Setting&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Retain sync logs&lt;/td>
&lt;td style="text-align:left">This setting is toggled on by default and instructs RudderStack to store the sync logs in your warehouse. You can also configure the below settings: &lt;br />&lt;br />&lt;table>&lt;tr>&lt;th width="20%">Setting&lt;/th>&lt;th width="80%">Description&lt;/th>&lt;/tr>&lt;tr>&lt;td>Sync log retention&lt;/td>&lt;td>Specify the retention period of the &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-observability/#sync-logs" >sync logs&lt;/a> in your warehouse. &lt;br />&lt;br />If you set it to 1, then RudderStack deletes any sync log older than a day (in UTC time). &lt;/td>&lt;/tr>&lt;tr>&lt;td>Snapshot table retention&lt;/td>&lt;td>Specify the number of &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-observability/#snapshot-table-schema" >snapshot tables&lt;/a> to retain. &lt;/td>&lt;/tr>&lt;/table>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Retry failed records&lt;/td>
&lt;td style="text-align:left">This setting is toggled on by default and causes RudderStack to continually &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-observability/#retry-failed-records" >retry sending the failed records&lt;/a>.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote class="warning">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/warning.svg alt="warning" loading="lazy" decoding="async" class="img__small" style="
margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">Storing sync logs and snapshot tables may incur additional warehouse costs.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="enable-sync" data-heading="Enable sync" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/" data-title="Connect Reverse ETL Source to Salesforce Bulk Upload" -->
&lt;h2 id="enable-sync">Enable sync&lt;/h2>&lt;p>Once the setup is complete, click &lt;strong>Enable&lt;/strong> to activate your destination and start syncing data at the specified interval.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/event-stream-destinations/salesforce-bulk-upload/enable-destination.webp" href="https://www.rudderstack.com/docs/docs/images/event-stream-destinations/salesforce-bulk-upload/enable-destination.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/event-stream-destinations/salesforce-bulk-upload/enable-destination.webp"
alt="Enable Salesforce Bulk Upload destination"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="null-value-handling" data-heading="Null value handling" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/" data-title="Connect Reverse ETL Source to Salesforce Bulk Upload" -->
&lt;h2 id="null-value-handling">Null value handling&lt;/h2>&lt;p>Upsert syncs handle missing and null mapped values differently:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Warehouse / synced value&lt;/th>
&lt;th style="text-align:left">CSV cell&lt;/th>
&lt;th style="text-align:left">Salesforce behavior on update&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Explicit &lt;code>null&lt;/code>&lt;/td>
&lt;td style="text-align:left">&lt;code>#N/A&lt;/code>&lt;/td>
&lt;td style="text-align:left">Clears the field&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Field absent from the synced data&lt;/td>
&lt;td style="text-align:left">Empty&lt;/td>
&lt;td style="text-align:left">Leaves the existing value unchanged&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/info.svg loading="lazy" alt="info" decoding="async" class="img__small" style="margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">Salesforce Bulk API ignores empty cells on update and only clears a field when the cell is &lt;code>#N/A&lt;/code>. See &lt;a href="https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/datafiles_csv_valid_record_rows.htm" >Valid CSV Record Rows&lt;/a>.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="faq" data-heading="FAQ" data-level="2" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/" data-title="Connect Reverse ETL Source to Salesforce Bulk Upload" -->
&lt;h2 id="faq">FAQ&lt;/h2>&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="why-cant-i-add-a-reverse-etl-source-from-the-destination-page" data-heading="Why can&amp;rsquo;t I add a Reverse ETL source from the destination page?" data-level="4" data-permalink="https://www.rudderstack.com/docs/destinations/reverse-etl-destinations/salesforce-bulk-upload/connect-retl-source/" data-title="Connect Reverse ETL Source to Salesforce Bulk Upload" -->
&lt;h4 id="why-cant-i-add-a-reverse-etl-source-from-the-destination-page">Why can&amp;rsquo;t I add a Reverse ETL source from the destination page?&lt;/h4>&lt;p>The Reverse ETL feature supports only source-driven pipeline configuration. It means that you must configure a Reverse ETL source in RudderStack and then connect it to a new or existing destination. Note that this destination should not be connected to any other source.&lt;/p>
&lt;p>See &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/faq/" >Reverse ETL FAQ&lt;/a> for more information.&lt;/p>
&lt;br /></description></item></channel></rss>