Skip to content
Lead Tracking

Lead Source Tracking for Every WordPress Form Plugin

Roger McSaveney 28 February 2026 · 17 min read

You run Google Ads, Facebook campaigns, and maybe some LinkedIn outreach. Leads come in through your WordPress forms. But when your sales team asks “where did this lead come from?” — you check your form entries and find nothing. No channel, no campaign, no click ID. Just a name, an email, and a blank stare. This is the lead source tracking WordPress problem that costs small businesses thousands in wasted ad spend every month.

Google Analytics tells you that 50 people visited your pricing page. Your CRM says you got 12 form submissions this week. But connecting visitor number 37 to submission number 9? That requires lead source data attached directly to each form entry — and most WordPress form plugins don’t do this out of the box.

The Multi-Plugin Tracking Nightmare

Consider a marketing agency that runs its own lead generation. They use Gravity Forms on their main site contact page, Elementor Pro Forms on PPC landing pages, and WPForms on a client referral portal. Three form plugins, three different dashboards, three different data structures — and zero unified tracking across any of them.

This isn’t unusual. WordPress site owners frequently end up with multiple form plugins because each one excels in a different context. Elementor users want native form widgets. WPForms is quick for simple contact forms. Gravity Forms handles complex conditional logic. The problem isn’t the forms — it’s that none of them share a common attribution layer.

When a lead submits a form on the Elementor landing page, you want to know they came from a Facebook ad targeting “marketing services.” When another lead fills out the Gravity Forms contact page, you want to know they found you through an organic Google search. Without a unified tracking system, you’re left manually cross-referencing timestamps between Google Analytics and your form entries — a process that breaks down the moment you get more than a handful of leads per day.

What Lead Source Tracking Actually Means

Lead source tracking captures the traffic origin data from a visitor’s URL and attaches it to their form submission. There are three categories of data that matter.

1. UTM Parameters

UTM parameters are tags you add to your campaign URLs. They follow a standard format: utm_source, utm_medium, utm_campaign, utm_term, and utm_content. When someone clicks a link tagged with ?utm_source=facebook&utm_medium=cpc&utm_campaign=spring_sale, those values ride along in the URL. A tracking system captures them and stores them alongside the lead’s form data.

UTMs work across every advertising platform because they’re a universal convention. You control the values, so you can make them as specific or general as you need.

2. Click IDs (GCLID, fbclid, msclkid)

Ad platforms append their own tracking parameters automatically. Google Ads adds gclid (Google Click Identifier). Meta adds fbclid. Microsoft Ads adds msclkid. TikTok adds ttclid. These click IDs enable offline conversion tracking — you can feed the click ID back to the ad platform to tell it which clicks actually became leads.

Click IDs are especially important because they connect your lead data directly to the specific ad click that generated it. UTMs tell you the campaign. Click IDs tell the ad platform the exact auction and ad variation. But there’s a catch: click IDs often disappear between pages as visitors navigate your site, which means they need to be captured immediately and persisted through the session.

3. Organic and Referral Detection

Not every visitor arrives through a paid campaign. Some find you through Google search, others click a link from a blog post or directory listing. Organic and referral detection uses the HTTP referrer header to identify the source. If the referrer is google.com, the lead came from organic search. If it’s yelp.com, it’s a referral. If there’s no referrer at all, it’s direct traffic.

A complete lead source tracking system captures all three categories — UTMs for campaigns you control, click IDs for ad platform integration, and referrer detection for everything else. Without all three, you’re only seeing part of the picture.

How the 9 Major WordPress Form Plugins Handle Lead Source Tracking

Here’s what each of the major WordPress form plugins offers for lead source tracking natively — and whether it works with TrueConversion for automatic attribution.

PluginNative UTM SupportNative Click ID CaptureHidden Field SupportTrueConversion Compatible
Contact Form 7NoNoManual (HTML)Yes
WPFormsNoNoYes (Pro)Yes
Gravity FormsVia merge tagsNoYesYes
Ninja FormsNoNoYesYes
Formidable FormsVia lookup fieldsNoYesYes
Fluent FormsNoNoYesYes
Elementor Pro FormsNoNoYesYes
ForminatorNoNoYesYes
Jetpack FormsNoNoNoYes (partial)

The pattern is consistent: none of the nine plugins capture click IDs natively, and only two offer any kind of UTM support — both requiring manual configuration per form. Hidden fields exist in most plugins, but they require custom JavaScript to populate them, and that code breaks when URLs change or visitors navigate to a different page before submitting.

