Typeform

Connect Typeform & set up form-submission tracking

FunnelTrack captures Typeform submissions server-side via webhook and stitches each one back to the visitor's ad session through a Typeform End Screen redirect — every form lead you fire to Meta, Google, TikTok, and the rest carries the original click ID, identity data, and session context. Works with both embedded forms on your own pages and standalone Typeform pages.

What you'll need
  • A Typeform account on any paid plan that allows Webhooks (Basic and up)
  • Editor access to the forms you want to track
  • The FunnelTrack pixel deployed on every page of your site — especially on the post-submission thank-you page
  • At least one connected destination (Meta CAPI, Google Ads, GA4, etc.)
  • About 10 minutes per form
Attribution requires the End Screen redirect
Typeform's webhook is sent from Typeform's servers, not the user's browser — there's no user IP or user agent in the payload. To match a submission to an ad click, the user must be redirected to a thank-you page on yourdomain at the end of the form, that page must have the FunnelTrack pixel installed, AND the redirect URL must carry the submitter's contact info as query parameters (email, phone, name, etc.). FunnelTrack reads those parameters when the pixel fires, creates the contact server-side, and matches the incoming webhook to that contact deterministically. No redirect / no parameters = no attribution.

Setup

Drop the FunnelTrack pixel into your site, wire your Typeform's End Screen to redirect to a thank-you page with the submitter's details appended, then add the FunnelTrack webhook on each form.

1

Deploy the FunnelTrack pixel

From the Pixelsection of FunnelTrack, copy your pixel snippet and deploy it on every page of your site — including any third-party landing pages, the page hosting your Typeform embed (if you're embedding), and the post-submission thank-you page users land on after the form ends.

Embedded vs. standalone forms
Both work for attribution. Embedded forms get the pixel on the page hosting the embed. Standalone Typeform pages (hosted on typeform.com) can't run the FunnelTrack pixel themselves, so for those it's the End Screen redirect to your thank-you page that does the matching. Either way the user must ultimately land on a page on your domain that has the pixel.
2

Grab your FunnelTrack Typeform webhook URL

In FunnelTrack, open Integrations → Sources → Typeform. Copy the Webhook URL shown on the connection page — this is the single endpoint every Typeform in your workspace posts submissions to.

Treat this URL like a secret
The webhook URL contains your workspace's API key. Don't paste it into public docs, screenshots, or shared spreadsheets — anyone with the URL can post submissions to your workspace.
3

Configure the End Screen redirect

Open the form in the Typeform editor, go to Endings, and either add or edit an End Screen. Set its type to Redirect to URLand paste a thank-you URL that points to a page on your site with the FunnelTrack pixel installed. Append the submitter's details as query parameters using Typeform's field-reference syntax ({{field:...}}).

Use the parameter names below — these are the ones FunnelTrack understands. You don't need every one; map what your form collects:

Query paramWhat it should hold
emailSubmitter's email address
phoneSubmitter's phone number
nameSubmitter's full name (use only if you don't have separate first / last fields)
fnSubmitter's first name
lnSubmitter's last name
cityCity
regionState / province / region
zipZIP / postal code
countryCountry (ISO-2 code is best, e.g. US)

An example redirect URL with several fields wired up:

https://your-site.com/typeform-thank-you?email={{field:EMAIL_FIELD_REF}}&fn={{field:FIRST_NAME_REF}}&ln={{field:LAST_NAME_REF}}&phone={{field:PHONE_REF}}&city={{field:CITY_REF}}&region={{field:REGION_REF}}&zip={{field:ZIP_REF}}&country={{field:COUNTRY_REF}}
Why pass the data in the URL
When the FunnelTrack pixel fires on your thank-you page, it parses these query parameters and creates / updates a contact for your workspace right there — keyed by the email and phone hashes. The Typeform webhook, which arrives separately with the same email and phone from its answers[]array, then resolves to that same contact deterministically and links to the visitor's session through contact history. No IP fingerprinting, no time guessing — the match is direct.
4

Add the FunnelTrack webhook to each Typeform

In the Typeform editor, go to Connect → Webhooks and click Add a webhook. Paste the FunnelTrack Typeform webhook URL from step 2 into the Endpoint URL field. Save, then make sure the webhook's toggle is enabled.

Repeat this for every form you want to track
Typeform's Webhooks integration is per-form, so you'll need to add the same FunnelTrack URL on each form's Connect → Webhooks panel. It's the same URL every time — FunnelTrack uses the form ID inside the payload to route it to the right event config.

Once the webhook is saved, submit a quick test entry on the form so FunnelTrack has a sample payload to work with in the next steps.

5

Add a form-submission event in a connected destination

