Preparation and Assumptions
This recipe requires the following:
A Segment workspace with Reverse ETL enabled
Your Salesforce instance
Your Customer model in Snowflake (here’s our example):
For our scenario, our sales team has recently adopted Salesforce and would like to easily import Business and Reseller customers into their new CRM. We are going to use Segment’s Reverse ETL to accomplish this.
Step 1: Set up the Reverse ETL model
First we add our Snowflake instance as a Source in Segment (Click the Add Source button and follow the instructions with your Connection information):
After adding our Snowflake instance as a source, the next step is to add our Model:
Click the Add Model to bring up the SQL Editor. We are going to write our SQL Query to get all customers who are “customer_type” of “reseller” or “business.” (For the sake of this example, we will also only limit to 5 customers.)
After we are satisfied with the SQL query, hit “Next” and give the model a name and set the schedule for how often you want this model to run.
After saving the model, we will see a summary on the Model Overview screen:
Step 2: Add a Destination for our Model
On the left side panel, click on Destinations. You’ll get the following:
Click on the “Add Destination” button to view the Destinations Catalog:
Click on Salesforce (Actions), and you’ll be presented several dialogs in order to add and configure Salesforce. After successfully adding Salesforce as a destination, we are going to add a Mapping from our Model to our Destination. Click the “Add Mapping” button to start.
Our sales team has requested that these customers from our model be added as contacts so that they can record when our team interacts with each of them. First, we will use the dropdown to select our “Business and Reseller Customers” model and then select the Contact object to map to. Click Next and we will be taken to the Add Mapping page:
The first thing we will do is select what operation we want to perform for each row. Since our model can change based on what information our customers provide us, we will select the “Added or updated rows”, this will sync any new records or updated records.
Next we will scroll down to the mappings section and map columns from our model to fields in Salesforce:
For “Operation”, select “Update or create a record if one doesn’t exist.”
For “Record Matchers”, use “Email” and map it to our Email column from our model (properties.EMAIL).
For the reminder of the fields, simply map the column from our model to the corresponding field in Salesforce’s Contact object.
Once you are done, click the “Save Mapping” button, and you will be returned to the Destinations page, click the toggle button to enable your Mapping to sync.
Your Mapping is now saved, and will run automatically the next time your model is updated. You can manually start an extract of your model by selecting your model on the “Sources” page, and when you reach the Model Overview page, clicking “Start Manual Extract”.
Once the model is working and syncing, you can come back to the Model Overview page any time to see the status of your Model. In the screenshot below you might notice that our model is syncing to both Salesforce and Mixpanel; you can add as many additional destinations as you like by simply repeating Step 2 for each desired destination.
Here is the result in our Contacts in Salesforce with matching Extraction / Last Modified time:
It’s easy to set up a sync of your customer data from Snowflake to Salesforce using Segment’s Reverse ETL. And it’s even easier to use Segment to add additional tools to this sync process. How much maintenance time could you save?