This post is intended as a practical postscript to A Quick Refresher on Net Promoter Score (NPS), and dives right into the details of building your own NPS flow. If you need some context and background on NPS, please read the NPS Refresher post first!
When it comes to understanding the customer satisfaction and brand reputation associated with a product or service, marketers love Net Promoter Score (NPS). But teams already invested in messaging tools like Intercom and Mailchimp often want to experiment with NPS before migrating to a fancy paid platform like Delighted, Wootric, and Promoter.io—which get costly when sending large volumes of surveys or attempting to sync survey data with other tools in the marketing stack.
That's why Familian&1 helps its clients use Typeform, Google Sheets and Zapier to build NPS surveys on the fly, visualize NPS trends, and send survey-based tags and comments back into an existing marketing stack—all without breaking the bank. In the rest of this post we'll walk through each step of our cost-effective NPS flow, and a few things to keep in mind when putting it in place.
1. Build the NPS Survey in Typeform
Start with Typeform's NPS Template
Great news: Typeform already has a nice NPS template, so just follow this link to copy the template to your own Typeform account—and if you don't have an account you'll be prompted to create one first.
Typeform's template includes a number of "Tell us a little about you..." questions such as gender, country, industry and age. While asking for this additional info might seem like a good idea, you'll risk losing responses by asking too many questions. So I recommend that you remove these questions and limit your survey to two questions in total:
Create hidden fields for email and days since signup
This is where the magic starts happening in Typeform. Since you already know the email address and signup date for the potential NPS respondent, we can use hidden fields to pass that data from your messaging platform into the Typeform without prompting the user for it. You'll need to upgrade to a $30/mo Typeform account to use hidden fields, but it's definitely worth it. (This upgrade will also enable you to run an unlimited number of surveys each month.) Here's how your typeform url should look after you set up those two hidden fields:
The {{recipient_address}} value should be replaced with the email recipient variable in Mailchimp, Intercom, or another messaging app, and the daysSinceSignup value will indicate the timing of the message. We'll cover both of those in more detail in Step Two.
Turn on the Google Sheets for Typeform integration
This nifty new Typeform feature will instantly pass each survey response into a new row of a Google Sheet without the need for Zapier. So to save yourself time in prepping for the "Aggregate with Google Sheets" step in our flow, be sure to turn this integration on.
2. Send the survey with your existing tools
Now that our Typeform url is configured, it's time to create recurring NPS emails or in-app messages with your existing email tool. Typically you'll want to first understand NPS 30 days after a customer or user has signed up for your product or service, and every 90 days thereafter.
Create the 30-day NPS message
This first message will prompt recipients to fill out a 30-day survey, and will also serve as the foundation for other NPS messages they'll receive later on in their lifecycle. The rules defining who receives this message are super simple: did they sign up exactly 30 days ago? If so, send them the message. This enables you to calculate 30-day NPS on a rolling basis. The message content should be short and sweet—and should include the NPS scoring prompt in the message itself:
Code each button link with hidden fields
Now let's make some hidden field magic happen! For each of the buttons in your message, you'll want to include the survey link plus three hidden field values—the user's email address, their days since signup (30, in this case), and the value of the button you're coding. Here's what the code would look like for the first button:
And here's what it would look like for the last button:
By coding each button with its corresponding pre-filled answer, you'll be able to jump your respondents directly to the "Why did you choose ___?" question in your NPS survey.
Optional: Add more hidden fields to further segment your NPS
While days since signup is probably the most universal way to segment your NPS respondents, you might have a number of big user segments (like "customer type" or "payment plan") already defined in your messaging platform. If so, feel free to add those variables into the button links as hidden fields, and set up corresponding hidden fields in Typeform. This will enable you to further slice and dice your NPS data after it's collected.
Replicate the 30-day message in 90-day intervals
Now that you have the 30-day message configured, setting up the other messages for later intervals is as simple as duplicating the 30 day message, changing the recipient rules so they match the message interval, and changing the "daysSinceSignup" value in all of the buttons to match the interval too. If your first signup was 18 months ago, you should configure automated messages for 30, 90, 180, 270, 360, 450, 540, 630 and 720 days since signup. That way you don't have to worry about adding new messages for another six months. Once all of your messages are configured and flipped on, you're ready to start aggregating and visualizing the data in Google Sheets!
3. Aggregate & visualize results using Google Sheets
Now it's time for the fun part! And the fun comes in five pieces:
Format your Typeform-fueled Google Sheet
The Sheet generated by Typeform includes all of the survey data, but it's difficult to read. So in this first step you'll clean up the formatting of the Sheet based on the principles of Good Data Design:
From this:
To this:
Add an aggregation column for NPS type
Typeform gives us the raw score data for each survey, but to calculate NPS we need to "bucket" those scores based on the rules of NPS. To do so you'll add a new column called "NPS" with a conditional statement:
Add aggregation columns for week, month + quarter
Next, you'll use Google Sheets' concatenate() and time() functions to aggregate the "Submitted At" column into intervals that shed light on how NPS is trending:
Pivot the data on a new tab
These pivot tables aggregate counts for each NPS type by week, month, and quarter, and calculate the NPS score by subtracting the percentage of detractors from the percentage of promoters in each row:
Visualize the pivot tables into an NPS dashboard
Using the principles of Visual Design with Data, you'll summarize the pivot tables into three super easy-to-read dashboards which show weekly, monthly, and quarterly trends for NPS:
These dashboards do take about an hour to fine-tune and polish, but once you've put in the time and effort, you'll never need to adjust them when new data flows into the first tab via Typeform!
4. Pass back the data to your marketing stack
This final piece of our workflow uses Zapier to pass the Google Sheets aggregation tags back to your automated messaging system. To do so, you'll build a four-step Zap which is triggered by the new Typeform entry, and uses the "id" of that entry to lookup the "token" value in your corresponding spreadsheet row:
You can then use the respondent's email address to find their record in your messaging system, and in turn pass back an NPS tag (Promoter/Passive/Detractor) along with a "note" with the full survey response if you're using Intercom:
The inclusion of a "note" for each customer with their NPS response has proven especially helpful for product and customer service teams who interact with their users through a platform like Intercom, since they're always reminded of the user's NPS score and comments whenever they're interacting with that user. As a result, the customer service or product rep can tailor their responses to the known satisfaction of the user.
Going even further with the data in Zapier
If you're feeling extra ambitious, you can also pass this "note" data into other systems—like a Trello board with lists for each NPS category, or a Zapier digest which posts to a particular Slack channel—so you and your team can stay on top of responses and dive deeper into qualitative analysis of NPS comments.
And that's it! We hope you found this approach to nimble NPS helpful, and if you'd ever like assistance implementing a flow like this for your product or service, please contact us, as we'd be happy to help.