An NPS survey is one 0 to 10 recommendation question, plus optional written context. Mark the scale as NPS so Fillo's insights interpret it consistently.
Define the survey
const nps = defineForm({
id: "quarterly-nps",
title: "How are we doing?",
pages: [{
id: "score",
blocks: [
{
id: "recommend",
kind: "linear_scale",
label: "How likely are you to recommend us?",
min: 0,
max: 10,
minLabel: "Not likely",
maxLabel: "Very likely",
insightsMetric: "nps",
required: true,
},
{
id: "why",
kind: "long_text",
label: "What's the main reason for your score?",
visibleIf: [{ fieldId: "recommend", op: "answered" }],
},
],
}],
settings: { submitLabel: "Send feedback", successTitle: "Thanks for the feedback" },
});NPS requires the full 0 to 10 scale — don't mark a 1 to 5 rating as NPS.
Decide who should answer
For an in-product pulse, pass signed respondent identity and add a per-campaign hidden scope such as nps_cycle, then configure one response per identified person per cycle. For a public link, expect weaker identity and document that the sample can include repeats.
Route follow-up
Fillo insights give you the aggregate score and distribution. Send accepted responses to the response grid, a webhook, or a connected destination for qualitative review. Don't trigger customer outreach on the number alone — read the written context and check your contact policy first.
Try it
Start with a prompt and your coding agent builds the first form, staged for your review — or open the editor.
Related
- NPS example: Test the live scale, conditional detail, and success state.
- Linear scale field: Keep NPS bounds and labels valid.
- Respondents and identity: Tie an in-product pulse to a verified account.
- Capture UTM attribution: Compare campaign sources without visible questions.