# How to track lead source in Framer Forms

Capture the channel, campaign, and full visitor journey behind every Framer form submission with a single hidden field.

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

---

Framer is the design-led website builder picked by product teams, freelancers, and design studios who want pixel-perfect control without writing layout code. Its native Form component is good but, like every form tool, blind to marketing source. This guide fixes that with a single hidden field setup.

Three quick steps, around five minutes, no API access required.

## What SourceLoop captures from Framer Forms

Each Framer form submission lands in SourceLoop with:

- **Acquisition channel** plus the full UTM parameter set
- **Page sequence** the visitor took before submitting
- **Time on site** before the form was filled
- **Number of visits** before they converted
- **Email and name** from the Framer form fields
- **First landing page** and the URL that referred them
- **Last-session source**, the one that produced the submission
- **Device, country, and browser**

## Before you start

You'll need:

- A **SourceLoop workspace** ([free trial](https://app.sourceloop.ai/sign-up))
- **Edit access** to your Framer project's Site Settings (specifically the Custom Code section)
- At least one Framer page with a Form component

## Step 1: Install the SourceLoop tracking script

Sign in to SourceLoop, head to **Setup -> Tracking code** in the left sidebar, and copy the snippet.

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

In Framer, open your project and go to **Site Settings -> Custom Code -> Head**. Paste the SourceLoop snippet there. Republish your site to push the change live.

## Step 2: Add a hidden field to your Framer form

Open the page that has your form and select an existing Form Field component (or add a new one). In the field's properties panel, set:

```
Name = sl_aid
Type = Hidden
```

Save your form. That's the only field you need to add. SourceLoop fills in the channel, source, medium, campaign, landing page, and other attribution details on its side using this one identifier.

> **Framer-hosted preview URLs aren't trackable**
> Sharing a Framer preview link (the `<project>.framer.app` URL) doesn't trigger SourceLoop's tracker because the snippet is added to your published custom-domain site, not preview environments. Always send campaigns to your live published URL.

## Step 3: Verify it's working

Open your form page on the live site in an **incognito window**, add `?utm_source=test&utm_medium=verify&utm_campaign=framer-check` to the URL, and submit a test entry using a real email.

Within seconds, the submission should appear on the **Contacts Hub** in SourceLoop with the test UTMs attached to the contact.

## Where to see Framer submissions in SourceLoop

### Contacts Hub

Each Framer submission becomes a row at [app.sourceloop.ai/contacts](https://app.sourceloop.ai/contacts). Expand a row for the visitor's full pre-submission journey.

![SourceLoop Contacts Hub showing a Framer submission with the lead's full journey](/help/screenshots/sourceloop-lead-journey-demo.webp)

### Attribution dashboard

[app.sourceloop.ai/dashboards/traffic](https://app.sourceloop.ai/dashboards/traffic) groups Framer submissions by source, medium, and campaign for a high-level view of what's working.

![SourceLoop attribution dashboard with Framer 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 "Framer submission". Slice by source or landing page to find your most-converting paths.

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

For paid acquisition, forward your Framer submissions to **Google Ads, Meta, and LinkedIn as offline conversions** so the bidding algorithms learn from real form completions. [Connect your Google Ads account](/help/connect-google-ads/) walks through the wiring.

## Frequently Asked Questions

### Why just one hidden field?

The single `sl_aid` identifier is everything SourceLoop needs to look up the full attribution data, channel, source, medium, campaign, landing page, click IDs, first-touch and last-touch, server-side. You don't have to maintain a dozen hidden fields per form.

### Where does the tracking script go in Framer?

Inside your Framer project's Site Settings -> Custom Code -> Head section. It loads on every page of your published Framer site automatically.

### Does this work for inline Framer Forms and modal/popup forms?

Yes. Both work the same way. The Hidden field setup is a property on the form field, regardless of how the form is displayed on the page.

### What if I migrated from an older SourceLoop setup that required many hidden fields?

You can delete all the older fields and keep just `sl_aid`. The newer setup hydrates the remaining attribution data on SourceLoop's side rather than requiring it on the form.

### Will the hidden field be visible to my form respondents?

No. Setting the field's Type to "Hidden" in Framer hides it from the rendered form. Respondents see only the visible fields you've added (name, email, etc.).
