Use case
Add NPS surveys to your SaaS
Create an NPS, CSAT, or custom survey in AscendKit, distribute it to your users, and read response analytics — all linked to the same usr_ record as their auth and email history. Surveys are built on SurveyJS, so custom question types and logic are supported.
How it works
- 1. Build the surveyPick an NPS or CSAT template, or compose a custom survey with the SurveyJS builder in the portal.
- 2. DistributeTarget users by lifecycle stage or event and send the survey through email or in-app distribution.
- 3. Read analyticsTrack NPS score, CSAT, and per-question breakdowns over time. Responses attach to the same user profile as the rest of their activity.
What do NPS survey tools actually need to do?
Ask one question at the right moment, to the right person, and make the answer joinable to everything else you know about them. Most tools do the first part well and the last part not at all.
The joinability is where standalone survey tools break down. A response lands in the survey vendor identified by an email address, while the account it belongs to lives in your auth provider under a different identifier. Answering "which of our detractors are on the paid plan" then means exporting from two systems and reconciling by hand.
Because AscendKit surveys attach to the same usr_ profile as auth and email, a score sits next to when that person signed up, which onboarding emails they opened, and where they stalled in a journey.
| Response | Band | Effect |
|---|---|---|
| 9-10 | Promoter | Increases the score |
| 7-8 | Passive | Dilutes only -- counts in the total, neither side |
| 0-6 | Detractor | Decreases the score |
Why does the number look wrong so often?
Passives. The score is the percentage of promoters minus the percentage of detractors, and 7s and 8s count toward the denominator without contributing to either side. A survey with no unhappy users at all can still score near zero.
That is why the trend matters more than the absolute value, and why comparing your number to a published industry benchmark is usually meaningless — the benchmark was gathered from a different population at a different moment in their lifecycle.
The other common distortion is who you ask. Sending only to users you know are happy produces a flattering number and destroys the comparison you were trying to build. Consistent timing and a stable audience are what make the trend readable.
Troubleshooting
Very few people respond
Cause: Usually timing rather than the question. An NPS request sent at an arbitrary moment competes with whatever the user was actually doing.
Fix: Trigger it from a journey at a consistent point in the lifecycle -- 90 days on the account, say -- rather than distributing manually on your own schedule.
Invitations show as sent but never opened
Cause: Almost always email delivery rather than the survey itself, since opens are tracked by the personalised link.
Fix: Confirm your sending domain is verified, then check the delivery logs. Delivery succeeding with zero opens usually means spam placement.
FAQ
Can I run NPS without a separate survey tool like Typeform?
Yes. Surveys are part of the platform, so NPS and CSAT responses sit on the same user record as auth and email instead of in a disconnected Typeform account.
Are custom question types supported?
Yes. Surveys are built on SurveyJS, which supports custom question types, branching logic, and validation.
Related guides
- Add social login without OAuth apps — reducing signup friction before you measure satisfaction.
- Customer feedback tools for SaaS — the wider loop that NPS is one input to.
- Surveys CLI reference — survey types, scoring, and distribution.
- AscendKit vs Sprig — when a dedicated product-research platform is the better tool.
Start with one API key
Auth, email, surveys, and journeys share one user record, so you ship this without stitching vendors together.
Start free