Lead source tracking for WordPress

See where every WordPress form lead came from.

Contact Trail Pro captures UTMs, click IDs, referrer and landing page for every Contact Form 7, WPForms and Gravity Forms lead, classifies the marketing channel, and stores it with the submission. No hidden fields to build, no Tag Manager setup.

✓ Contact Form 7✓ WPForms Lite & Pro✓ Gravity Forms✓ $29.99/mo after trial
New leadStored with the entry
Request a demo · Gravity Formsclassified
channelAI Search
drilldownchatgpt.com
landing_page/pricing/
first / lastPaid Social → AI Search
keyword (GSC)—
geoDenver, US
Captures every signalutm_source / medium / campaign / term / contentgclid · gbraid · wbraid · msclkidfbclid · ttclid · li_fat_idreferrer + landing page
What gets captured

The whole trail, not just the last click.

Each submission carries enough context to answer “which marketing produced this lead?” without a spreadsheet.

01

12-channel classification

Paid Search, Local Services Ads, Paid Social, Organic Search, Google Business Profile, AI Search, Organic Social, Email, Display, Affiliates, Referral and Direct.

02

First & last touch

The channel that discovered the lead and the one that converted them, each with a timestamp, under a cookie window you choose.

03

Click IDs for offline conversions

gclid, gbraid, wbraid, msclkid, fbclid, ttclid and li_fat_id, always carrying the most recent click, so Google Ads offline imports match the click that converted.

04

Search Console keywords

Organic leads are enriched with the likely search query from Google Search Console, labeled High, Med or Low confidence.

05

Survives Safari and optimizers

A server-side cookie extends Safari's 7-day script-cookie limit, and if a “delay JavaScript” optimizer holds the tracker back, attribution is recovered from cookies at submit.

06

Privacy controls built in

Cookiebot, OneTrust and Google Consent Mode integration, IP anonymization, IP geolocation and automatic data-retention cleanup.

Where the data goes

In WordPress first. Then wherever you report.

Attribution is stored in your own WordPress database, next to each submission, and leaves only when you send it.

01

In WordPress

A filterable Submissions screen under Contact Trail, with streaming CSV export that includes the form contents and every attribution field.

dashboardfiltersCSV
02

In your tools

A REST API (JSON or CSV) and a signed webhook on every submission, for Zapier, Make, a CRM, Google Sheets or AgencyAnalytics.

REST APIwebhookHMAC-SHA256
03

In analytics

A contact_trail_submission dataLayer event for GA4 and Google Tag Manager, plus a JavaScript API for GTM variables.

GA4GTMwindow.ContactTrail
The DIY route

Why not just add hidden UTM fields?

Every major form plugin can copy a URL parameter into a hidden field. It's a reasonable start, and it's where most attribution setups quietly break:

  • The UTMs only live on the landing page. When the visitor browses before submitting, the form's page has a clean URL and the fields arrive empty.
  • Most leads aren't tagged at all. Organic search, Google Business Profile, AI assistants, referrals and direct visits carry no UTMs, so a hidden-field setup can't tell you their channel.
  • Page caching can blank them. Some caches serve the same cached page for UTM-tagged links, so a server-filled field loads without the values.
  • It's per form, forever. Every new form needs the same fields rebuilt, and one missed form is a gap in your reporting.

Contact Trail captures on arrival in the browser, keeps first and last touch across pages and visits, classifies the channel, and attaches it to every form automatically. For the hands-on version, see the Contact Form 7 UTM guide or the Gravity Forms how-to.

Pricing

One plan. Every feature. No lead limits.

Try everything free for 14 days, then $29.99/month. Cancel anytime from Contact Trail → License in WordPress or the Stripe customer portal. Shopping around? See how it compares.

Contact Trail Pro
$29.99/ month
14 days free, then billed monthly · cancel anytime · secured by Stripe
Start 14-day free trial
Cancel during your trial and you won’t be charged. After that, a 30-day money-back guarantee covers your first payment.
Requires Contact Form 7, WPForms (Lite or Pro) or Gravity Forms
Everything included
✓ Contact Form 7, WPForms & Gravity Forms, side by side
✓ Automatic 12‑channel classification incl. AI Search, GBP & LSA
✓ First‑touch & last‑touch attribution
✓ All click IDs: gclid, gbraid, wbraid, msclkid, fbclid, ttclid, li_fat_id
✓ Safari ITP server‑side cookie
✓ Search Console keywords & IP geolocation
✓ Consent‑manager & IP‑anonymization controls
✓ REST API, signed webhooks & GA4 / GTM event
FAQ

Questions, answered.

Contact Form 7, WPForms (Lite and Pro) and Gravity Forms, side by side if you use more than one. Every form records attribution automatically, with no form changes.

No. Contact Trail loads its own lightweight tracker and stores everything in WordPress. If you do use GTM or GA4, it pushes a contact_trail_submission event you can turn into a lead event.

Visits from ChatGPT, Perplexity, Gemini, Copilot, Claude and other assistants are classified as AI Search, and the drilldown names the platform. Google's AI Overviews arrive from google.com and stay in Organic Search.

The tracker runs in the browser, so cached pages are fine. If an optimizer delays or blocks the script and the hidden fields reach the server empty, attribution is recovered from Contact Trail's cookies sent with the submission.

In your own WordPress database, next to each submission. Lead data only leaves your site through integrations you switch on: the webhook, REST API pulls, the GA4 / GTM event, and the ipinfo.io geolocation and Search Console lookups once you connect them.

Contact Trail includes consent-manager integration, IP anonymization and configurable data retention to support GDPR / CCPA compliance. As always, check your setup with your legal advisor.

Stop guessing which marketing works.

Every Contact Form 7, WPForms and Gravity Forms lead with its full trail, starting today. Free for 14 days, then $29.99/month.