Skip to main content
Menu
On this page

n8n

Start an n8n workflow from a signed Fillo webhook with durable deduplication.

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

  1. Create an HTTPS webhook trigger in n8n.
  2. Add its production URL to the Fillo form's Webhooks settings.
  3. Copy the Fillo signing secret when it's shown.
  4. Verify the HMAC-SHA256 signature against the raw request body.
  5. Store X-Fillo-Delivery-Id with a unique constraint before returning success.
  6. Process the stored event through the rest of the workflow.
  7. 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 valuen8n use
Header X-Fillo-EventRoute created, updated, and abandoned-draft events
Header X-Fillo-Delivery-IdDeduplicate one delivery across retries
response.idUpsert the living response in a destination
answersWork with stable raw values
fieldsIterate through ID, label, kind, raw value, and formatted value
respondentUse 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.

  • 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.

Updated

Was this page helpful?