Skip to main content
Menu
On this page

Zapier

Trigger a Zap from new and updated Fillo responses through the versioned Zapier app.

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

  1. Open Settings > Connections > Zapier in Fillo.
  2. Create a private API token and copy it when shown. Fillo stores only its hash.
  3. In Zapier, add the invited or directory-listed Fillo app to a Zap and choose New or Updated Response.
  4. Paste the token into the Fillo connection in Zapier.
  5. Choose the published form from the dynamic dropdown.
  6. Test the trigger to load a real or fallback sample.
  7. 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 valueZapier valueNotes
answers[fieldId]Raw valueStable for code and filters
formatted[fieldId]Display stringUses current labels for readable actions
fields[]ID, label, kind, raw and formatted valueUseful for generic processing
respondentID, email, name, verifiedNull when no identity was recorded
files[]File metadata, protected URL, and a Zapier file valueThe 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_….

MethodPathPurpose
GET/api/v1/zapier/authValidate the token and return its user and workspace
GET/api/v1/zapier/formsList published forms available to the connected workspace
GET/api/v1/zapier/responses?formId=…&limit=3Load recent accepted responses or a schema-derived setup sample
POST/api/v1/zapier/hooksSubscribe the Zapier REST Hook URL to one published form
DELETE/api/v1/zapier/hooksRemove the subscription by hook ID
GET/api/v1/files/:fileIdHydrate 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.

Updated

Was this page helpful?