Plugin-by-Plugin Breakdown: Manual Setup vs. TrueConversion

Contact Form 7

Contact Form 7 is the most widely installed form plugin in the WordPress ecosystem, with over 5 million active installations according to the WordPress plugin directory. It handles form rendering and email delivery. It does not handle lead tracking in any form.

Manual approach: You add hidden input fields to your CF7 form template, then write custom JavaScript that reads URL parameters on page load and injects the values into those hidden fields. You also need to include those fields in the CF7 mail template so the values actually appear in the notification email. If the visitor navigates to a different page before submitting (common with multi-page sites), the URL parameters are gone and the hidden fields stay empty.

With TrueConversion: You install the plugin, select Contact Form 7 from the list of enabled forms, and you’re done. TrueConversion hooks into the wpcf7_before_send_mail action, captures all UTM parameters, click IDs, and referrer data from the persisted session cookie, and attaches it to the submission automatically. No hidden fields, no custom JavaScript, no form template edits.

WPForms

WPForms offers hidden fields in its Pro version, which means free users have no native path to UTM tracking at all. Even with Pro, you need to create a hidden field for each parameter you want to capture, then use the “smart tag” system or custom JavaScript to populate them.

Manual approach: Create hidden fields for utm_source, utm_medium, utm_campaign, gclid, fbclid, and any other parameters you need. Configure each field’s default value using WPForms’ query string smart tags. This works on the landing page — but if the visitor clicks to your About page, then navigates to the Contact page, the query string is gone and your hidden fields capture nothing.

With TrueConversion: Activate the WPForms integration in settings. TrueConversion captures parameters on the first page view, stores them in a session cookie, and injects the data at submission time via the wpforms_process_complete hook. Works on every page regardless of where the visitor navigates.

Gravity Forms

Gravity Forms is the closest to native UTM support thanks to its merge tags and query string population feature. You can set a hidden field’s default value to {utm_source:query} and it will pull the value from the URL.

Manual approach: Add hidden fields, configure each one with the appropriate query string merge tag. This is cleaner than writing custom JavaScript, but it still only works when the parameters exist in the current page URL. Gravity Forms has no built-in mechanism to persist parameters across page navigations. You also need to repeat this setup for every form on your site, and you still can’t detect organic search or referral sources.

With TrueConversion: Enable the Gravity Forms integration. Every submission gets the full attribution data — UTMs, click IDs, organic/referral source — attached via the gform_after_submission hook. No hidden fields needed in your form builder.

Tip: Even if you already set up hidden fields in Gravity Forms, TrueConversion still adds value. It captures click IDs and organic/referral sources that merge tags can’t detect, and it persists data across page navigations where query strings disappear.

Why a Single-Plugin Tracking Approach Falls Apart

Suppose you solve the tracking problem for WPForms. You set up hidden fields, write the JavaScript, test it, and confirm it works. Now what about the Elementor form on your landing page? That’s a completely different form builder with its own field system, its own submission handler, and its own notification pipeline. Your WPForms JavaScript doesn’t help there.

Every form plugin stores submissions in its own format. WPForms uses one database table structure. Gravity Forms uses another. Contact Form 7 doesn’t store submissions at all by default — it just sends emails. This means your tracking code, your hidden field configuration, and your data extraction process need to be rebuilt from scratch for each plugin.

It gets worse when you need to report on the data. Pulling UTM values from three different database structures, normalizing the field names, and combining them into one view is a development project — not a quick settings tweak. Most small businesses either give up and rely solely on Google Analytics (which can’t attribute individual leads) or they abandon multi-plugin setups entirely and force everything through one form builder, sacrificing flexibility.

The real cost isn’t the developer hours. It’s the leads that slip through without attribution data while you’re still building the solution. Every untracked lead is money spent on advertising that you can’t evaluate, optimize, or justify.

How TrueConversion Solves Lead Source Tracking Across All 9 Form Plugins

TrueConversion works at the WordPress level, not at the form plugin level. It captures attribution data before any form plugin gets involved, stores it independently, and injects it at submission time through each plugin’s native hooks. Here’s what that looks like in practice.

Step 1: Automatic Parameter Capture

When a visitor lands on any page, TrueConversion’s lightweight JavaScript (under 2KB) reads the current URL and extracts all UTM parameters and ad platform click IDs — gclid, fbclid, msclkid, ttclid, and others. It also checks the HTTP referrer to detect organic search engines and referral domains.

