# How to track lead source in HTML Forms

Wire up source attribution for every HTML Forms entry so each submission carries the campaign, channel, and visitor journey that produced it.

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

---

HTML Forms is the no-frills WordPress plugin for developers who'd rather write their own HTML than wrestle with a visual builder, free, open-source, lightweight, and famously fast. What it doesn't do (and doesn't claim to) is tell you which marketing campaign produced each submission. SourceLoop adds that piece without rewriting any of your HTML.

Three steps, around five minutes total, attribution flowing on every submission afterwards.

## What SourceLoop captures from HTML Forms

Each HTML Forms submission lands in SourceLoop with this context:

- **The visitor's acquisition channel** (organic, paid, referral, social, direct)
- **UTM parameters** parsed from the landing URL
- **Pages visited** in chronological order before the submission
- **Time on site** ahead of the form fill
- **Number of distinct sessions** before the lead converted
- **Email + name** extracted from the form fields
- **First-touch landing page** the visitor first arrived on
- **Source attributed to the converting session**
- **Device, country, browser**

## Before you start

You'll need:

- A **SourceLoop workspace** ([free trial](https://app.sourceloop.ai/sign-up))
- **WordPress admin** access (or another way to add markup to `<head>`)
- An **HTML Forms form** active on a published WordPress page

## Step 1: Drop SourceLoop's snippet into WordPress

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

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

Add it to your WordPress `<head>`. The typical paths:

- A standalone header plugin (Insert Headers and Footers, WPCode)
- Your active theme's `header.php` just before `</head>`
- Tag manager firing on All Pages
- For developer-built themes, the `wp_head` hook is the right place

Whichever path, the snippet must run on every page that hosts an HTML Forms form.

## Step 2: Confirm the form is on a tracked page

HTML Forms doesn't require any per-form configuration to play nicely with SourceLoop. Once the snippet loads, every HTML Form on every page that includes the snippet is attributable.

Quick sanity pass:

- The form is on a **published** page or post
- The form **includes an email field** (SourceLoop uses email to identify the lead)
- Aggressive script-defer rules aren't reshuffling SourceLoop after your form's submit handler runs

> **Submissions through unpublished pages can't be attributed**
> Pages that haven't been published, draft posts, scheduled future posts, and password-protected pages typically don't serve the SourceLoop snippet to anonymous visitors. Submissions on those pages reach HTML Forms but won't have a marketing source in SourceLoop.

## Step 3: Run a verification submission

Open your form's page in an **incognito tab**, append `?utm_source=test&utm_medium=verify&utm_campaign=htmlforms-check` to the URL, and submit a test entry with an email you control.

Within seconds, the new lead should appear at the top of the **Contacts Hub** in SourceLoop with the three test UTM values pinned to the record.

## Where to see HTML Forms submissions in SourceLoop

### Contacts Hub

Every HTML Forms submission becomes a contact row at [app.sourceloop.ai/contacts](https://app.sourceloop.ai/contacts). Drill into a contact for the visitor's complete pre-submission journey.

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

### Attribution dashboard

For the broader read, [app.sourceloop.ai/dashboards/traffic](https://app.sourceloop.ai/dashboards/traffic) groups HTML Forms submissions by source, medium, and campaign so you can see what's converting at a glance.

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

### Funnel reports

In [app.sourceloop.ai/funnels](https://app.sourceloop.ai/funnels/), configure a funnel ending in "HTML Forms submission". Cut by source, landing page, or device to find the highest-converting paths from first visit to form fill.

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

If paid acquisition is in your mix, forward HTML Forms submissions to **Google Ads, Meta, and LinkedIn as offline conversions** so the bidding algorithms train on real lead generation, not vanity clicks. [Connect your Google Ads account](/help/connect-google-ads/) walks through the setup.

## Frequently Asked Questions

### HTML Forms is a free open-source plugin. Does that affect SourceLoop compatibility?

No. SourceLoop tracks submissions in the browser, independent of how the form plugin is licensed or distributed. The free plugin works exactly the same as any commercial plugin.

### I built my form with raw HTML inside HTML Forms. Will it still get tracked?

Yes. That's exactly the kind of form the plugin is built for, and SourceLoop attaches attribution to the submission regardless of how custom the HTML is, as long as the form posts back to the page on your site.

### My HTML Form submits to Mailchimp via the plugin's integration. Does the Mailchimp subscriber still get the source data?

SourceLoop creates an attribution-rich contact record on its own side, independent of Mailchimp. If you want Mailchimp itself to receive UTM data, add hidden form fields for the UTM values and map them to Mailchimp merge fields, alongside (not instead of) SourceLoop.

### Can I track HTML Forms submissions inside a WordPress page builder (Gutenberg, Beaver, Bricks)?

Yes. The page builder you use to place the form's shortcode is irrelevant. As long as the SourceLoop snippet loads in `<head>` on the page, the submission gets attributed.

### Does this work if my form posts via AJAX vs full page reload?

Yes. Both submission paths are captured the same way.
