Why Contact Form 7 Loses UTM Data After Caching
Why Contact Form 7 Loses UTM Data After Caching
UTMs can disappear in Contact Form 7 because fields never populate or exports omit them. Test both paths before changing your attribution model.
Short answer: Contact Form 7 attribution can fail in two separate places. The hidden field may never receive the campaign value, or the value may reach the submission but disappear from storage or export. A successful thank-you message proves neither handoff worked.
Caching makes the first failure harder to see. Export mapping makes the second failure look like a missing UTM even when the browser and form request were correct.
The two failure points
1. The field never populates
A cached landing page can contain an old form response, delayed script, or markup that does not match the current form configuration. A consent decision, redirect, or JavaScript error can also prevent the attribution layer from writing permitted values before submission.
In this case, the problem is visible before the visitor clicks Send: hidden inputs are empty, or the browser never receives the expected attribution state.
2. The field populates but the export drops it
The second failure happens after submission. The request can contain attribution fields while the inbox, database, webhook, CSV, or CRM mapping keeps only name, email, and message. A WordPress support discussion about a missing export column illustrates the distinction: seeing a UTM in a submission payload does not guarantee that the export schema includes it.
These are different bugs and need different owners. Cache rules will not add a missing CSV column. Adding an export column will not populate an empty hidden input.
A five-minute reproduction
- Open a controlled landing URL with a unique UTM campaign and test click ID.
- Before submitting, inspect the form and record whether attribution fields contain expected values.
- Submit a unique test lead. Save the landing URL, consent choice, timestamp, and response.
- Inspect the server-side submission or entry, not only the thank-you page.
- Compare the stored entry with the CRM or CSV export. Identify the first layer that changed or removed a value.
Repeat on a cached page, an uncached preview page, and a consent-denied journey. If the value exists in the request but not in the export, stop debugging the browser. If it is empty before submission, stop debugging the CRM.
How ClickTrail handles the Contact Form 7 path
FunnelSheet’s ClickTrail integration for Contact Form 7 is designed to add attribution context to supported form submissions. The relevant question is still where your site loses the value: page script, consent gate, form submission, storage plugin, webhook, or export mapping.
ClickTrail cannot repair an export schema that excludes attribution columns, and no plugin can recover a value that was never permitted or captured. Treat the integration as one link in a testable chain, not proof that the final CRM row is complete.
For the wider capture and handoff model, review the ClickTrail overview and compare resulting fields with your CRM template. Name each field once and keep the same mapping from form to CRM to reporting.
Cache-safe testing rules
- Use a unique campaign value so a stale cookie or cached response cannot look correct by accident.
- Check live page source and browser state after redirects.
- Confirm the attribution script runs before submission.
- Verify that denied-consent journeys remain privacy-safe instead of forcing a value.
- Check that form POST requests and server submission records are not served from cache.
- Compare a fresh browser with a returning browser to expose first-touch and last-touch differences.
Do not fix this by disabling all caching or putting personal data into UTM parameters. Keep public page caching where safe, make attribution capture dynamic and observable, and exclude only paths that truly cannot be cached.
What to include in the export contract
Your export or CRM mapping should answer:
- which campaign and source produced the submission;
- which first-touch and last-touch values were available;
- which click IDs were present;
- when the form was submitted;
- which consent state applied;
- which lead ID connects the form to later qualification or revenue.
If your team exports only a human-readable source column, it may be impossible to distinguish a real Direct lead from one whose campaign value was dropped. Preserve raw fields alongside normalized channel labels.
Frequently asked questions
Why does the UTM appear in the URL but not in Contact Form 7?
The URL is only the first checkpoint. A redirect, consent rule, cache, or missing hidden field can prevent the value from reaching the form request.
Why does the form request contain UTM data but the CSV does not?
The export or storage mapping likely omits the field. Inspect the received submission and export schema separately.
Should I disable caching to fix attribution?
Not first. Reproduce the issue on cached and uncached pages, find the exact boundary that loses the value, then change only that cache or script path.
Sources
- WordPress Support: Missing column in export, retrieved August 18, 2026.
- WordPress Support: Contact Form 7 UTM tracker and caching, retrieved August 18, 2026.
- FunnelSheet ClickTrail integration for Contact Form 7, retrieved August 18, 2026.
