Connect Reverse ETL Source to Salesforce Bulk Upload Beta
3 minute read
This guide takes you through the steps to connect a Reverse ETL source to your Salesforce Bulk Upload destination.
Setup
- Set up and configure your Reverse ETL source.
- In the Overview tab of the source page, click Add destination > Create new destination. You can also select an already-configured destination here.
- From the list of destinations, select Salesforce Bulk Upload and click Continue.
- Specify a unique name to identify this destination in RudderStack.
- In the Event delivery account section, click Select to choose an existing Salesforce account from the list, then skip to Step 7.
- To add a new account, click Add account, select OAuth, and specify the following settings:
| Setting | Description |
|---|---|
| Account Name | Specify a unique account name |
| Environment type | Select the Salesforce environment type — Production or Sandbox |
| Connect account | Click Connect account, sign in to Salesforce, and give RudderStack the required permissions to access your Salesforce account. |
- Click Continue to configure the mapping settings.
Mapping settings
Under Where do you want to sync data to?, select the Salesforce object. Click Reload objects to refresh the list of available objects.
Sync mode
RudderStack supports only Upsert mode for this integration.
Cursor column settings
| Setting | Description |
|---|---|
| Use Cursor Column | Toggle on to use a cursor column for incremental syncs |
| Cursor Column | Specify the appropriate cursor column from the dropdown |
Map identifiers
| Setting | Description |
|---|---|
| Choose identifier | Select a warehouse column to uniquely identify your records and map it to the relevant Salesforce field. |
| Map field | Configure which warehouse column maps to which Salesforce field. |

Sync settings
RudderStack determines how and when to run a sync based on the sync schedule you set for your Reverse ETL connection.
| Schedule type | Description |
|---|---|
| Basic | Run syncs at a given time interval and specified time (in UTC). |
| CRON | Run syncs based on a specified CRON expression (in UTC). |
| Manual | Run syncs manually. |
Sync observability settings
| Setting | Description | ||||||
|---|---|---|---|---|---|---|---|
| Retain sync logs | 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:
| ||||||
| Retry failed records | This setting is toggled on by default and causes RudderStack to continually retry sending the failed records. |
Storing sync logs and snapshot tables may incur additional warehouse costs.
Enable sync
Once the setup is complete, click Enable to activate your destination and start syncing data at the specified interval.

Null value handling
Upsert syncs handle missing and null mapped values differently:
| Warehouse / synced value | CSV cell | Salesforce behavior on update |
|---|---|---|
Explicit null | #N/A | Clears the field |
| Field absent from the synced data | Empty | Leaves the existing value unchanged |
Salesforce Bulk API ignores empty cells on update and only clears a field when the cell is#N/A. See Valid CSV Record Rows.
FAQ
Why can’t I add a Reverse ETL source from the destination page?
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.
See Reverse ETL FAQ for more information.