How to track lead source in Happyforms
Layer marketing attribution on top of every Happyforms submission so you can finally see which channel earned each lead, not just that the form was submitted.
On this page
Happyforms aims to be the form plugin you can hand to a non-technical client without flinching, clean UI, sensible defaults, and a strong opinion about UX. What it leaves to the marketer is figuring out where the leads actually came from. SourceLoop bolts that piece on without rewriting anything.
Three lightweight steps, five minutes of work, and every Happyforms submission afterwards is tied back to its acquisition source.
What SourceLoop captures from Happyforms
After installation, here’s what gets attached to every Happyforms submission:
- The marketing source that drove the visit (organic, paid, referral, social, etc.)
- UTM source / medium / campaign / content / term values from the landing URL
- Step-by-step browsing path before the visitor hit submit
- Total time on site leading up to the submission
- Return-visit count prior to the conversion
- Email and name from the Happyforms fields
- First-touch landing page of the visitor’s history
- Source of the converting session specifically
- Device, country, and browser signals
Before you start
You’ll need:
- A SourceLoop workspace (free trial)
- WordPress admin access (or any other way to add markup to
<head>) - A Happyforms form embedded on a published page
Step 1: Install the SourceLoop snippet
Go to Setup -> Tracking code in the SourceLoop sidebar and copy the snippet shown.
Add it to your WordPress site’s <head>. Any of these work:
- A header injection plugin like “Insert Headers and Footers” or “WPCode”
- Direct edit to your active theme’s
header.php(just before</head>) - The “Custom Code” or “Tracking” panel inside your SEO plugin
- Google Tag Manager set to fire on all pages
Wherever you put it, the snippet should run on every page that contains a Happyform.
Step 2: Confirm the form is on a publicly-tracked page
Happyforms doesn’t need any per-form configuration to play nicely with SourceLoop. Once the snippet is live, every published page with a Happyform on it gets attributed automatically.
Worth double-checking:
- The form is on a published page or post (not a draft or scheduled future post)
- The form collects an email address (SourceLoop treats email as the lead key)
- Page-cache or script-defer plugins aren’t loading SourceLoop after the form submits
Step 3: Test with a real submission
Pop the form’s page open in an incognito tab with ?utm_source=test&utm_medium=verify&utm_campaign=happy-check glued onto the URL, then submit using a real email address.
Within a few seconds, that submission should show up at the top of the Contacts Hub in SourceLoop with all three UTM values stamped on the record.
Where to see Happyforms submissions in SourceLoop
Contacts Hub
Each Happyforms submission becomes a contact row at app.sourceloop.ai/contacts. Open a row to see the full pre-submission journey: every page the lead visited, every session they had, every campaign that touched them.
Attribution dashboard
For the broader picture, app.sourceloop.ai/dashboards/traffic groups all your Happyforms submissions by source, medium, and campaign. A quick scan tells you which channels are actually pulling weight.
Funnel reports
In app.sourceloop.ai/funnels, configure a funnel that ends in “Happyforms submission”. Cut it by source or landing page to see which paths drive the highest conversion rate.
If your stack includes paid acquisition, forward Happyforms submissions to Google Ads, Meta, and LinkedIn as offline conversions so the algorithms optimise toward leads, not clicks. Connect your Google Ads account walks through the setup.
Frequently asked questions
-
Will this work with the free Happyforms plugin?
Yes. SourceLoop sits entirely in the browser, so the Happyforms tier you're on (free or Upgrade) has no effect on tracking.
-
Happyforms is known for its design polish. Will the snippet break my forms visually?
No. The SourceLoop snippet doesn't touch the DOM, render UI, or load any CSS. Your Happyforms styling stays exactly as designed.
-
I use Happyforms with a custom theme. Does that change setup?
No. The snippet only needs to be in your theme's `<head>` (or injected by a plugin). Any theme that follows WordPress conventions is fine.
-
Can I track Happyforms submissions on a WooCommerce or membership page?
Yes. As long as the page hosting the Happyform also serves the SourceLoop snippet, attribution attaches normally, whether the form is on a public landing page, a gated members area, or a checkout step.
-
My Happyforms form sends notifications via email. Will those still work?
Yes. Happyforms continues to dispatch its email notifications and any connected webhooks. SourceLoop runs in parallel and adds attribution data on its end.