A CSAT survey asks how satisfied someone was with a specific interaction, on a 1 to 5 scale. Mark the rating as CSAT so Fillo insights interpret it correctly.
Define the interaction clearly
const csat = defineForm({
id: "support-csat",
title: "Rate your support experience",
pages: [{
id: "feedback",
blocks: [
{
id: "satisfaction",
kind: "rating",
label: "How satisfied are you with the help you received?",
max: 5,
insightsMetric: "csat",
required: true,
},
{
id: "improve",
kind: "long_text",
label: "What could we improve?",
visibleIf: [{ fieldId: "satisfaction", op: "lt", value: 4 }],
},
{ id: "ticket_id", kind: "hidden", label: "Ticket", paramName: "ticket" },
],
}],
settings: { submitLabel: "Send rating", successTitle: "Feedback received" },
});Name the thing being rated in the label — the support case, purchase, onboarding step, or feature. A generic satisfaction question gives you less to act on.
Scope repeat responses
Prefill the hidden interaction ID and scope a response limit to that field. With verified account identity, one customer can rate several tickets — but only once per ticket. The hidden value is routing context, not proof of authorization.
Close the loop safely
Read low scores alongside their written context. Slack gets a response link by default; if the support channel needs immediate triage context, explicitly allowlist the score and at most two other fields. Open the linked response for everything else.
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: See a live feedback scale before adapting it to CSAT.
- Rating field: Configure the valid CSAT field shape.
- Response limits: Scope one response to each support interaction.
- Slack: Send a response link and optionally a tightly allowlisted field preview.