Completion settings decide what the respondent sees after Fillo accepts a response.
In the dashboard
Open the form editor and find the completion settings.
- Set the success title.
- Add a short success message that explains what happens next.
- Add a redirect only when the next step belongs on another route.
- Publish the draft and submit a test response.
Success copy should confirm the action without echoing sensitive answers back. A redirect only runs after a live submission — not when the renderer restores state in a browser that already responded.
In code
const requestForm = defineForm({
id: "request-demo",
pages: [{
id: "request",
blocks: [{ id: "email", kind: "email", label: "Work email", required: true }],
}],
settings: {
successTitle: "Request received",
successMessage: "We'll reply by email within two working days.",
redirectUrl: "https://app.example.com/requests/complete",
},
});redirectUrl must use http: or https:. Other protocols are rejected.
Own the after-submit behavior
An embedded renderer can also run host code with onSubmitted. Use it for local navigation, analytics, or a product-specific confirmation — Fillo still stores the response either way.
<FilloForm
formId="request-demo"
onSubmitted={(responseId) => {
const query = responseId ? `?response=${encodeURIComponent(responseId)}` : "";
router.push(`/requests/complete${query}`);
}}
/>Don't put secrets or private answer values in a query string.
Current routing limit
FormSettings has one success title, one success message, and one redirect URL. It can't currently pick a different completion screen or redirect based on an answer. Use page jumps for an early end, or handle response-based routing in the host app after submission.
Related
- Logic: End a reachable path before later pages.
- Quickstart: Handle submitted and error states in an embed.
- Webhooks: Start reliable server-side work after storage succeeds.