# How to track lead source in Jotform

Get full attribution on every Jotform submission, with channel, source, campaign, click ID, and landing page captured as hidden fields right inside the form data.

Source: https://sourceloop.ai/help/track-lead-source-in-jotform/
Updated: 2026-05-28

---

Jotform is the workhorse of online forms: HR intake, healthcare onboarding, education, government, you name it. It's powerful and flexible, but the source data flowing to your downstream tools is usually just "Web Form Filled", with no detail about which marketing channel actually produced the submission. This guide makes the attribution data part of every form submission itself.

Four steps, about ten minutes total. Works on every Jotform plan including Free.

## What SourceLoop captures from Jotform

After setup, every Jotform submission arrives in your destination tools (and in SourceLoop) with these attribution values populated as hidden fields:

- **Channel** + **Latest Source**, **Medium**, **Campaign**, **Term**, **Content** (the closing session's UTM details)
- **Latest Landing Page** (where the closing session began)
- **Click IDs** for paid ads (`gclid`, `fbclid`, `msclkid`, `li_fat_id`, `ttclid`)
- Optional **First Channel / Source / Medium / Campaign / Term / Content / Landing Page** for multi-touch attribution
- The respondent's regular form fields (email, name, etc.) flow through unchanged

## Before you start

You'll need:

- A **SourceLoop workspace** ([free trial](https://app.sourceloop.ai/sign-up))
- **Edit access** to the website where the Jotform will be embedded
- A **Jotform account** (any plan) with at least one form built

## Step 1: Install the SourceLoop tracking script

Sign in to SourceLoop, open **Setup** from the left sidebar, and click the **Tracking code** tab. Copy the snippet on display.

![SourceLoop Setup page with the tracking code snippet to copy](/help/screenshots/sourceloop-tracking-code-script.png)

Add the snippet to the `<head>` of every page on your site. Site-wide coverage gives SourceLoop the full picture of the respondent's journey, not just their visit to the form page.

## Step 2: Add latest-touch hidden fields to your Jotform

For each field below, repeat the same workflow: add a Short Text field, name it, mark it hidden, and set the Unique Name. The Unique Name is what matters, that's how SourceLoop knows which attribution value to put where.

**The repeatable workflow:**

1. Open your form in the Jotform Form Builder.

![Jotform Form Builder with a form open](/help/screenshots/bw407qgz5hv.png)

2. Click **Add Form Element** on the left sidebar.

![Jotform Add Form Element panel](/help/screenshots/cp8dyftt8u.png)

3. Add a **Short Text** field.

![Jotform Short Text field added to the form](/help/screenshots/ew305hansff.png)

4. Open the field's **Properties** panel and name the field per the table below.

![Jotform field Properties panel](/help/screenshots/ydin2555csf.png)

5. Navigate to the **Advanced** tab, enable **Hide Field** so visitors don't see it, then set the **Unique Name** per the table below.

![Jotform field Advanced tab with Hide Field and Unique Name configuration](/help/screenshots/q77hods72ul.png)

**Latest-touch fields (recommended baseline):**

| Field Label | Unique Name |
| --- | --- |
| Channel | `channel` |
| Latest Source | `attribution_source` |
| Latest Medium | `attribution_medium` |
| Latest Campaign | `attribution_campaign` |
| Latest Term | `attribution_term` |
| Latest Content | `attribution_content` |
| Latest Landing Page | `landingpage` |

**Click ID fields (only if you run paid ads on these networks):**

| Field Label | Unique Name |
| --- | --- |
| Google Click ID | `gclid` |
| Facebook Click ID | `fbclid` |
| Microsoft Click ID | `msclkid` |
| LinkedIn Click ID | `li_fat_id` |
| TikTok Click ID | `ttclid` |

> **Use the exact Unique Name values**
> The Unique Name is what gets matched. If you label the field differently from the table or use a different unique name, the value won't populate. Field Labels can be anything you want, but the Unique Name has to match exactly.

## Step 3: Track first-touch attribution (optional)

Skip this step unless you want multi-touch attribution, the ability to compare the original acquisition channel against the most recent one. If you do, repeat the same workflow from step 2 for each field below:

| Field Label | Unique Name |
| --- | --- |
| First Channel | `first_channel` |
| First Source | `first_source` |
| First Medium | `first_medium` |
| First Campaign | `first_campaign` |
| First Term | `first_term` |
| First Content | `first_content` |
| First Landing Page | `first_landingpage` |

With both touch sets in place, your Jotform submissions carry the complete picture: which channel originally found the prospect, and which channel finally converted them.

## Step 4: Embed the Jotform on your website

The form needs to live on a page where the SourceLoop tracking script is already running.

1. In Jotform, click **Publish** at the top of the form builder.

![Jotform Publish button highlighted at the top of the builder](/help/screenshots/rsx24qylmi.png)

2. Select **Embed** from the left menu, then pick either **iFrame** or **JavaScript**.

![Jotform Embed options with iFrame and JavaScript](/help/screenshots/pfoy8z5qtyg.png)

3. Copy the embed code and paste it on your site where you want the form to appear.

Now, every time someone completes the form, the attribution values appear alongside the rest of the answers in the form submission.

![Jotform submission with attribution hidden field values populated](/help/screenshots/vs1ukq6cisr.png)

> **Direct Jotform URLs aren't attributable**
> Submissions made through a raw `form.jotform.com/<form-id>` link or your hosted Jotform page **won't carry attribution data**. The respondent never touches a tracked page, so the hidden fields stay empty. Route those campaigns through a landing page on your own site that embeds the form.

## Where to see Jotform submissions in SourceLoop

Beyond the attribution data being inside each Jotform submission itself, SourceLoop also gives you three dedicated views:

### Contacts Hub

Each Jotform submission becomes a row in the Contacts Hub at [app.sourceloop.ai/contacts](https://app.sourceloop.ai/contacts). Expand a row to see the visitor's full pre-submission timeline: the campaign that brought them in, the pages they browsed, and how long they took before submitting.

![SourceLoop Contacts Hub with a Jotform submission expanded to show the lead's full pre-submission journey](/help/screenshots/sourceloop-lead-journey-demo.webp)

### Attribution dashboard

Pull up [app.sourceloop.ai/dashboards/traffic](https://app.sourceloop.ai/dashboards/traffic) to see Jotform submissions grouped by source, campaign, and landing page. Great for spotting which channels generate qualified leads versus those that produce traffic but no conversions.

![SourceLoop attribution dashboard with Jotform submissions grouped by source and campaign](/help/screenshots/sourceloop-attribution-dashboard.webp)

### Funnel reports

Build a funnel in [app.sourceloop.ai/funnels](https://app.sourceloop.ai/funnels/) ending in "Jotform submission". Cut it by source, campaign, or landing page to see your most-converting paths.

![SourceLoop funnel report ending in a Jotform submission conversion step](/help/screenshots/sourceloop-funnel.png)

If paid acquisition is part of your strategy, forward the Jotform submissions to **Google Ads, Meta, and LinkedIn as offline conversions** so the bidding algorithms can optimize against real lead generation. [Connect your Google Ads account](/help/connect-google-ads/) walks through that setup.

## Frequently Asked Questions

### Does this work with Jotform's Free plan?

Yes. The setup is entirely on the form-builder side and on your website, no webhooks or API connections involved. Every Jotform plan supports hidden fields.

### Why are the attribution values shown as hidden fields instead of being added separately?

This is the "manual" integration pattern, the attribution data lives directly on the Jotform submission. That way it flows automatically into whatever downstream system you've connected (CRM, Zapier, Make, email autoresponder) without needing a separate webhook for SourceLoop.

### Do I have to add every field? That's a lot of hidden inputs.

No. The latest-touch fields in step 2 are recommended for a baseline view of attribution. The click-ID fields are only needed if you run paid ads on those networks. First-touch fields in step 3 are optional and only matter if you want multi-touch attribution. Skip what doesn't apply.

### What happens to the hidden fields when someone fills the form?

They're populated automatically as soon as the form loads on a page where the SourceLoop tracker is running. The respondent never sees them, but the values come through on the submission alongside the visible answers.

### I share my Jotform via its direct form.jotform.com link. Will those submissions carry attribution?

No. Submissions made through a raw `form.jotform.com/<form-id>` link won't carry attribution data, because the visitor never lands on a page with the tracker. To attribute that traffic, embed the form on a landing page that has the SourceLoop snippet.