This all happens on the first page view. The visitor doesn’t need to land directly on a page with a form.

Step 2: Session Persistence

The captured data is stored in a first-party cookie that persists through the browsing session. If a visitor lands on your homepage from a Google Ad, browses your services page, reads a case study, and then fills out a contact form three pages later — the original gclid, UTM parameters, and landing page URL are all still available.

You can configure the conversion window to match your sales cycle. Session-based tracking (the default) covers the current visit. You can extend it to 1 day or 7 days if your leads tend to come back before converting. This is especially useful for higher-consideration purchases where prospects research over multiple visits.

Step 3: Form Hook Integration

When a visitor submits any supported form, TrueConversion reads the stored cookie data and attaches it to the submission through the form plugin’s native action hook. There’s no hidden field manipulation, no DOM injection, and no JavaScript form interception.

Each integration uses the correct hook for the specific plugin:

  • Contact Form 7wpcf7_before_send_mail
  • WPFormswpforms_process_complete
  • Gravity Formsgform_after_submission
  • Ninja Formsninja_forms_after_submission
  • Formidable Formsfrm_after_create_entry
  • Fluent Formsfluentform/submission_inserted
  • Elementor Pro Formselementor_pro/forms/new_record
  • Forminatorforminator_custom_form_submit_before_set_fields
  • Jetpack Formsgrunion_pre_message_sent

This architecture means TrueConversion doesn’t interfere with your form plugins at all. It doesn’t modify form markup, add fields, or change submission behavior. It simply listens for submissions and records the attribution data in its own database table.

Step 4: Unified Dashboard

Every tracked submission — regardless of which form plugin captured it — appears in one dashboard inside WordPress admin. You see the lead’s name, email, form source, UTM parameters, click IDs, detected traffic source, landing page, and submission timestamp in a single sortable, searchable, exportable table.

No more switching between WPForms entries, Gravity Forms entries, and Contact Form 7 email logs. One view, all leads, all attribution data.

Tip: TrueConversion’s CSV export includes all attribution columns, making it easy to import lead source data into spreadsheets or external CRMs for deeper analysis.

Setting Up TrueConversion: 5 Minutes, All Forms

The setup process is deliberately minimal. Here’s the full walkthrough.

Install and activate. Download TrueConversion from the WordPress plugin directory or upload it via your dashboard. Activate it like any other plugin.

Run the setup wizard. On activation, TrueConversion launches a 5-step wizard. It auto-detects which form plugins you have installed and pre-selects them. Confirm your notification email, choose your conversion window, and you’re done.

Verify your form plugins. Go to Settings and confirm that all your active form plugins appear in the Enabled Forms list. TrueConversion detects Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Formidable Forms, Fluent Forms, Elementor Pro Forms, Forminator, and Jetpack Forms automatically.

Choose your tracking parameters. The defaults cover all standard UTMs plus the major click IDs. If you use custom parameters (like utm_adgroup or platform-specific IDs), you can add those in settings.

Set your conversion window. Session-based is the default and works for most sites. If your sales cycle is longer, switch to 1-day or 7-day persistence. This controls how long the tracking cookie lives before expiring.

That’s the entire setup. No per-form configuration, no hidden field creation, no JavaScript to write. Every form on your site now captures full attribution data.

How to Verify Your Lead Source Tracking Is Working

After setup, you should test every form plugin you use. Here’s a reliable testing process.

Test UTM Parameter Capture

Open an incognito browser window (this ensures no existing cookies interfere). Navigate to any page on your site with UTM parameters appended to the URL:

https://yoursite.com/contact/?utm_source=test&utm_medium=cpc&utm_campaign=verification&gclid=test123

Now navigate to a different page — your homepage, an about page, anywhere without UTM parameters in the URL. Then navigate to a page with a form and submit a test entry. Check the TrueConversion dashboard. Your test submission should show all four parameters: utm_source=test, utm_medium=cpc, utm_campaign=verification, and gclid=test123.

Test Organic/Referral Detection

This is harder to simulate directly, but you can verify it works by searching for your site on Google and clicking through to a form page. Submit a test entry and check the dashboard — it should show “Organic Search (Google)” as the traffic source.

Test Each Form Plugin

If you use multiple form plugins, repeat the UTM test for each one. Open an incognito window with UTMs, navigate to a page with a Contact Form 7 form, submit it, and check the dashboard. Then do the same for your WPForms contact form, your Gravity Forms quote request, and any other forms across your site.

