OrderSurvey
All articles

NPS & CSAT

How to Calculate NPS: Formula, Worked Example, and Pitfalls

Net Promoter Score is one number that tells you whether customers would recommend your store. It sounds simple, and the math really is. But plenty of teams calculate it wrong, usually by being too generous with the middle of the scale. This guide walks through exactly how to calculate NPS, with a worked example you can copy, the mistakes that quietly inflate your score, and how to stop doing it by hand.

The one question behind the number

NPS starts with a single survey question, asked on a 0 to 10 scale:

"How likely are you to recommend us to a friend or colleague?"

Every respondent lands in one of three buckets based on their answer:

Bucket Score given What it means
Promoters 9 or 10 Loyal, will refer others
Passives 7 or 8 Satisfied but unenthusiastic, easily poached
Detractors 0 to 6 Unhappy, may warn others off

The 0 to 6 range for detractors surprises people. Yes, a 6 out of 10 counts as a detractor. That feels harsh until you remember the scale is about advocacy, not satisfaction. A customer who gives you a 6 is not going to tell their friends about you. They might tell them the opposite.

How to calculate NPS: the formula

Here is the whole thing:

NPS = (% of Promoters) − (% of Detractors)

That's it. Passives are counted in your total response number, but they do not add to or subtract from the score. They sit in the middle and cancel out of the equation entirely. The result is a number between −100 (everyone is a detractor) and +100 (everyone is a promoter).

A few quick rules that follow from the formula:

  • You work in percentages of total responses, not raw counts, so surveys of different sizes stay comparable.
  • The final score is expressed as a whole number, not a percentage. An NPS of 40 is written "40," never "40%."
  • Passives still count toward your denominator. Leaving them out is the single most common way people get this wrong (more on that below).

A step-by-step worked example

Say you ran a post-purchase NPS survey for a month and collected 200 responses. Here is how the answers broke down:

  • 9s and 10s: 110 responses
  • 7s and 8s: 50 responses
  • 0s through 6s: 40 responses

Now work through it.

Step 1: Calculate the percentage of promoters. 110 promoters ÷ 200 total = 0.55, or 55%.

Step 2: Calculate the percentage of detractors. 40 detractors ÷ 200 total = 0.20, or 20%.

Step 3: Subtract detractors from promoters. 55% − 20% = 35.

Your NPS is 35.

Notice the 50 passives never appeared in steps 1 or 2. They only mattered in the denominator, where they pushed both your promoter and detractor percentages down. That is the correct behavior. If you had ignored them and only divided by the 150 people who were promoters or detractors, you would have gotten a misleadingly different number. Let's look at exactly why that matters.

The most common mistake: treating passives as positive

The error that wrecks more NPS calculations than any other is treating passives like they help. They don't. They are neutral by design.

Two versions of this mistake show up constantly:

  1. Counting 7s and 8s as promoters. Someone decides a 7 is "pretty good" and lumps it in with the 9s and 10s. In the example above, that would move 50 people into the promoter column, pushing the score from 35 up to 60. The number looks great and means nothing.
  2. Dropping passives from the denominator. Instead of dividing by all 200 responses, you divide only by the 150 promoters and detractors. Promoters become 110 ÷ 150 = 73%, detractors become 40 ÷ 150 = 27%, and the score jumps to 46. Also wrong.

Both versions inflate the score, which is why they are tempting and why they are dangerous. If your reported NPS quietly drifts up because of a calculation choice rather than happier customers, you lose the one thing the metric is good for: comparison over time. Stick to the rule. Promoters are 9 to 10, detractors are 0 to 6, everyone counts in the denominator.

Sample size and statistical significance

A score of 35 from 200 responses is reasonably solid. A score of 35 from 11 responses is mostly noise. NPS is a percentage-based metric, so small samples swing wildly: one extra detractor in a sample of 10 changes your score by ten points.

Some practical guidance:

  • Aim for at least 100 responses before you treat a single NPS number as meaningful. Below that, read it as directional at best.
  • Watch the swing, not just the point. NPS has a margin of error like any survey statistic. With a few hundred responses, a 3 or 4 point month-over-month change is probably noise. A 15 point drop is a signal worth investigating.
  • Be consistent about who you survey. If last quarter's score came from first-time buyers and this quarter's includes wholesale accounts, you are not comparing the same thing. Use targeting rules to keep your sample stable.
  • Don't chase a single big number. Segmented NPS (by product line, by order value, by acquisition channel) usually tells you more than one store-wide figure, even if each segment has a smaller sample.

The point is not to turn this into a statistics class. It is to stop yourself from celebrating or panicking over a swing that is just the math of a small sample.

Automating the calculation with survey responses

Doing this once in a spreadsheet is fine. Doing it every month by hand, re-bucketing 0 to 10 answers and recomputing percentages, gets old fast and invites the exact mistakes above. This is where collecting NPS through a survey tool pays off.

With OrderSurvey, you ask the NPS question right where buyers are paying attention: on the thank-you page immediately after checkout, on the order status page, or in person through Shopify POS. The 0 to 10 question type is built in, so responses come in already structured on the right scale. A few things that make the ongoing calculation easier:

  • Consistent targeting. Set rules by order total, products, customer tags, or shipping country so the same kind of customer answers each time. That keeps your month-over-month comparison honest.
  • CSV export of every response. Pull the raw 0 to 10 data whenever you want and run the promoters-minus-detractors math yourself, or drop it into whatever dashboard you already use. No re-typing.
  • Low-score alerts. Set a threshold and get pinged (for example, to a Slack webhook) the moment a detractor comes in, instead of finding out at the end of the month when you tally the score.

That last one matters because NPS is a lagging summary. The score tells you where you stood. The individual detractor responses tell you what to fix, and the sooner you see them, the sooner you can act.

OrderSurvey runs on Shopify's native checkout, customer-account, and POS extensions, so adding the survey doesn't require broad data-access scopes on your store. The free plan covers up to 100 responses every 30 days, which is right around the sample size you want before NPS means much anyway. The Pro plan is $49/month for unlimited responses once you outgrow that.

A quick recap

  • NPS = % promoters (9 to 10) minus % detractors (0 to 6).
  • Passives (7 to 8) count in your total but never add to the score.
  • Don't promote the 7s and 8s, and don't drop them from the denominator. Both inflate the number.
  • Get to roughly 100 responses before trusting a single score, and judge changes by their size, not their existence.
  • Collect responses through a structured survey so the calculation, and the comparison over time, stays clean.

If you want context on where NPS fits next to other feedback metrics, read NPS vs CSAT vs CES to decide what to track, or see what counts as a good NPS for ecommerce once you have your first number in hand.

Run your first post-purchase survey free

OrderSurvey adds NPS, attribution, and CSAT surveys to your Shopify thank-you page, order status page, and POS. No code, and no extra data scopes.

Install OrderSurvey