In FunnelTrack, open a connected destination's routing page (e.g. Typeform → Meta Conversions API). You'll see an All Form Submissionstemplate card already in the list — this fires for every Typeform submission in the workspace, no matter which form it came from. Pick a destination event (e.g. Meta's Lead), flip the toggle on, and save. Done.

When to skip the template and build a custom event
Use the All Form Submissions template when every Typeform on the workspace should map to the same destination event. Build a custom per-form event (step 6 below) when different forms need different destination events (e.g. one form fires Lead, another fires Schedule) or when you want to map specific Typeform fields into the event payload.
6

(Optional) Build a custom per-form event

For per-form precision, click Add Event on the same destination routing page. The Add Event modal asks for a Form ID — you can find it in Typeform by opening the form editor and copying the short alphanumeric ID from the URL (e.g. iD9w0L4O).

Paste the form ID into the modal and click Find Last Submission. FunnelTrack pulls the most recent submission for that form and surfaces every field it found — both the raw Typeform field IDs (e.g. bQUJnQuXqDu7) and slugified question titles (e.g. work_email_address) so you can map by whichever feels more readable. Give the event a name that'll show up on the destination's outbound usage logs, then pick a destination event below.

Submit a test entry first
Field discovery reads from the most recent submission on that form. If the form has never been submitted (or your webhook isn't wired up yet), Find Last Submission will come back empty — send one test entry first, then run discovery.
7

(Optional) Map event parameters

Two kinds of parameters can be mapped on the event:

  • Event Parameters — static values you type in (e.g. currency: USD) or dynamic values pulled from form fields (e.g. form_title pulled from the Typeform form title). These are sent to the destination as standard or custom event parameters.
  • User Data Parameters — FunnelTrack auto-captures email, phone, name, and address fields from the Typeform submission via the answer types (email, phone_number) plus title heuristics. If your form collects identity data for more than one person (e.g. a referral form with both the referrer's and referee's emails), use the User Data section to map which field is the primary contact for matching.
8

(Optional) Set event conditions

Use the Conditions section to fire the event only when the submission matches certain criteria — for example, only count a pricing-form submission as a lead when the budget choice is over $5,000, or gate a Meta Schedule event behind a specific use-case answer.

9

Test & deploy

Save the event card. Submit a final test entry on the form — the saved card on the routing page shows the event as configured, the inbound usage log shows Form {{ID}} (e.g. Form iD9w0L4O), and the outbound log shows the event name you set being dispatched to the destination.

Notes & best practices

A few things worth knowing before you scale this across every Typeform on your site.

  • The End Screen redirect is what makes attribution work. Without it, the pixel never fires on a page tied to this submission, so the only matching signal is contact history (and for first-time visitors that's nothing). Always configure the redirect.
  • One webhook URL, many forms.Your workspace has a single FunnelTrack Typeform webhook URL. Add it to every form's Connect → Webhooks panel. FunnelTrack uses the form ID inside the payload to route to the right event config — you don't need separate URLs per form.
  • Embed where you can. Embedded Typeforms get the pixel on the embed page (so we see the session at form start), then the redirect carries it through to the thank-you page (so we see the session at form end). That gives the cleanest cross-channel attribution.
  • Email auto-detection just works.Typeform tells us each answer's type — when a field is email or phone_number we pick it up automatically. Title heuristics fill in first / last name and address fields. Manual mappings are only needed for ambiguous forms (e.g. multiple emails on a single submission).

Events we support

What Typeform can send to FunnelTrack out of the box.

Typeform ships one event type through the Webhooks integration: a form_response submission. FunnelTrack receives the full submission payload (every answer plus the form definition) and discovers every field the form contains, so you can map any of them to event parameters or user data on the destination side.

There's no fixed event catalog here — each form's submission is the event, and the form ID is the discriminator FunnelTrack uses to route it to the right destination config. The All Form Submissions template is a workspace-wide catch-all that ignores form ID and matches every Typeform submission.

FAQs

Does this work on Typeform's free plan?
Webhooks are gated to Typeform's paid plans (Basic and up). If the Webhooks integration doesn't appear under Connect on your form, check your Typeform plan.
What if my form doesn't have an email or phone field?
Attribution match quality drops sharply without an identity field — we can only match via time proximity, which is fragile. Add at least an email field to any form you want to attribute, and pass it through the End Screen redirect.
What if my form has multiple email addresses?
Use the User Datasection on the event card to manually map which Typeform field is the primary contact email. By default we pick the first email-type answer we see — if that's the wrong one, override it there.
Can I see the raw payload FunnelTrack received?
Yes — in two places. The Add Event modal's discovered-fields table (after clicking Find Last Submission) shows the most recent payload structure. The inbound row in the usage log shows the exact payload FunnelTrack received for any given submission.

Ready to set it up?

Jump straight into your FunnelTrack workspace and start wiring up your first Typeform.

Configure your Typeform integration →

Need a hand?

If anything in this guide didn't match what you're seeing in Typeform or FunnelTrack, open a support ticket in your dashboard and we'll get you sorted.