Article
Net Promoter Score Question
When and Why to Use
Use this to capture Net Promoter Score (NPS), which measures the likelihood of a respondent to recommend a product, service, or brand. Ideal for:
-
Customer satisfaction benchmarking
-
Brand tracking
-
Loyalty measurement
This is a special case of a rating scale with specific scoring thresholds for Promoters, Passives, and Detractors.
Chat Experience
-
Slider or button input centered with numeric scale
-
Optional labels help anchor the ends and midpoint
-
Optional “Don’t know” option appears below scale
See rating question for examples of the UX.
Traditional Experience
-
Layout shows more of the scale horizontally
-
Works with keyboard/remote navigation
-
Star and button styles are supported for more visual UIs
See rating question for examples of the UX.
Configuration Options
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
| question | string | yes | - | The question shown to the respondent |
| number_of_points | int | no | 11 | Number of scale points (typically 0–10) |
| first_point | int | no | 0 | First value on the scale |
| style | string | no | slider | “slider”, “button”, or “star” |
| labels | Dict[int, str] | no | {0: "Not at all likely", 10: "Extremely likely"} | Labels for points on the scale |
| image | MediaItem | no | - | Optional image above the question |
| default | int | no | random | Value used in test mode |
| dont_know_option | str | no | - | Text label for “Don’t know” button |
| recodes | Dict[str, str] | no | - | Maps raw responses to grouped values |
| custom_validator | `Callable[[int], str | None]` | no | - |
| min_promoter_score | int | no | 9 | Minimum score considered a Promoter |
| max_detractor_score | int | no | 6 | Maximum score considered a Detractor |
tags | s.tag() | no | - | Used for dynamic substitution and reporting |
Example Code
Basic NPS question:
s.net_promoter_score_question( "How likely are you to recommend this product to a friend?", number_of_points=11, labels={ 0: "Not at all likely", 10: "Extremely likely" } )
With recodes:
s.net_promoter_score_question( "How much do you like this brand?", number_of_points=5, recodes={ "1": "Dislike", "2": "Dislike", "3": "Neutral", "4": "Like", "5": "Like" } )
With “Don’t know” option:
s.net_promoter_score_question( "How likely are you to recommend {brand}?", number_of_points=11, dont_know_option="Not sure", brand="Tesla" )
Notes
-
NPS is calculated by subtracting the % of Detractors (score = min_promoter_score)
-
dont_know_option responses are recorded as -999
-
Use recodes for top-box / bottom-box analysis or segmentation
-
custom_validator can block test inputs or enforce attention