The Fillo Zapier app triggers a Zap when an accepted response is created or updated.
What Zapier receives
The instant trigger uses a REST Hook subscription and returns the response's stable IDs, form context, source and duration metadata, respondent context where present, raw answers, formatted answers, field descriptors, and file references. File URLs require authorized Fillo workspace access — they aren't public download links.
The same living response can trigger once as response.created and again after each response.updated. Each trigger run has its own Zapier event ID; response_id stays stable so downstream steps can update rather than create a second record. Branch on event when the two paths need different actions.
Connect Zapier
- Open Settings > Connections > Zapier in Fillo.
- Create a private API token and copy it when shown. Fillo stores only its hash.
- In Zapier, add the invited or directory-listed Fillo app to a Zap and choose New or Updated Response.
- Paste the token into the Fillo connection in Zapier.
- Choose the published form from the dynamic dropdown.
- Test the trigger to load a real or fallback sample.
- Add the destination action and publish the Zap.
The integration subscribes and unsubscribes the hook through Fillo's Zapier API routes. Revoking the token disconnects every Zapier connection using that token.
Code-defined forms
Sync and publish the code form first so it appears in the Zapier form dropdown. Keep field IDs stable after mapping downstream steps. A changed label can still read fine, but deleting or renaming an ID breaks a step that expects the old answer key.
Field mapping
| Fillo value | Zapier value | Notes |
|---|---|---|
answers[fieldId] | Raw value | Stable for code and filters |
formatted[fieldId] | Display string | Uses current labels for readable actions |
fields[] | ID, label, kind, raw and formatted value | Useful for generic processing |
respondent | ID, email, name, verified | Null when no identity was recorded |
files[] | File metadata, protected URL, and a Zapier file value | The file value downloads lazily with the connected Fillo token when a later step uses it |
Limits and security
The Fillo Zapier integration is available on every Fillo plan. Zapier applies its own task, step, polling, premium-app, and retention limits according to the Zapier plan in effect. Check those limits before a high-volume workflow.
The fcli_-style Zapier token is a private management credential, not a pk_ publishable key. Keep it inside the Zapier connection and revoke it if it's exposed.
API contract
The public Zapier app uses the production API at https://fillo.so. Every request sends the workspace token as Authorization: Bearer fcli_….
| Method | Path | Purpose |
|---|---|---|
GET | /api/v1/zapier/auth | Validate the token and return its user and workspace |
GET | /api/v1/zapier/forms | List published forms available to the connected workspace |
GET | /api/v1/zapier/responses?formId=…&limit=3 | Load recent accepted responses or a schema-derived setup sample |
POST | /api/v1/zapier/hooks | Subscribe the Zapier REST Hook URL to one published form |
DELETE | /api/v1/zapier/hooks | Remove the subscription by hook ID |
GET | /api/v1/files/:fileId | Hydrate a protected file for a later Zap step |
Subscribe with { "formId": "form_…", "targetUrl": "https://hooks.zapier.com/…" }. The response returns the subscription as both id and hookId. Unsubscribe with { "id": "hook_…" }.
Trigger records include event, an event-unique id, stable response_id, submitted_at, updated_at, form context, answer maps, field descriptors, file descriptors, and optional respondent context. The setup sample and live REST Hook use the same shape. Error responses use a stable JSON message with an appropriate 4xx or 5xx status.
Troubleshooting FAQ
Why is my form missing?
Publish the form and confirm the token belongs to the same workspace. Draft-only and cross-workspace forms aren't valid trigger choices or subscriptions.
Why did the Zap fire twice for one response ID?
The response may have been updated in place. Branch on the event, or upsert in the destination by response ID.
Why did the Zap stop after a token change?
Reconnect with a current token. Revoked tokens can't subscribe, poll samples, or receive authenticated trigger setup.
Related
- Response limits: Understand when one response ID can be updated.
- Webhooks: Deliver signed JSON directly to your own backend.
- Delivery health and replay: Inspect first-party destination failures in Fillo.