Fillo doesn't ship a native n8n node yet. Use a signed Fillo webhook as the workflow input, and verify the signature before trusting any answer.
Connect a workflow
- Create an HTTPS webhook trigger in n8n.
- Add its production URL to the Fillo form's Webhooks settings.
- Copy the Fillo signing secret when it's shown.
- Verify the HMAC-SHA256 signature against the raw request body.
- Store
X-Fillo-Delivery-Idwith a unique constraint before returning success. - Process the stored event through the rest of the workflow.
- Activate the production workflow and submit a test response.
If the n8n webhook node or an upstream proxy doesn't expose the exact raw bytes, put a small verifying receiver in front of n8n. Parsing and re-serializing the JSON can't reproduce the signature input reliably.
Payload mapping
| Fillo value | n8n use |
|---|---|
Header X-Fillo-Event | Route created, updated, and abandoned-draft events |
Header X-Fillo-Delivery-Id | Deduplicate one delivery across retries |
response.id | Upsert the living response in a destination |
answers | Work with stable raw values |
fields | Iterate through ID, label, kind, raw value, and formatted value |
respondent | Use identity only with its verified flag |
Self-hosted boundaries
Self-hosting n8n doesn't change where the data lives: the Fillo form API and stored response stay in Fillo. Secure the workflow URL, credentials, execution logs, and retained payloads according to the answer data the workflow receives.
Limits and delivery
Fillo webhooks are available on every plan. Your n8n deployment or cloud plan controls execution concurrency, retention, queueing, and connector limits. Fillo sees the webhook acknowledgement, not the final state of later workflow nodes.
Troubleshooting FAQ
Why does Fillo time out while n8n keeps working?
Return a 2xx response within ten seconds after durably recording the verified event. Run slow nodes after that acknowledgement.
Why do I see the same response ID with two events?
An update-in-place form emits response.created first and response.updated later. Deduplicate by delivery ID and upsert domain data by response ID.
Can n8n fetch a protected file URL?
Not anonymously. Use a scoped, server-authorized Fillo or provider workflow — the response URL isn't public.
Related
- Webhooks: Implement the signing and at-least-once contract.
- Management API: Read accepted responses from a scheduled server workflow.
- Security and boundaries: Keep workflow and workspace credentials out of respondent-facing code.