How it works
The score question, step by step
One question, asked before the words
Your own wording, or ours. It is off until you turn it on, because adding it changes what your customers see.
The follow-up fits what they said
Somebody who answered ten is asked what made it work; somebody who answered three is asked what went wrong. The same box, worded so that neither question reads as an insult.
Your figure, over everything
Promoters less detractors, the count in each band and the average, on your report — calculated over every answer you collected, not only the ones you chose to publish.
An unhappy answer is still a testimonial
It arrives in Pending like any other, it is read for risk like any other, and it is yours to publish or not. What it is never subject to is a different route.
Safe by design
The rule that makes it safe to have
Clear boundaries
What it will not do
Every capability page ends with this list. It is the part that says what you are actually buying.
- It will not send a low answer somewhere different from a high one.
- It will not hide the publish option from somebody who answered badly.
- It will not calculate your figure from the published testimonials only — that would be your own choices reported back to you as a result.
- It will not decide what the number means about your business.
Where it lives in the code: lib/survey.ts · components/CollectionForm.tsx · app/api/testimonials/route.ts
This is running now
Open a project and use it. Nothing on this page is a roadmap.