Contact Form 7 is the most popular form plugin on WordPress, powering millions of contact pages worldwide. But it has a glaring blind spot: it tells you nothing about where your leads come from. You get a name, an email, and a message — and that’s it. No UTM parameters, no ad click IDs, no referral data. If you’re running Google Ads, Facebook campaigns, or investing in SEO, you’re flying blind. This guide covers everything you need to know about contact form 7 lead source tracking — from manual hidden fields to zero-code plugins that handle the entire pipeline for you.
What Contact Form 7 Tracks by Default
Contact Form 7 is a form builder, not a lead management tool. When someone submits a CF7 form, the plugin sends an email to whatever address you configure. That email contains the fields the visitor filled in — name, email, phone, message — and nothing else.
CF7 does not store submissions in the WordPress database. It does not capture UTM parameters. It does not record ad click IDs like gclid or fbclid. It does not detect whether the visitor arrived from organic search, a social media post, or a paid ad.
This means every lead that comes through your contact form is untraceable by default. You can see aggregate traffic data in Google Analytics, but you cannot tie a specific lead to a specific campaign, keyword, or channel. For any business spending money on marketing, this is a serious gap.
Three Types of Lead Source Data
Before you pick a tracking method, it helps to understand the three categories of source data you want to capture.
UTM Parameters
UTM parameters are tags you append to your campaign URLs: utm_source, utm_medium, utm_campaign, utm_term, and utm_content. They tell you which campaign, channel, and variation brought the visitor. Google’s Campaign URL Builder makes it simple to generate tagged links. UTMs work across every traffic source — Google, Facebook, email, partner sites — but only if you tag your URLs consistently.
Ad Platform Click IDs
When someone clicks a Google ad, Google appends a gclid parameter automatically. Meta adds fbclid. Microsoft Ads adds msclkid. TikTok, LinkedIn, and other platforms have their own equivalents. These click IDs let you upload offline conversions back to the ad platform, enabling the algorithm to optimize for leads that actually convert — not just clicks. The challenge is that these IDs are long, ugly strings that often disappear between page navigations unless you actively persist them.
Organic and Referral Sources
Not every visitor arrives via a tagged link. Someone might find you through Google search, click through from a blog that linked to you, or type your URL directly. These visits carry no UTM parameters and no click IDs. Capturing the HTTP referrer and mapping it to a human-readable source (like “Google Organic” or “Facebook Referral”) fills in the gaps that UTMs and click IDs miss. If half your leads come from organic search, you need to know that — and CF7 won’t tell you on its own.
5 Ways to Add Contact Form 7 Lead Source Tracking
There is no single “right” approach. The best method depends on your technical comfort level, your budget, and how much attribution data you actually need. Here are five options, from fully manual to fully automated.
Method 1: Manual Hidden Fields + JavaScript
CF7 supports hidden fields, and you can use JavaScript to populate them from the current page URL. This is the free, DIY approach that gives you full control.
First, add hidden fields to your CF7 form template for every parameter you want to capture:
[hidden utm_source id:utm_source default:get]
[hidden utm_medium id:utm_medium default:get]
[hidden utm_campaign id:utm_campaign default:get]
[hidden utm_term id:utm_term default:get]
[hidden utm_content id:utm_content default:get]
[hidden gclid id:gclid default:get]
[hidden fbclid id:fbclid default:get]
[hidden msclkid id:msclkid default:get]
[hidden landing_page id:landing_page]
The default:get attribute tells CF7 to pull the value from the URL query string. For the landing page field, you need a small JavaScript snippet to populate it with the current URL. Then update your CF7 mail template to include these fields:
--- Lead Source ---
UTM Source: [utm_source]
UTM Medium: [utm_medium]
UTM Campaign: [utm_campaign]
UTM Term: [utm_term]
UTM Content: [utm_content]
Google Click ID: [gclid]
Facebook Click ID: [fbclid]
Microsoft Click ID: [msclkid]
Landing Page: [landing_page]
The limitation is significant: default:get only reads parameters from the URL at the time the form page loads. If a visitor lands on your homepage with UTM parameters and then navigates to your contact page, the parameters are gone. You would need to write additional JavaScript to store values in cookies or sessionStorage and retrieve them on the form page. You also get no organic or referral detection — only tagged traffic shows up.
Verdict: Free and simple for single-page forms where the landing page is the form page. Breaks on multi-page journeys. No organic or referral tracking. Requires ongoing maintenance.
Method 2: Free WordPress Plugins
Several free plugins on WordPress.org add UTM tracking fields to CF7 and other form plugins. These typically work by injecting hidden fields into your forms and using JavaScript or cookies to persist UTM values across pages.
The upside is that you avoid writing custom code. Many of these plugins handle multi-page persistence with cookies. The downside is that most free plugins only capture UTM parameters — they skip ad click IDs (gclid, fbclid) and do not detect organic or referral sources. Some store entries in the database, but the free tiers often limit storage or lack export features. Plugin maintenance varies — several popular UTM tracking plugins haven’t been updated in over a year.
Verdict: A step above manual fields for UTM capture. Limited coverage — usually no click IDs, no organic detection. Check that the plugin is actively maintained before committing.
Method 3: TrueConversion
TrueConversion is a WordPress plugin purpose-built for lead source tracking across all major form plugins, including Contact Form 7. It captures UTMs, ad platform click IDs, and organic/referral sources automatically — no hidden fields or code edits required. Data persists across pages using a configurable conversion window (session, 1 day, or 7 days).
The free tier includes all tracking features and supports nine form plugins plus a shortcode fallback. It stores entries in the WordPress database with CSV export. Paid plans add unlimited storage and email notifications. Because everything runs on your WordPress site, there is no external data processing or third-party dependency.
Verdict: Broadest data capture of any free option — UTMs, click IDs, and organic detection. Zero configuration on the CF7 side. Paid plans unlock unlimited storage and notifications.
Method 4: SaaS Tools (Attributer, WhatConverts)
External SaaS platforms like Attributer and WhatConverts inject tracking fields into your forms and store attribution data in their cloud dashboards. They handle multi-touch attribution models and integrate with CRMs like Salesforce and HubSpot.
The trade-off is cost. Attributer starts at $49/month. WhatConverts starts at $30/month for basic plans and goes up significantly for call tracking and multi-channel features. These tools make sense for mid-market companies with CRM workflows and complex multi-touch attribution needs. For a small business that just needs to know which channel a CF7 lead came from, they are expensive overkill.
Verdict: Powerful multi-touch attribution and CRM integrations. Priced for agencies and mid-market teams, not SMBs. Requires external data processing.
Method 5: Google Tag Manager + GA4
You can use Google Tag Manager to fire a GA4 event when a CF7 form is submitted. CF7 triggers a JavaScript DOM event called wpcf7mailsent on successful submission, which GTM can listen for using a custom event trigger. This lets you track form submissions as conversions in GA4.
GA4 will automatically associate the conversion with the traffic source for that session. For Google Ads specifically, gclid is auto-tagged and linked through the GA4-Google Ads connection, giving you partial click ID support. However, you cannot see lead source data on a per-submission basis — GA4 shows aggregate conversion data by channel, not “John Smith submitted from your Facebook campaign.” You also lose click IDs from non-Google platforms (Meta, TikTok, LinkedIn) unless you build custom tracking for each one.
Verdict: Good for aggregate conversion tracking in GA4. No per-lead attribution. Partial click ID coverage (Google only via auto-tagging). Requires GTM expertise to set up and maintain.
Comparison Table
| Feature | Manual Hidden Fields | Free WP Plugins | TrueConversion (Free) | SaaS Tools | GTM + GA4 |
|---|---|---|---|---|---|
| UTM Capture | Yes | Yes | Yes | Yes | Yes (aggregate) |
| Click ID Capture (gclid, fbclid) | Manual per ID | Rarely | Yes (all major IDs) | Yes | Partial (gclid auto-tagged) |
| Organic / Referral Detection | No | No | Yes | Yes | Yes (aggregate) |
| Multi-Page Persistence | Requires custom JS | Usually (cookies) | Yes (configurable window) | Yes | Session-based |
| Per-Lead Attribution | Yes | Yes | Yes | Yes | No |
| Database Storage | No (email only) | Sometimes | Yes + CSV export | Yes (cloud) | No (GA4 reports only) |
| Setup Complexity | High | Low-Medium | Low | Medium | High |
| Ongoing Maintenance | High | Low | None | Low | Medium |
| Cost | Free | Free | Free (paid plans available) | $30-$200+/mo | Free |
Want the easiest path to full lead source tracking? TrueConversion captures UTMs, click IDs, and organic sources automatically on every CF7 submission. Install the free plugin and start seeing where your leads come from in under two minutes.
Step-by-Step: Setting Up TrueConversion with Contact Form 7
TrueConversion works with CF7 out of the box. There are no hidden fields to add, no form templates to edit, and no JavaScript to write. Here is the full setup process.
- Install the plugin. Go to your WordPress dashboard. Navigate to Plugins > Add New. Search for “TrueConversion” and click Install Now, then Activate. Alternatively, download the plugin from the TrueConversion website and upload it manually via Plugins > Add New > Upload Plugin.
- Run the setup wizard. After activation, TrueConversion launches a 5-step setup wizard. The wizard auto-detects that Contact Form 7 is installed on your site and enables it by default. Confirm that CF7 is checked in the form integrations step.
- Configure your conversion window. Choose how long tracking data persists for each visitor. “Same Session” (the default) is recommended for most sites — it attributes the lead to the source that brought them to your site in that browsing session. Select “7 Days” if visitors commonly research over multiple visits before submitting a form.
- Set your notification email (optional). If you want to receive an email each time a lead is captured with source data, enter your email address in the notifications step. This feature requires a paid plan, but you can start a free 30-day trial during setup.
- Complete the wizard. Click Finish. TrueConversion is now tracking every Contact Form 7 submission on your site. No changes to your CF7 forms are needed.
- Verify in the dashboard. Navigate to TrueConversion > Entries in your WordPress admin. After your next form submission, you will see the lead’s name, email, source, medium, campaign, and any captured click IDs — all in one row.
The entire process takes under two minutes. TrueConversion hooks into CF7’s wpcf7_before_send_mail action, so it captures data at the same moment the form fires its email. Your existing CF7 configuration, email templates, and conditional logic remain untouched. You can learn more about how the tracking pipeline works on the TrueConversion site.
Testing Your CF7 Lead Source Tracking
Setting up tracking is only half the job. You need to verify that data flows correctly for each traffic type before you trust your reports. Run through these tests after installation.
- Test UTM parameters. Open an incognito window and visit your site with a tagged URL, for example:
yoursite.com/?utm_source=test&utm_medium=cpc&utm_campaign=verification. Navigate to your contact page and submit the form. Check that utm_source, utm_medium, and utm_campaign appear correctly in the TrueConversion dashboard entry. - Test multi-page persistence. In a new incognito window, land on your homepage with UTM parameters. Click through to two or three other pages on your site, then go to the contact form and submit. Verify that the UTM values from your original landing page are still captured in the entry.
- Test click ID capture. Append a fake gclid to your URL:
yoursite.com/?gclid=test123abc. Submit the form and confirm the click ID appears in the entry. Repeat withfbclidandmsclkidif you run ads on those platforms. - Test organic detection. Search for your site name on Google (or another search engine) and click through to your site. Submit the contact form. Check that the entry shows “Google Organic” or the equivalent detected source — not blank fields.
- Test direct traffic. Open a new incognito window and type your site URL directly into the address bar. Submit the form. The entry should show “Direct” as the source, confirming that the plugin correctly identifies sessions with no referrer data.
- Test the notification email. If you have email notifications enabled, confirm you received an email for each test submission and that the source data is included in the email body.
Tip: Always test in an incognito or private browsing window. This ensures you start with a clean session — no cached cookies or stored parameters from previous visits that could give you false results.
What to Do With Your Lead Source Data
Capturing source data is the first step. The real value comes from acting on it. Here are three ways to use your CF7 lead source data to make better marketing decisions.
Calculate Cost Per Lead by Channel
Export your lead entries as CSV from TrueConversion. Group leads by source and medium. Compare the lead count per channel against your ad spend for the same period. If Google Ads generated 40 leads at $2,000 spend, your cost per lead is $50. If organic search generated 30 leads at $0 direct spend, that is your most efficient channel. These numbers tell you where to increase budget and where to cut.
Optimize Campaign Performance
UTM campaign and term data let you drill down beyond the channel level. You can identify which specific campaigns, ad groups, or keywords are generating form submissions — not just clicks. A campaign with a high click-through rate but zero leads needs different creative. A keyword with a low click volume but consistent leads deserves more budget.
Upload Offline Conversions
If you capture gclid values with each form submission, you can upload those conversions back to Google Ads. This tells the Google algorithm which clicks actually produced leads, enabling Smart Bidding to optimize for lead quality rather than click volume. The same principle applies to Meta’s conversion API with fbclid. Per-lead click ID capture — which most free tracking methods skip — is what makes this possible.
Every business running paid ads and using Contact Form 7 should have contact form 7 lead source tracking in place. Without it, you are making budget decisions based on click data instead of lead data. The methods above range from free and manual to free and automated — there is no reason to leave your CF7 leads unattributed.
Start Tracking Your CF7 Leads in Under 2 Minutes
TrueConversion adds automatic lead source tracking to Contact Form 7 — UTMs, click IDs, and organic sources — with zero configuration on your forms. The free plan includes all tracking features, database storage, and CSV export. Install it now and see exactly where every lead comes from.
Frequently Asked Questions
Does Contact Form 7 have built-in UTM tracking?
No. Contact Form 7 is a form builder and email sender — it does not capture UTM parameters, ad click IDs, or any traffic source data. CF7’s hidden field shortcode supports a default:get attribute that can read URL parameters on the current page, but this does not persist values across pages and does not detect organic or referral traffic. For full cf7 utm tracking, you need a plugin or custom JavaScript solution.
How can I track where my Contact Form 7 leads come from without writing code?
The simplest no-code approach is to install a lead source tracking plugin like TrueConversion. It auto-detects CF7 on your site, hooks into the form submission process, and captures source data (UTMs, click IDs, organic/referral) without any changes to your form templates or mail settings. Entries are stored in your WordPress database and can be exported as CSV. If you want to contact form 7 track where leads come from, this is the fastest path.
Can I track gclid and fbclid with Contact Form 7?
Yes, but not with CF7 alone. You can add hidden fields for gclid and fbclid manually (see Method 1 above), but you need JavaScript to persist those values across page navigations. Most free UTM plugins do not capture click IDs. TrueConversion captures gclid, fbclid, msclkid, and other platform click IDs automatically and persists them through the entire browsing session. This is essential for uploading offline conversions to Google Ads or Meta.
Will adding lead source tracking slow down my Contact Form 7 forms?
No. Lead source tracking plugins like TrueConversion add a small JavaScript file (under 3 KB) to your frontend that reads URL parameters and stores them in a cookie. The processing happens at form submission time via a WordPress action hook — there is no external API call, no additional HTTP request, and no delay to the form submission. Your CF7 forms will behave exactly the same as they do now, with attribution data captured silently in the background.
Leave a Reply