> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zudo.so/llms.txt
> Use this file to discover all available pages before exploring further.

# NPS surveys

> Ask the people using your product how likely they are to recommend it, and read every answer on the account it came from.

Zudo can show an NPS survey inside your own product, on your terms: who gets asked, how often, and in your words. Every
answer lands on the account and the contact it came from, so a score is never a number without a customer attached.

<Note>
  The survey is shown by [zudo.js](/integrations/zudo-js), so install that first. Everything on this page is configured
  at **Settings › NPS survey**.
</Note>

## What your users see

A small panel, three steps:

1. **The question** — "How likely are you to recommend Acme to a friend or colleague?", with a 0–10 scale.
2. **The follow-up** — a box for what made them choose that. Optional; most of the value is here.
3. **Thanks** — closes itself after a few seconds.

They can dismiss it at any step. The panel renders in a shadow root, so your product's styling and the
survey's cannot interfere with each other.

## Who gets asked

All of these have to be true. Zudo checks them on its own side, so they hold however the person reaches your product —
a new browser or a private window does not reset them.

| Rule | Default | Means |
| - | - | - |
| **Minimum account age** | 30 days | Nobody on an account younger than this is asked. |
| **Minimum sessions** | 2 | A session is a day on which that person used your product, counted once per day however many times they visit. |
| **Stop asking after** | 4 | Someone who dismisses the survey sees it again next session, up to this many times. After that the wait below starts. |
| **Wait between surveys** | 3 months | How long after an answer — or after those dismissals run out — before the same person is asked again. |
| **Only these accounts** | everyone | An optional filter, written with the same rules a [segment](/accounts/segments) or a [playbook](/automation/playbooks) uses. |

On top of all of it, nobody is asked twice in one day.

<Warning>
  The age rule is the one that catches people out. It is measured from the account's `createdAt` trait when zudo.js
  sends one, and otherwise from the day Zudo first saw the account. On a fresh install that is today — so with the
  default of 30 days, nobody is eligible for a month. Send `createdAt` on your `Zudo.account()` call and it measures
  from the real date instead.
</Warning>

## What it says

Every piece of wording is yours to change, and leaving a field empty uses the default shown in it. The settings page
previews it as you type.

| Field | Default |
| - | - |
| Question | How likely are you to recommend {"{{productName}}"} to a friend or colleague? |
| Label at 0 / at 10 | Not likely / Very likely |
| Follow-up question | Thanks! What made you choose that? |
| Follow-up note | Your answer goes straight to the team. Optional, but it helps. |
| Placeholder, submit, skip | Tell us a little more… / Send / No thanks |
| Thanks heading and note | Thank you / We read every response. |

`{{productName}}` is replaced with the product name you set, or with whatever your page passes to
`Zudo.nps("survey", { productName: "…" })`. If it resolves to nothing, it is removed cleanly along with its space —
the sentence still reads.

You also control the button colour, where the panel appears, and how long after `Zudo.nps()` is called before it shows.

### Checking the wording

Call `Zudo.nps("test")` in your product. It ignores every rule above and records nothing, so you can read the real
panel without waiting a month or spending one of your own responses.

## Where answers show up

* **The account page**, under **Signals › NPS**: the three numbers, and the answers with their comments.
* **Settings › NPS survey**: the most recent answers across every account.

Each answer carries the score, the comment, who wrote it and when.

## The three numbers

"NPS" means three different things, and Zudo keeps them apart rather than picking one for you:

| | Scale | Is |
| - | - | - |
| **Latest** | 0–10 | The most recent score from this account. |
| **Average** | 0–10 | The mean of every score from this account. |
| **NPS** | −100 to 100 | The standard calculation: the percentage of promoters minus the percentage of detractors. |

Scores are banded the standard way, so Zudo's figure is comparable with whatever you reported before:

* **Detractors** 0–6
* **Passives** 7–8
* **Promoters** 9–10

An account nobody has answered for shows no number rather than a zero. For the standard NPS that matters: zero is a
real and middling score, and an account you have never heard from is not the same thing.

<Note>
  Parent accounts pool their members' answers rather than averaging their members' scores, so a customer made
  up of several accounts gets one honest figure rather than an average of averages.
</Note>

## Turning it on

The survey is off until you switch it on, so installing zudo.js never starts surveying people as a side effect. When
you are ready:

<Steps>
  <Step title="Set the rules">
    Go to **Settings › NPS survey** and set who gets asked. The defaults are a reasonable starting point for most
    products.
  </Step>

  <Step title="Read the wording">Change what you want, and preview it as you go.</Step>
  <Step title="Check it with test mode">Call `Zudo.nps("test")` in your product and read the real panel.</Step>
  <Step title="Switch it on">Turn on **Show the survey**. The next eligible person sees it.</Step>
</Steps>

## What is not here yet

Being straight about the current shape:

* **One survey per organization.** Named surveys with their own questions and audiences are planned, not built.
* **In-app only.** Emailing the survey is not available yet.
* **No automatic alerting on a low score.** A detractor's answer appears on the account, but Zudo does not yet
  raise a [flag](/flags/overview) or start a playbook from it. Filtering and segmenting on NPS, and using it in health
  scoring, are the next thing being built.
