The Net Promoter Score (NPS) question is a widely used market research metric and is designed to gauge the likelihood a customer would recommend a product, brand, or service by rating it on a scale from 0 to 10. In a nutshell, an NPS question can measure costumer loyalty. Based on their ratings, respondents are then assigned to one of three categories – "Detractors," "Neutrals" (also known as "Passives"), or "Promoters.
The NPS results from a calculation that involves subtracting the percentage of detractors from the percentage of promoters and is typically displayed as an integer instead of a percentage. The scale used in the calculation is from -100 to 100. If all responders were categorized as Detractors, the score would be the minimum of -100; if all responders were instead categorized as Promoters, the score would be the maximum of 100. When there is the same amount of Detractors as there is Promoters, the NPS is a baseline value of 0. For example, if the study has 40% Promoters (positive), 55% Neutral (no score) and 20% Detractors (negative), the NPS will be +20.
Try it!
Syntax
An NPS question or table typically has these specific characteristics:
- The answer choice is single selection (
type: radio
). - It has an 11 point scale and uses options 0 through 10.
- Three response buckets are created to track Detractors, Neutrals, and Promoters.
- It uses the headings or embedded anchors "Highly Unlikely" and "Highly Likely" (or something similar).
- It usually asks about the "likelihood to recommend" a brand or product.
- It is often presented as a radio question for a single brand, or in a table or loop for two or three brands.
Basic NPS questions and tables can be programmed as follows.
NPS. What is the likelihood you would recommend Brand X? (Basic NPS question) type: radio series: 0..10 hscale: y headings: Highly unlikely, Highly likely NPS1. What is the likelihood you would recommend the following brands? (Basic NPS table) type: radio table series: 0..10 rowsfrom: TOP3BRANDS headings: Highly unlikely, Highly likely
Tags
The following tags and decorators are commonly used with NPS questions. These tags are implemented in the NPS class examples further below.
Tag / Decorator | Description |
---|---|
series
|
Generates numeric or alphabetical sequential list options within a specified range of values or letters. It is valid on any widget where regular options can be directly placed. See series as a list function if more programming flexibility is needed. |
hscale |
When set to 'y', the options will be displayed in a horizontal scale. Note, hscale is not applicable to table widgets. |
headings |
Specifies any headings to place over the scale. When specifying multiple headings, separate them with a comma. |
reportoptions
|
Specifies display options which will be loaded every time the tile for that question appears in a Topline report. All of the options which can be selected from the Gear menu on a given tile can be edited via this tag. |
metric
|
Allows Survey Programmers (SPs) to add custom metrics to Crosstab reports. Multiple
|
desc
|
A decorator for the metric tag. Supplies a name for the metric that appears in reports. |
args |
A decorator for the nets tag. Supplies additional information to define the metric. Required for range , nets , freq , and percentile . |
Examples
Basic NPS
Here is a classic example of an NPS question a Survey Programmer (SP) would program for a client.
Basic NPS with follow-up why question
Here is the same example as above with the common "why" follow-up question for Detractors and Promoters.
Including headings in the options
The following example is similar to Q1, but instead of using the headings
tag, Q2 uses embedded anchors by attaching the desired heading text to each option that is found on the most extreme points of the range. Note, since the headings are pulled into the options, this causes the option buttons to expand, requiring browser windows to usually display the options vertically, regardless of the inclusion of hscale: y
.
Basic NPS table
Here is a common example of an NPS table an SP would program for a client. Note, it is best practice to only ask about products or brands that the respondent is very familiar with, e.g., "main brand" or "most recent purchase."
Modifying NPS questions for reporting
There are multiple tags SPs can apply to improve the reporting and analysis experience for their clients. For example, the metric
tag can be included to define custom nets, one for each NPS group, and to define a transformed average for the score. In previous versions of IntelliSurvey's software, the three groups Detractors, Neutrals, and Promoters had to be manually programmed with the metric
tag as shown below in Q4. Now the software creates these groups automatically for Topline reports, but to apply this presentation option to the Topline tiles, users should click the Gear icon, then select Analyze > Response Buckets > NPS.
However, notice Q4 also leverages the reportoptions
tag so that when Q4 is selected in a Topline report, the tile displays the three groups defined in the metric
tags as its default presentation. This removes an extra step for the report viewer and improves their experience. See a comparison of Topline tile presentation options below.
Code Example
4. How likely are you to buy <b>Famous Brand</b> in the next 3 months? hscale: y type: radio headings: Not at all likely, Extremely likely series: 0..10 reportoptions: <<END presets => 1, presets_menu => { 1 => { name => 'NPS', report_options => { analyze => { responsebuckets => 'nps' }, } } } END metric: nets {args: 0,1,2,3,4,5,6} {desc: Detractors (0-6)} metric: nets {args: 7,8} {desc: Neutrals (7,8)} metric: nets {args: 9,10} {desc: Promoters (9,10)} metric: transformed_average {args: 0-6== -100; 7,8==0; 9,10==100} {desc: NPS}
Q4 with the reportoptions settings |
|
Although the Topline report now has "baked in" NPS groupings, the Crosstabs report does not. In order to create the three NPS groups and the transformed average, add the metric
tags as shown in Q4 above. To show custom nets in a Crosstabs report, click on the dropdown menu next to the Nets & Metrics button in Report Configuration. The default option is OFF: No nets/metrics displayed. Select any of the ON options to display the desired custom nets and metrics.
For more information on Crosstabs custom nets and metrics, see Crosstab report.
Utilizing the same example, here is another comparison of what Q4 looks like in a Crosstabs report with and without the optional tags.
Crosstabs example with metric tags |
Crosstabs example without metric tags |
---|---|
|
|
Using system classes to create NPS questions and tables
System classes are classes that have been created at the system-level to be used across all IntelliSurvey servers. They were created for use with IntelliBuilder and do not require accessing the survey source code to define the class. Like locally defined/traditional classes, the new system classes can be invoked on a widget simply by adding the class
tag.
The following system classes have been implemented for creating NPS questions and tables: nps
, nps_embeddedanchors
, and nps_table
. Whether for questions or tables, each of these classes defines the scale range, headings, and most commonly used reporting settings defined via the reportoptions
and metric
tags.
nps
The nps
system class is defined for the most commonly used NPS coding conventions. It presents the rating values in a horizontal scale, provides headings at the scale ends, and uses the reportoptions
and metric
tags to make the Topline or Crosstabs experience more amenable for clients. The class is defined as follows.
# system class "nps" setclass: nps hscale: y type: radio headings: Not at all likely, Extremely likely series: 0..10 reportoptions: <<END presets => 1, presets_menu => { 1 => { name => 'NPS', report_options => { analyze => { responsebuckets => 'nps' }, } } } END metric: nets {args: 0,1,2,3,4,5,6} {desc: Detractors (0-6)} metric: nets {args: 7,8} {desc: Neutrals (7,8)} metric: nets {args: 9,10} {desc: Promoters (9,10)} metric: transformed_average {args: 0-6== -100; 7,8==0; 9,10==100} {desc: NPS}
A simple application of this class is shown below.
5. How likely are you to recommend the Shake Weight to friends or family?
class: nps
Tip! When including system classes to questions, it is not necessary to include a type
tag since it is defined in the class.
nps_embeddedanchors
Unlike the nps
class, nps_embeddedanchors
uses "embedded" headings at the ends of the rating scale instead of using the headings
tag. As such, the options must be defined individually instead of with the series
tag, and option '0' and option '10' include the headings in the option text. The inputs for the reportoptions
and metric
tags are the same as the nps
class, creating a nearly identical reporting output.
# system class "nps_embeddedanchors" setclass: nps_embeddedanchors hscale: y type: radio 0. 0 - Not at all likely 1. 1 2. 2 3. 3 4. 4 5. 5 6. 6 7. 7 8. 8 9. 9 10. 10 - Extremely likely reportoptions: <<END presets => 1, presets_menu => { 1 => { name => 'NPS', report_options => { analyze => { responsebuckets => 'nps' }, } } } END metric: nets {args: 0,1,2,3,4,5,6} {desc: Detractors (0-6)} metric: nets {args: 7,8} {desc: Neutrals (7,8)} metric: nets {args: 9,10} {desc: Promoters (9,10)} metric: transformed_average {args: 0-6== -100; 7,8==0; 9,10==100} {desc: NPS}
Apply the nps_embeddedanchors
class to a question just as you would the nps
class.
5A. How likely are you to recommend the Shake Weight to friends or family?
class: nps_embeddedanchors
nps_table
The nps_table
system class is defined nearly identically to the nps
class, just for tables.
# system class "nps_table" setclass: nps_table type: radio_table headings: Not at all likely, Extremely likely series: 0..10 reportoptions: <<END presets => 1, presets_menu => { 1 => { name => 'NPS', report_options => { analyze => { responsebuckets => 'nps' }, } } } END metric: nets {args: 0,1,2,3,4,5,6} {desc: Detractors (0-6)} metric: nets {args: 7,8} {desc: Neutrals (7,8)} metric: nets {args: 9,10} {desc: Promoters (9,10)} metric: transformed_average {args: 0-6== -100; 7,8==0; 9,10==100} {desc: NPS}
A simple application of this class is shown below in table 6. Simply define the row-questions to be rated, either via inline rows or a setlist. The Topline tile will default to a grid display just as it would with any table. To change the grid to a stacked bar chart, go to the Gear icon and select Display As > Chart.
6. How likely would you be to leave a positive review for the following amenities at our hotel?
class: nps_table
rows:
1. Concierge service
2. Dining & bar facilities
3. Spa facilities
4. Gym & pool facilities
5. Room service
Locally overriding NPS class settings
There are occasions when clients change something ever so slightly to an NPS question, such as adjusting the heading text. In Q7 below, the class nps
is applied to the question. Then the headings
tag is applied to override the class and adjust the text.
Tip! If an SP needs to change anything other than the heading text on an NPS question, the full code shown in the classes above should be applied to the question or table widget in lieu of the system class. Additionally, further changes, such as a altering the scale or metric arguments, would change the intention of what NPS means within Market Research and is not recommended.
Comments
0 comments
Please sign in to leave a comment.