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 |
| 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 <= max_detractor_score) from % of Promoters (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
