How to integrate NPS into Salesforce CRM

Ideas
Salesforce
NPS
Customer
Tactics
How to integrate NPS into Salesforce CRM blog trayai

Customer marketing starts with uncovering the most delighted customers. But this is a challenge for most organizations. If you have lots of clients that are happy, how do you find the thrilled ones that will jump at the opportunity to sing your praises?

● Who would be willing to submit that product review on G2 Crowd?

● Who will participate in that customer success story?

● How do you make sure that you don't burn out your most supportive customers with too many requests?

These are just some of the questions we would ask ourselves regularly. Usually, we were too swamped to create a better way to do this. So we'd "get scrappy" and interrupt our colleagues in Sales or Customer Success to search for happy customers. We'd get lucky sometimes and uncover a great champion, but often we'd strike out. I had a hunch that there was a silent majority of happy customers that, if asked, would participate in customer programs.

A better way: Using the Tray platform to integrate and automate net promoter score into our CRM.

Step-by-step: how to integrate and automate net promoter score into your CRM

We were already sending customer satisfaction surveys on a monthly basis. The survey response data was sitting in Promoter.io but nowhere else. While we use Salesforce as our CRM and the single source of truth for all customer related data, we didn't have any customer success fields in Salesforce. Here are the steps I went through:

  1. Decide which object (or tab) in Salesforce to store customer satisfaction data. Since we survey users, we decided to add customer satisfaction data to the Contact object. You might consider adding it to the Account object instead. We also send surveys to free-trial users, so that meant that we also had to add customer satisfaction fields to the Leads object.

  2. Decide which fields from your customer satisfaction survey that you want to see in your CRM. For us, we wanted to keep it simple and add just three fields: customer satisfaction response date, net promoter score (NPS), and customer satisfaction comment.

  3. Determine if you’ll need to add a batch-update to bring in historical data. You can set up a Tray workflow to listen for any new survey responses. If you have responses that have happened in the past, then you can set-up a separate, one-time workflow to populate your CRM with data from the past. See the bonus section at the bottom of this post for a step-by-step on setting up a one-time batch update.

Here’s what our continuous workflow looks like:

43d444fa411f8768e279c7e1aaf6b54a7fb3abaa integrate-nps-into-salesforce-2

Workflow step 1: Webhook trigger

Because the customer survey tool we use, Promoter.io, supports webhooks, we can use this trigger. It listens for changes in data, then automatically posts that data to a Target URL that Tray uses to kick-off a workflow.

0426aecc74cc69796d422f232b79ee055fb377a6 integrate-nps-into-salesforce-3

Our Promoter.io webhook details the Supported Events (e.g., changes in fields) and the target URL (pixelated out in this screenshot for privacy reasons).

2111e1efd2526c5d06e4d0087b2fe1eaff882e71 integrate-nps-into-salesforce-4

Step 2. Test lead?

This boolean-condition-4 is an optional step, but a good idea for testing your workflow. With this test, I can spot check data for a particular user, based on an identifier like her email address, is getting passed correctly from Promoter to Salesforce. The Boolean Condition is "if/then" conditional logic.

709b46e756891ff7332f43fb0e5541199a86d398 integrate-nps-into-salesforce-5

Step 3. Get contacts

This salesforce-4 step finds the Salesforce record based on an email from Promoter.io and used the Salesforce Contact ID.

ea2cbc9c620552234de8a412d25a3e0b83ee545a integrate-nps-into-salesforce-6

Step 4. Contact exists?

This boolean-condition-2 step is optional. Because we send surveys to people that could exist in our Salesforce instance as a lead, a contact or perhaps don't exist yet in Salesforce, we need first to check to see if we have them in Salesforce and check for the object where they live. This is important so we don't create duplicate data.

ac3254526dc0d26680e74a5eddd3e804f8741248 integrate-nps-into-salesforce-7

Step 5. Get leads

This salesforce-2 step finds the lead record in salesforce based on email address and also grabs the salesforce Lead ID.

883e02df4f0462db2f3c7a6b2d8ec1a3448cd284 integrate-nps-into-salesforce-8

Step 6. Leads exist?

