Skip to content
SourceLoop
Web form tracking

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
  1. What SourceLoop captures from Happyforms
  2. Before you start
  3. Step 1: Install the SourceLoop snippet
  4. Step 2: Confirm the form is on a publicly-tracked page
  5. Step 3: Test with a real submission
  6. Where to see Happyforms submissions in SourceLoop
  7. Contacts Hub
  8. Attribution dashboard
  9. Funnel reports

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.

SourceLoop Setup page with the tracking code snippet ready to copy

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.

SourceLoop Contacts Hub showing a Happyforms submission with the lead's full journey

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.

SourceLoop attribution dashboard with Happyforms submissions grouped by source and campaign

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.

SourceLoop funnel report ending in a Happyforms submission conversion step

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Track every conversion to its true source

Capture and send full attribution data from every signup, lead, booking, and sale to your CRM and ad platforms, so you know exactly what's driving revenue.

Without SourceLoop

Untagged

Kayden Floyd

kayden@abc.com

  • SourceUnknown
  • MediumUnknown
  • CampaignUnknown
  • Landing pageUnknown
Journey
No touchpoints captured

With SourceLoop

Auto-tagged

Kayden Floyd

kayden@abc.com · Acme Co.

  • Channel Paid Social
  • CampaignFree_demo
  • Landing page/pricing
Journey
Synced to HubSpot Google Ads Meta