Automation platform · All integrations

Connect n8n to Formfy

Clinic coordinators and ops teams spend hours routing signed waivers and consent forms to the right place — manually forwarding PDFs, updating spreadsheets, and pasting signer details into Notion or Airtable after every signature event. When volumes scale, the copy-paste loop eats a full afternoon. Teams want signed intake forms to trigger their own workflows the moment a client signs — no developer required, no glue code to maintain.

Formfy publishes a clean REST API and a webhook event stream that wire directly into n8n nodes. Subscribe once, then route every signed form, signer record, or PDF download through any workflow you can build in n8n — no middleware, no polling.

The workflow at a glance

Trigger

A client signs a Formfy consent, waiver, or intake form

Action

n8n receives the form.signed webhook payload and runs your workflow

Result

Signer data, PDF links, and submission metadata land in Airtable, Notion, or any system your n8n workflow targets

Step-by-step: connect n8n to Formfy

Wire Formfy webhook subscriptions into n8n and run your first automated workflow on a signed-form trigger.

  1. Generate a Formfy API key

    Open the Formfy dashboard, navigate to Settings → API Keys, and click Create key. Copy the fk_live_… token to a secure location — Formfy shows it once. Use the fk_test_… key while building in n8n so you avoid consuming production submission credits during development and testing.

  2. List your existing webhook subscriptions

    Before adding a new subscription, check what Formfy already delivers. Send GET /api/v1/webhooks with your Bearer token. The response lists every active subscription, event type, and target URL — confirm you are not about to create a duplicate delivery to the same n8n Webhook node.

    GET/api/v1/webhooksSee in the OpenAPI spec →

  3. Subscribe n8n to the form.signed event

    POST /api/v1/webhooks with target_url set to your n8n Webhook trigger node URL and event_types: ["form.signed"]. Formfy returns a signing secret — store it as an n8n credential so downstream nodes can verify the X-Formfy-Signature HMAC header on every incoming payload before processing it.

    POST/api/v1/webhooksSee in the OpenAPI spec →

  4. Configure the n8n Webhook trigger node

    In n8n, add a Webhook node set to POST method and copy its production URL into the Formfy subscription you created in the previous step. Activate the workflow, then sign a test form in Formfy to capture a live sample payload. Inspect the output to locate submission_id, signer_email, and signed_at for downstream mapping.

  5. Fetch the signed PDF inside the workflow

    After the Webhook node fires, add an HTTP Request node that calls GET /api/v1/forms/{id}/signed-pdf using the submission_id from the payload. Formfy returns a time-limited download token; pass that token to a second request at GET /api/v1/files/pdf/{token} to retrieve the PDF binary and store or forward it.

    GET/api/v1/forms/{id}/signed-pdfSee in the OpenAPI spec →

  6. Route signer data to Airtable, Notion, or your CRM

    Chain an Airtable, Notion, or HTTP Request node after the PDF step. Map signer_email, signed_at, and the PDF URL onto your target record. For multi-party consent forms, call GET /api/v1/forms/{id}/signers using the submission_id to retrieve every co-signer and their timestamps before writing the final record.

    GET/api/v1/forms/{id}/signersSee in the OpenAPI spec →

  7. Rotate the webhook secret on a quarterly schedule

    Quarterly — or immediately after a suspected exposure — POST /api/v1/webhooks/{id}/rotate-secret to receive a fresh signing secret. Update the stored credential in n8n and reactivate the workflow. Formfy deliveries fail closed until both sides agree on the new secret, which prevents spoofed payloads from reaching your n8n instance.

    POST/api/v1/webhooks/{id}/rotate-secretSee in the OpenAPI spec →

Subscribe n8n to Formfy signed-form webhooks

Create a webhook subscription pointing at your n8n Webhook trigger node. Formfy returns a signing secret used to verify every delivery via HMAC-SHA256.

curl -X POST https://formfy.ai/api/v1/webhooks \
  -H "Authorization: Bearer fk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "target_url": "https://your-n8n-instance.example.com/webhook/formfy-signed",
    "event_types": ["form.signed"]
  }'

Frequently asked questions

Does n8n have a native Formfy node?

Not yet in the official n8n node library, but every Formfy capability is reachable through n8n's built-in HTTP Request and Webhook nodes. You call the Formfy REST API directly — create webhook subscriptions, fetch signed PDFs, list signers — using your Bearer token in the Authorization header. A dedicated Formfy community node is on the roadmap but not required for any production workflow today.

Which Formfy events can trigger an n8n workflow?

Five event types are live in v1: form.created, form.sent, form.viewed, form.signed, and form.expired. Most n8n users start with form.signed because it marks a completed consent, waiver, or intake form. You can subscribe to multiple events in a single webhook subscription by passing all of them in the event_types array when you POST /api/v1/webhooks.

How do I verify Formfy webhook signatures in n8n?

Formfy signs every delivery with HMAC-SHA256 and includes the result in the X-Formfy-Signature header. In n8n, add a Code node immediately after the Webhook trigger to recompute the HMAC using the signing secret you stored as an n8n credential, then compare it to the incoming header value. Reject the payload if the signatures do not match before any downstream node runs.

Can I send a Formfy form from inside an n8n workflow?

Yes. Use an HTTP Request node to call POST /api/v1/forms/{id}/send with your Bearer token, the recipient's email or phone number, and an optional custom message. The recipient receives the form link by email or SMS within seconds. To generate a fresh form instance during a workflow run, call POST /api/v1/forms first, then chain the send step immediately after.

What happens if n8n is offline when a form is signed?

Formfy queues the webhook delivery and retries with exponential backoff for up to 24 hours. Once your n8n instance is reachable again, the queued payloads fire automatically in order. You can also inspect every delivery attempt in the Formfy dashboard's Webhook Deliveries log and replay any individual payload manually to recover missed workflow runs.

Does Formfy rate-limit API calls made from n8n workflows?

Yes — rate limits scale with your plan tier and are surfaced in X-RateLimit-Remaining and X-RateLimit-Reset response headers on every API response. For high-volume workflows processing many forms in parallel, use n8n's built-in Wait or rate-limit nodes to throttle outgoing HTTP Request calls. The 15-day free trial includes full API access at test-key limits; production limits apply after you upgrade.

How do I retrieve all signers on a multi-party Formfy form in n8n?

After a form.signed webhook fires, call GET /api/v1/forms/{id}/signers from an HTTP Request node using the submission_id in the payload. The response lists every signer, their email address, and their individual signed_at timestamp. This is especially useful for multi-party consent or authorization forms where you need to fan out notifications or records for each named signer.

Can n8n create new Formfy forms automatically from a template?

Yes. Call POST /api/v1/forms from an n8n HTTP Request node, passing your template ID and any pre-fill fields. Formfy returns the new form ID and a shareable link. Chain a POST /api/v1/forms/{id}/send step immediately after to deliver the form by email or SMS — a practical pattern for automating clinic intake packets on appointment confirmation events from your booking system.

Ready to wire n8n into Formfy?

Spin up an API key, run your first webhook, and route signed forms wherever your team already works.