Similar to the "Contacts Exist" step, this boolean-condition-1 step checks to see that the lead exists in Salesforce. By using a boolean to see if the lead is not equal to zero (it exists), then go to the TRUE side of the branch to and execute the next step which is to Update the Lead (salesforce-1). If the lead equals zero (doesn't exist), then go to the FALSE side of the branch and execute the next step.

551395b77f1cff6227c818cf67fc392c97f863a1 integrate-nps-into-salesforce-9

Step 7. Get user by email

This step, Intercom-1, gets the user by email from our customer chat software (Intercom). In a perfect world, we'd have all Intercom data in Salesforce and visa-verse.

b44b4fee6a3d9610d8b59770f399b00991554742 integrate-nps-into-salesforce-10

Step 8. Last name exists?

In this step, Boolean-condition-5, we're using our old friend the boolean connector to determine if the last name in Promoter.io exists in the Salesforce lead object and then if we don't have the last name to go and get it out of Intercom, and if we do, create the lead by adding the email, first name, last name, and company name.

9d98c46f4c43039d423cea93ae18a777bdc1c546 integrate-nps-into-salesforce-11

Step 9. Update lead

This, folks, is what we’ve been working towards. Now that we know exactly where to put the data in Salesforce, we can now add the data from Promoter.io to Salesforce. Here, we're updating the Salesforce custom field NPS_Score_c (my naming) with the data from Promoter.io webhook. (body.data.score). Similarly, we’re updating the custom field “Cust Sat Comment” with the “body.data.comment” value. Finally, we're adding the body.data.posted_date value from Promoter.io to Salesforce’s “Cust sat response date.”

7f1c23ac224922f69cc223204cf7c1aba3a5a2aa integrate-nps-into-salesforce-12

Step 10. Update contact

Similar to the “update lead,” here we’re mapping the values from Promoter to the corresponding ones in Salesforce. Once mapped, anytime there is a new survey response Salesforce will get automatically populated.

42c59fe6f2a21463a804e3ab96308ef3d5d01aba integrate-nps-into-salesforce-13

Touchdown: NPS in a CRM report

Now we’ve reached the goal! We have one master report in Salesforce with customer satisfaction survey data and other data that updates automatically. A 20-minute investment in getting this setup has saved me considerable time in looking for our happiest customers and has improved the quality of our customer marketing programs.

Bonus Round: Batch-update Workflow

Here’s the full view of our workflow to add historical data from Promoter.io to Salesforce. Only the first three steps are different than the above continuous workflow.

47a77f1f9da7b473a99d66c4859b9bea71a7d099 integrate-nps-into-salesforce-15

Workflow Step 1. Manual trigger

This one is pretty self-explanatory. This is a useful trigger to use for test workflows or execute a one-time workflow. To run it you just press the "RUN WORKFLOW NOW" button. Once we update the historicals, there is no need for this workflow. The continuous workflow will take care of any future data flows.

Step 2. Export data to a CSV file and Paste Into Google Sheets

One of the fastest ways to get historical data in is to export it out of your customer survey tool to a CSV, then copy and paste the data into Google Sheets. You’ll notice in the screenshot that I only needed six fields.

5db41a7634f9e85d894a9c6828c43155e444d975 integrate-nps-into-salesforce-16

Step 3. Google Sheet Integration - Promoter CSV

Tray offers a handy Google Sheets connector that sucks data into your workflow. This step gets data from each row. We just need to specify the Worksheet name and the max number of rows, so it knows when to stop and whether or not there is a title row.

273e60e1783cd750868ad7b2b706547b6f30e2d1 integrate-nps-into-salesforce-17

4. Loop Collection

In this step, the Loop operator runs through the Google Sheet, row by row, sifts through the data, and moves it through the appropriate workflow branches. The remaining steps in this batch workflow are identical to the ones in the continuous workflow. Tray has a convenient feature to "Clone" a workflow which is what we did. Then we just removed the first Webhook trigger step and replaced it with above three steps.

10751e2f0ed1e7a67075c3a970767597854112d5 integrate-nps-into-salesforce-18

In Summary: In 20 minutes you can have a "happiest customer detection system."

A big part of marketing is automating away tedious tasks so that can focus your time and resources on higher-value work.

Subscribe to our blog

Privacy Policy