Typeform integration

How to track the source of your leads in Typeform.

Typeform’s Hidden Fields read the URL the moment the form loads. Here is how to catch the source before that moment passes.

Works with embedded and hosted Typeforms No Hidden Fields, no Custom Variables Live in minutes

Integrates with the tools you already use.

Salesforce
HubSpot
Pipedrive
Gmail
Twilio
Google Ads
Gravity Forms
Jotform
Webflow
Wix
Calendly
Typeform

Works with every Typeform format

Classic Typeforms Hosted on typeform.com Embedded on your site Logic Jumps Custom branding Outcome-based forms
The gap

Typeform converts. Source data is on you.

Typeform’s conversational UI is some of the highest-converting form design going. That is why teams pick it. The platform has the parts for source capture too, Hidden Fields, URL parameters and webhooks through Connect. Assembling them into something that actually reports is a project, and it is yours.

What Typeform offers

The building blocks

  • Hidden Fields for URL parameter passing
  • Webhooks via the Connect panel
  • 30+ native CRM & tool integrations
  • Branching logic (Logic Jumps, Outcomes)
  • Custom subdomains on paid plans
What still needs work

Per form, per channel

  • Hidden Fields added per form, in the builder
  • URL parameters read at form-load only
  • No cross-page session tracking
  • Raw UTMs need interpretation downstream
  • Source data lives in raw response payload, not as analysed attribution
The usual workaround

Setting up Typeform hidden fields

The standard recipe runs like this. Add Hidden Fields per form for every UTM key. Update every Typeform URL to carry those parameters. Accept that mobile and cross-page visitors lose their source, then build a webhook receiver to parse Typeform’s response payload into something you can read.

The manual way

  • 01
    Open each Typeform in the builder. Add Hidden Fields for utm_source, utm_medium, utm_campaign, utm_content, utm_term. Repeat for every form.
  • 02
    Update every Typeform URL. In ads, on landing pages, in email footers. To include those parameters in the right format. Test each one.
  • 03
    Accept that URL parameters only read at form load. If a visitor lands on your homepage with UTMs and clicks through to the Typeform, the parameters need to be passed forward by you. They’re lost otherwise.
  • 04
    Connect the webhook to your CRM or a custom receiver. Parse Typeform’s nested JSON response structure to extract the Hidden Field values. Map them to your CRM’s schema. Maintain it.

With Lead Source

  • Paste one webhook URL into Typeform’s Connect panel. Once per form, or apply to all via Typeform’s API.
  • We receive every Typeform submission with source, campaign, and full page journey attached. Captured at the moment of submission, not reconstructed later.
  • Cross-page UTM persistence handled automatically. If the visitor landed on your homepage and clicked through to the Typeform two pages later, we still know.
  • Source recorded with the campaign name written out: “Google Ads · Local Services Sydney”. Deliverable to your inbox, dashboard, and (optionally) a CRM field via outbound webhook.

// Typeform has the parts. We are the attribution you do not rebuild per form.

The session problem

Typeform attribution across multiple page views

A Typeform Hidden Field takes its value from the URL the form loads on. Click an ad and fill the form on that same page load and it works. Most visits are not that tidy.

Somebody arrives with campaign parameters, reads two more pages, then opens the form. By then the URL is bare and the Hidden Field has nothing to read. The value has to be held from the first page through to the form and written in as the form loads. That part is left to you.

Form tracking is the piece that holds it. The source is recorded on the first page load, held for the whole session, and attached server-side at submission.

Four failure modes

Why your Typeform lead source is blank

Blank source data almost always comes down to one of four things.

The session was not held, so the parameters stayed on the landing page while the visitor moved on, or the field exists and nothing writes to it, so every response arrives empty, which looks like a tracking gap and is a configuration gap, or nothing resolved the value, so Google arrives under three spellings and no report will group them, or the send action predates the field, so the Hidden Field is on the form and not in the payload your CRM receives.

The third is the quiet one. Resolving a raw parameter to a fixed category is what keeps a year of responses comparable, and that is what a lead source taxonomy is for.

What you install

One webhook URL. That’s the whole thing.

Sign up, copy your unique webhook URL from the dashboard, paste it into Typeform’s Connect panel. We receive every response and attach the source automatically. The block below shows what the URL looks like. Your real one has your account ID baked in.

Lead Source installs in a few minutes, and one webhook covers every Typeform you run. Curious what a response records right now? Look at the source your forms are capturing today.

example only. Your real webhook URL is in the dashboard
# illustrative. Paste your real webhook URL from app.leadsource.co
https://app.leadsource.co/api/capture/webhook/YOUR_SITE_KEY

The real webhook URL is generated for your account when you sign up. Copy it from the integrations page in your dashboard. Async delivery, retries on failure, signed payloads.

Install in Typeform

Three steps. Done in five minutes.

1

Sign up. Get your webhook URL

Create your free Lead Source account. The integrations page shows a webhook URL with your account ID already in it. Copy that.

No credit card required to start. The signup flow takes about a minute.
2

Add the webhook in Typeform Connect

Open your Typeform in the builder and go to Connect → Webhooks → Add a webhook. Paste the Lead Source URL, save, and toggle it on. That is the whole setup.

Webhooks are available on Typeform’s Basic plan and above. Free plan users can still connect via Zapier or a third-party relay. Contact us for setup help.
3

Submit a test through your Typeform

Fill in your Typeform and submit it. The response lands in your dashboard within a minute or two with the source, campaign and page journey attached, and the email notification arrives alongside.

Want to test end-to-end? Open your Typeform with ?utm_source=test appended to the URL before starting. That’ll be the source on the lead.
Common questions

Questions, answered.

Will it conflict with my existing Typeform integrations?

No. Typeform supports multiple webhooks and integrations per form. Add the Lead Source webhook URL and your existing connections (HubSpot, Mailchimp, Salesforce, Slack, Zapier, etc.) keep working exactly as configured. We receive a copy of the submission. We don't modify the data or interfere with the response flow.

Does it work with Logic Jumps and Outcomes?

Yes. Lead Source captures the response at the moment of submission. What path the visitor took through the form (Logic Jumps fired, Outcomes assigned) doesn't affect our capture. The full response, including which questions were answered and any computed Outcome, comes through in the webhook payload.

Do I need a paid Typeform plan?

Native webhook delivery via Connect is available on Typeform's Basic plan and above. On the free plan, you can still use Lead Source via Zapier or a similar relay (we accept submissions from any HTTP source). If you're on free and want to set up the relay, get in touch. We'll walk you through it.

Does it work with embedded Typeforms vs Typeforms hosted on typeform.com?

Both. The webhook fires at the Typeform-server level when a response is recorded, so it doesn't matter whether the form was filled inline on your site, in a popup, or directly on typeform.com. All paths reach us. The webhook install is actually the path that works best for hosted Typeforms, since the form page itself isn't on your domain and a script tag wouldn't see the submission.

What about Typeform's quiz scores and Outcome variables?

They come through in the webhook payload alongside the standard response fields. Lead Source captures them as part of the submission data. Useful if you're using Outcomes to qualify leads and want to see source data filtered by Outcome in your dashboard.

Track your Typeform leads. Free to start.

One webhook URL. Every Typeform response. Source, campaign, page journey without adding Hidden Fields to a single form.

Start free

Free to start · no card