Every submission should appear in the TrueConversion dashboard with identical attribution data, regardless of which form plugin handled the submission. If any form isn’t tracking, check that the plugin appears in your Enabled Forms list under TrueConversion settings.

Tip: Delete your test entries from the TrueConversion dashboard after verification so they don’t pollute your real lead data. You can select them in bulk and remove them from the entries table.

Common Tracking Pitfalls and How to Avoid Them

Even with a unified tracking plugin, a few things can reduce the quality of your attribution data.

Inconsistent UTM Naming

If one campaign uses utm_source=Facebook and another uses utm_source=facebook, they appear as two different sources in your reports. UTM parameters are case-sensitive. Pick a convention (lowercase is standard) and stick with it across all campaigns. Google’s own Campaign URL Builder can help enforce consistency.

Caching Plugins Serving Stale Pages

Aggressive page caching can sometimes serve a cached version of your page where the tracking JavaScript hasn’t loaded fresh. TrueConversion’s script runs client-side and reads parameters from the visitor’s actual URL, so standard page caching shouldn’t cause issues. However, if you use a CDN that caches the entire HTML response including inline scripts, verify that tracking still fires by running the UTM test described above.

Bot Submissions Clouding Your Data

Spam bots submit forms too, and they rarely carry UTM data. This creates entries with blank attribution that can skew your tracking percentages downward. Reducing spam submissions through form protection measures keeps your lead source data clean. We covered practical approaches to this in our guide on stopping spam in WordPress forms.

Missing Click IDs in Ad Platform Reports

If you’re using TrueConversion’s click ID data for offline conversion imports, make sure auto-tagging is enabled in your Google Ads account (it’s on by default) and that your Facebook pixel is configured to append fbclid. Without these settings, the click IDs won’t appear in your URLs in the first place.

What You Can Do With Proper Lead Source Data

Once every form submission carries attribution data, you unlock several capabilities that were previously impossible without an enterprise marketing stack.

Calculate real cost per lead by channel. If you spent $500 on Google Ads and TrueConversion shows 15 leads with utm_source=google, your cost per lead is $33.33 from that channel. Compare that with your Facebook spend and lead count to see which platform delivers better ROI.

Identify your highest-converting campaigns. Sort your TrueConversion entries by utm_campaign to see which campaigns generate the most leads. This tells you where to increase spend and which campaigns to pause.

Feed conversion data back to ad platforms. Export submissions with click IDs and upload them as offline conversions in Google Ads or Meta. This trains the platform’s algorithm to find more people like the ones who actually submitted forms — not just the ones who clicked. Our guide on offline conversion tracking without a CRM walks through this process in detail.

Prove marketing ROI to clients or stakeholders. If you’re an agency, the TrueConversion dashboard and CSV export give you concrete data to show clients exactly which channels are delivering leads. No more “trust us, the campaigns are working.”

Free vs. Pro: What You Get at Each Level

TrueConversion’s free tier includes all tracking features, all 9 form plugin integrations, the admin dashboard, and CSV export. It stores up to 10 entries on a rolling basis, which is enough to verify that tracking works and to evaluate the data quality.

The Business plan removes the entry limit, adds per-submission email notifications and monthly summary emails. The Enterprise plan adds daily and weekly summary emails for teams that need more frequent reporting.

For most small businesses, the free plan is the right starting point. Install it, verify that your forms are tracking correctly, and upgrade when you need unlimited storage or email notifications.

Stop Guessing Where Your WordPress Form Leads Come From

Lead source tracking for WordPress forms doesn’t have to be a per-plugin problem. You shouldn’t need to configure hidden fields in WPForms, set up merge tags in Gravity Forms, and write custom JavaScript for Contact Form 7 — all to get the same data point attached to each submission.

TrueConversion gives you lead source tracking across every major WordPress form plugin with a single five-minute setup. UTM parameters, click IDs, organic detection, and referral identification — all captured automatically and stored in one unified dashboard. Install it free, test it with your forms, and see exactly where your leads come from.

Know Which Channel Brings Each Lead

TrueConversion tracks UTM parameters, click IDs, and organic sources across all 9 major WordPress form plugins. Free plan includes full tracking, all integrations, and a unified dashboard. Set it up in 5 minutes and see exactly where your leads come from.


Roger McSaveney

← Back to Articles

Comments

No comments yet. Be the first to share your thoughts!

Leave a comment