Streamlining NPS Collection With Typeform, Segment and GCP

Our custom-built pipeline to collect and act on Net Promoter Scores at scale.

Thomas Gariel
Norrøna
7 min readAug 16, 2019

--

Our NPS data pipeline

As many businesses out there, Net Promoter Score (NPS) is one of our strategic KPIs. While not perfect, it is a versatile indicator for measuring both the general opinion of our consumers on our brand, but also the quality of our service on specific touch points.

Over the years, we have set up different tools to collect and store NPS score, across different customer interaction points within our customer journey (after a purchase or a return for instance) without aligning these initiatives internally. This situation has resulted in 4 main challenges:

  • Consistency: before this initiative, the customer experience of giving us a score was inconsistent. The visual appearance of the NPS collection components varied from one touch point to another, and we sometimes had slight wording or form structures differences. Also, we often lacked basic context information (timestamps, component placement etc.)
  • Accessibility: the scores were stored in collection tools. They were hard to access programmatically and to consolidate. It typically involved manual csv extracts, Excel work etc. Sometimes, we also only had access to aggregated information.
  • Scalability: it was hard to add NPS collection components on new interaction points as the tools we are using were placements-specific. For instance, we used to ask for NPS on BazaarVoice product review forms, but we couldn’t use these forms outside of that specific context.
  • Actionability: collecting NPS is great, but we believe what we should be able to do ultimately is to trigger an appropriate action following a specific score, for instance following up with a bad score. Our tools did not allow us to do this in a coordinated way.

The market tools we looked at to solve this were quite expensive, sometimes overkill, and we did not find a one-size-fits-all solution. So we decided to build our own NPS pipeline platform. This pipeline can be divided into 4 main steps:

Our pipeline for NPS collection, storage and activation

Setting up the NPS collection component

The first step consists in building an NPS collection component we can use on a wide varieties of touch points: emails, landing pages, our ecommerce shop etc.

Typeform is a good option in terms of versatility (you can embed the component on emails, on a website, a landing page, etc.), its UI is very well thought through, it is highly customizable, and it is quite flexible when it comes to adding scores meta data such as context information. For this Typeform’s “hidden fields” feature is very useful to pass either the user’s identifier, or the context in which the user left his/her score (e.g.: an email after a purchase).

Our NPS collection component. We can embed it on a website, landing page or email.

Our marketing and digital team then can use the resulting component across a wide variety of touch points in an easy way, keep the experience consistent, and easily pass useful meta data through url parameters and hidden fields.

Converting NPS submissions into events, storing and visualizing them

Whenever someone leaves a score, Typeform stores this score, and we can export the list of scores and comments as a csv file. That’s not an efficient solution if you want to perform advanced analytics, or if you want to trigger actions that follow a submission.

We use Zapier to convert a new submission into an event called “Answered NPS” for each new score, and send this event as a JSON to various destinations via a webhook or by using existing integration options. Configuring the event’s JSON is very straightforward through the Zapier event builder UI.

The event builder UI in Zapier is super easy to use

Step 3: Storing, visualizing and analyzing NPS scores

From Zapier, we first send NPS events to Segment. Segment is our consumer data infrastructure, its role is to route events to various destinations, in this case our datawarehouse, hosted on the Google Could Platform. Every time Zapier sends an event, Segment batches it and dumps it into a BigQuery table.

Our PowerBI NPS dashboard

From there, we can create views on top of the BigQuery tables, query scores using SQL and join with other customer tables for deeper analysis. Our BI platform (PowerBI) reads from these views to display a NPS dashboard available for everyone at Norrøna. Dashboard users can study NPS evolution across context, filter on time periods or scores, and see the latest comments through the UI.

In addition, as we want customer satisfaction to be everyone’s business, we display the last 4 scores and comments we received on a screen in the main lobby of our headquarters in Oslo. All employees and visitors can see the 4 latest scores and comments.

Our “Customer voice” screen at the Norrøna HQ in Oslo. Looks like we need to have a look into our checkout process…

This part of the pipeline is relatively slow: from the time the consumer leaves a score to the time it is displayed in analytics or in our HQ we count a solid hour (due to batching at several points of the pipeline), but that’s good enough for this use case.

Step 4: Act on the scores

We also use Zapier to trigger actions that allow us to quickly take action following a score.

The first use case is based on the fact that NPS comments can be useful for our engineering team. People use the comment section to give feedback about all sorts of things, and sometimes bad scores comments are useful to identify bugs and problems on our ecommerce website or key processes (shipment, returns etc.). We use Zapier’s Slack integration to post scores below 5 and comments into a Slack channel product managers and engineers have access to. Not all comments are useful, but can sometimes makes us fix technical issues on key processes more quickly.

The second use case is to quickly follow-up on bad scores, and provide a solution for specific complaints. Here again, the Zapier’s Salesforce integration is super easy to use. Every time we receive a score below 5, we create a Salesforce case and assign it to one of our customer success agent. The case is pre-populated with the score and comment, but also context and customer information so we can contact the person and work out a custom solution if that’s relevant.

These two actions happen almost in real-time, as there is no batching / scheduled runs along the way.

Conclusion and next steps

With this custom NPS pipeline, we have solved our 4 initial challenges in a time, effort and cost-efficient way. We spent very little time setting it up (it was up and running within a couple of days or so), additional cost is below $100/month (so excluding of course licenses for pre-existing core systems such as Segment or Salesforce), we have little lock-up and we avoided painful negotiations or vendor selection processes.

Or global NPS today is around 82, which is almost twice as high as the category leader in sporting goods and apparel in the US. We invest a lot of effort and money into exceeding our consumer expectations at every stage of their journey, and we now have a way to assess these efforts in a much better way, and to act quickly to improve this even more. We hope we will take this score even higher with this new pipeline.

Finally, there are 2 directions we would like to take this success further.

An example of “false negative” NPS

The first one is to make automated follow-up actions smarter. When we post on Slack or create a Salesforce case, there is only a fraction of the cases we can actually follow-up on, either because of “false negatives” (“3” as a score, but “Very good” as a comment), or because the comment is too vague or not relevant (for Salesforce cases) or is not related to technical issues (for Slack messages). One possible next step regarding this would be to look into the comments texts and classify them using language processing techniques.

Another next step would be to use a copy of this pipeline for another business-critical process : product reviews. Our product reviews setup meets the same consistency, accessibility, scalability and actionability challenges. it is a slightly more complex problem due to the number of fields in our product review forms, because we need to take returns into account, and also because we might want to keep a trusted third-party partner to ensure our consumer reviews are authentic. Setting up the same pipeline would make it easier to spread product reviews components across our consumer journey, use product review in marketing in a better way, and act on bad product reviews.

Like what you’ve just read? We are hiring a Machine Learning Specialist to join our incredible team in Oslo. Apply here or share the word!

Check out norrona.com to learn more about Norrøna’s mission and discover our products, and follow us on Twitter and LinkedIn.

--

--

Thomas Gariel
Norrøna

Product Manager @klarna, ex- Norrøna, ex-MFG Labs