FlowKit

Connecting Typeform to n8n: native trigger, response structure and automations

Published 31 July 2026 · 5 min read

Typeform is one of the most widely used form tools for lead collection, qualification questionnaires and customer surveys — but responses are only worth what you do with them in the minutes after submission. Good news: n8n ships a native Typeform Trigger node that receives every response in real time, without configuring a single webhook by hand. This guide covers the full setup (token, trigger, response structure), the most profitable use cases, the classic conditional-fields trap, and when n8n's own native form is all you need.

Creating the credential: Personal Access Token

The Typeform node authenticates with a Personal Access Token (an OAuth2 credential exists too, but the token is simpler for server-side use):

  1. In your Typeform account settings, open the personal tokens section and generate a new token;
  2. Grant it only the scopes you need — reading forms and responses, managing webhooks — and nothing more;
  3. In n8n, create a Typeform API credential and paste the token;
  4. The token is shown only once at creation: store it in your secrets manager, not in a text file.

As always, least privilege applies: a token dedicated to n8n, revocable independently of everything else.

The Typeform Trigger node: a webhook registered automatically

Add the Typeform Trigger node at the start of your workflow, select your credential, then pick the form from the dropdown (the node queries the Typeform API to populate it). That's it: when you activate the workflow, n8n registers a webhook with Typeform pointing at your instance; when you deactivate it, the webhook is removed. You never copy a URL into the Typeform interface — it's the classic n8n webhook mechanism, just managed for you.

Two practical prerequisites: your n8n instance must be reachable over HTTPS from the internet (Typeform has to be able to call the URL), and to test, use the node's "Listen for event" mode then submit a test response in the real form — the most reliable way to see the exact data structure.

Response structure and "Simplify Answers"

The Typeform webhook sends a rich payload: a unique event_id, a form_response object containing the response token, submitted_at, the form definition and an answers array where each entry describes one field (type, value, field.id, field.ref):

{
  "event_id": "01HTX...",
  "event_type": "form_response",
  "form_response": {
    "token": "a3awk9nsheu72...",
    "submitted_at": "2026-07-31T09:12:44Z",
    "answers": [
      { "type": "email", "email": "marie@example.com", "field": { "ref": "work_email" } },
      { "type": "text", "text": "Automate our customer onboarding", "field": { "ref": "need" } }
    ]
  }
}

Walking that array by hand is tedious: that's what the node's Simplify Answers option is for. Enabled by default, it flattens the array into question → answer pairs directly usable in expressions ({{ $json["Your work email"] }}). Turn it off only when you need the raw metadata — field.ref values, for instance, are more stable than question labels if you rewrite your forms often.

The use cases that pay off

Once the response lands in n8n, the whole ecosystem opens up:

  • Lead qualification with AI scoring: free-text answers ("describe your need") are exactly what an LLM evaluates well — implicit budget, urgency, fit. The full pipeline is described in our guide to qualifying inbound leads with AI, and pairs well with automatic enrichment from the email or domain;
  • CRM creation: upsert the contact and deal into HubSpot or Pipedrive, with the AI score as a custom property to prioritize callbacks;
  • Archiving to Google Sheets: one row per response via a Google Sheets node — the simplest way to share survey results with a non-technical team;
  • Targeted Slack notification: a formatted message in the sales channel for hot leads only (score above a threshold), following our Slack bot pattern;
  • Ticket or case creation: a support-request or client-intake form that creates the entry in your tool, pre-categorized by AI.

The logic jumps trap: handling missing fields

Typeform's strength is its conditional paths: depending on the answers, some questions are never displayed. The consequence on the n8n side: those fields are absent from the payload, not sent empty. Any expression that assumes their presence ({{ $json["Your budget"].trim() }}) will crash on the first partial submission.

Two defenses:

  • the coalescing operator in expressions: {{ $json["Your budget"] ?? "not provided" }};
  • better: a Set (Edit Fields) node right after the trigger that explicitly normalizes every expected key with its default value. The rest of the workflow then works on a stable schema, whatever path the respondent took.

Those short paths aren't just a nicety: a study by Mirta Galesic and Michael Bosnjak published in 2009 in Public Opinion Quarterly, "Effects of Questionnaire Length on Participation and Indicators of Response Quality in a Web Survey" (see on Google Scholar), manipulated the announced length of a web questionnaire (10, 20 or 30 minutes) and showed that the longer the form, the fewer respondents start and finish it — and that answer quality degrades on the later questions. Logic jumps that spare respondents pointless questions directly improve your completion rate; your job on the n8n side is to absorb the technical counterpart.

Typeform or n8n's native Form Trigger?

Before paying for a Typeform subscription, ask the question: n8n ships its own Form Trigger, capable of multi-step forms. The differences that matter:

  • Experience and branding: Typeform delivers a very polished, one-question-at-a-time rendering with fine-grained customization — n8n's form is functional but plain;
  • Logic: Typeform's logic jumps are richer than n8n's page sequencing, even if the latter covers simple cases;
  • Data hosting: with a self-hosted n8n form, responses never transit through a third party — a decisive argument for sensitive data;
  • Cost: the n8n form costs nothing beyond your instance.

Simple rule: public form with high conversion stakes → Typeform; internal or operational form → native form.

Best practices: idempotency and GDPR

Two things to handle before going to production:

  • Idempotency: Typeform may redeliver a webhook (timeout, 5xx error on your side). The payload provides two natural keys: the event's event_id and the response token. Store them and skip duplicates, as detailed in our guide to webhook idempotency — essential if the workflow creates tickets or CRM contacts;
  • GDPR: a form almost always collects personal data. Limit what you propagate (does the CRM really need the full free-text answer?), purge n8n executions that contain the payloads, and plan the deletion circuit — our guide to handling GDPR requests with n8n shows how to automate it end to end, Typeform included via its API.

Key takeaways

Connecting Typeform to n8n takes ten minutes: a Personal Access Token in a Typeform API credential, a Typeform Trigger node that registers the webhook by itself on activation, and the Simplify Answers option for immediately usable data. The real attention points are elsewhere: tolerate the missing fields created by logic jumps, deduplicate on the event_id or response token, and stay frugal with the personal data you propagate. Start with the lead → AI scoring → CRM → Slack pipeline: it's the one that turns a form into revenue fastest.

FAQ

Frequently asked questions

Do I need to configure a webhook manually in Typeform for n8n?

No. The Typeform Trigger node registers the webhook with Typeform itself the moment you activate the workflow, and removes it on deactivation. You simply pick the form from the node's dropdown; no manipulation in Typeform's Connect tab is required.

Where do I find the Typeform Personal Access Token?

In your Typeform account settings, in the section dedicated to personal tokens. Generate a token with the scopes you need — at minimum reading forms and managing webhooks — then paste it into a Typeform API credential in n8n. Treat it like a password: one token per use, never hardcoded in a node.

What happens when a respondent never sees some questions because of a logic jump?

Questions that were never displayed simply don't appear in the response n8n receives. Your workflow must therefore tolerate missing fields: default values with the ?? operator in expressions, or a Set node that normalizes every expected key before the rest of the processing. Without that, the workflow fails on the first partial submission.

Typeform or n8n's native form: which should I choose?

Typeform wins on respondent experience (polished design, advanced conditional logic, one question at a time) and when the form is a marketing asset in itself. n8n's native Form Trigger is enough for internal or simple needs: free, no third-party branding, and the data never transits through an external service — a real GDPR argument.

Bundle FlowKit Complet

€269