EntrySource Database and UTM Tracker for Contact Form 7

Description

Contact Form 7 sends your submissions by email and then forgets them. EntrySource keeps every submission in your own database table and, next to each one, records how that person reached your site.

That means you stop guessing which campaign produced a lead. Each entry shows the channel, the campaign, the referring site, the landing page and the page the form was sent from.

What is recorded

For every submission EntrySource stores the answers of each form field plus:

  • The five campaign parameters: utm_source, utm_medium, utm_campaign, utm_term and utm_content.
  • 28 advertising and campaign click identifiers: gclid, gbraid, wbraid, dclid, gad_source, srsltid, s_kwcid (Google), msclkid (Microsoft), yclid (Yandex), fbclid, igshid (Meta), ttclid (TikTok), li_fat_id (LinkedIn), twclid (X), rdt_cid (Reddit), sccid (Snapchat), epik (Pinterest), qclid (Quora), tblci (Taboola), obclid (Outbrain), irclickid, cjevent, awc (affiliate networks), and mkt_tok, mc_cid, mc_eid, _hsenc, vero_id (email platforms).
  • The referring URL and domain of the visit, and the landing page it started on.
  • The page holding the form, its title and its post ID.
  • A readable channel worked out from all of the above, chosen from more than sixty.

Which platforms are recognised

Traffic is named rather than lumped into “Referral”. Around 160 referring hosts and 100 utm_source spellings are matched, covering:

  • Search: Google, Bing, DuckDuckGo, Yahoo, Yandex, Baidu, Brave, Ecosia, Startpage, Qwant, Kagi, Naver, Daum, Seznam, Sogou, Petal, Mojeek and more.
  • AI assistants and answer engines: ChatGPT, Claude, Gemini, Google AI Studio, Microsoft Copilot, Perplexity, Meta AI, Grok, DeepSeek, Mistral, Qwen, Poe, You.com, Phind and others. Gemini and AI Studio are read as AI rather than as Google search.
  • Meta: Facebook including its mobile and link-shim hosts, Instagram, Messenger, Threads.
  • Social: LinkedIn, X, TikTok, Pinterest, Reddit, Snapchat, YouTube, Twitch, Vimeo, Bluesky, Mastodon, Quora, Tumblr, Medium, Substack, VK, Weibo, Douyin, Xing, Nextdoor, Flipboard.
  • Chat and messaging: WhatsApp, Telegram, Discord, Slack, Microsoft Teams, WeChat, LINE, KakaoTalk, Viber.
  • Email: Gmail, Outlook, Proton, Yahoo Mail, GMX, Hey and the click trackers of Mailchimp, Klaviyo, HubSpot, Marketo, SendGrid, MailerLite and beehiiv.
  • Link in bio: Linktree, Beacons, Bio.link, Campsite, Carrd, Taplink.
  • Maps and reviews: Google Maps and Business Profile, Apple Maps, Waze, Yelp, Trustpilot, Tripadvisor, G2, Capterra, GetApp, TrustRadius.
  • Ad networks: Google, Microsoft, Meta, LinkedIn, TikTok, X, Pinterest, Snapchat, Reddit, Quora, Amazon, Apple Search Ads, Yandex, Baidu, Taboola, Outbrain, Criteo, AdRoll, StackAdapt.

Paid and organic are told apart, so a Facebook post and a Meta ad do not land in the same bucket. Anything unrecognised still keeps its referring domain and campaign values, and shows up in the Insights breakdowns.
* First touch as well as last touch, so you can see the campaign that first brought the person to the site and the one they came back through.
* How many visits they made before sending the form.
* Submission date, form name, mail status and, if you allow it, the IP address and browser name.

Reading the data

  • An Entries screen listing everything, with filters for form, channel, campaign and date range, plus a search that looks inside the answers.
  • A single entry view showing the answers on one side and the whole traffic source on the other.
  • An Insights screen that groups the period you choose by channel, campaign, source, medium, referring domain, landing page and form, so you can see at a glance which ones actually convert.
  • CSV export of whatever the current filters show, with one column per form field.

Putting the source in your notification email

Two ways, use whichever suits you:

  1. Tick one checkbox in the settings and the source summary is appended to your notification email automatically. No form editing.
  2. Or place mail-tags exactly where you want them in the Mail tab of your form:

    [_entrysource_channel], [_entrysource_utm_source], [_entrysource_utm_medium], [_entrysource_utm_campaign], [_entrysource_utm_term], [_entrysource_utm_content], [_entrysource_click_id], [_entrysource_click_id_type], [_entrysource_referrer], [_entrysource_referrer_domain], [_entrysource_landing_page], [_entrysource_page_url], [_entrysource_page_title], [_entrysource_first_channel], [_entrysource_first_source], [_entrysource_first_medium], [_entrysource_first_campaign], [_entrysource_first_referrer], [_entrysource_first_landing_page], [_entrysource_first_touch], [_entrysource_visits], [_entrysource_session_id], [_entrysource_ip], [_entrysource_entry_id], [_entrysource_entry_link] and [_entrysource_summary] for the whole block.

Every tag also works with the shorter [_esrc_...] prefix. The settings screen lists them all with a copy button.

Privacy

EntrySource sends nothing anywhere. All data stays in your own database, and the plugin makes no external requests.

You decide what is kept: storing the IP address can be switched off or shortened to its network part, the browser name can be switched off, Do Not Track can be respected, and source tracking can be made to wait for the consent cookie of your cookie banner. A retention setting deletes entries automatically after a number of days.

The plugin honours Contact Form 7’s own storage opt-out, so adding [checkbox your-consent consent_for:storage "I agree"] to a form means nothing is stored unless the visitor ticks that box. Stored entries are also included in the WordPress export and erase personal data tools, and the plugin adds suggested wording to your privacy policy draft.

For developers

Filters and actions: entrysource_pre_store_entry, entrysource_entry_stored, entrysource_collected_attribution, entrysource_detect_channel, entrysource_channel_labels, entrysource_entry_lines, entrysource_excluded_fields, entrysource_capability and entrysource_load_tracker.

Everything the plugin does is included in this free version. There is no paid tier, no license key and no feature that stops working after a trial.

Independence

EntrySource is an independent plugin. It is not affiliated with, endorsed by, or sponsored by Contact Form 7 or its author. The name “Contact Form 7” appears here only to describe which plugin EntrySource works alongside.

Screenshots

Installation

  1. Install and activate Contact Form 7 first, since EntrySource records its submissions.
  2. Upload the plugin through Plugins, Add New, or install it from the plugin directory.
  3. Activate it. The database tables are created for you.
  4. Open Form Entries, Settings to choose what is stored, then send a test submission.

Nothing else is needed: submissions are stored from the moment the plugin is active.

FAQ

Do I have to change my forms?

No. Storing entries and recording the source works with your existing forms as they are. You only touch a form if you want to place a mail-tag in a specific spot in the email.

Does it work with page caching?

Yes. The campaign values are never printed into the cached HTML. The form carries one empty hidden field that the tracker script fills in on the visitor’s own browser, so a cached page still records the right source.

What happens if the visitor blocks JavaScript?

The answers of the form are still stored, and the plugin falls back to reading its cookies and the page URL on the server. Only data that has to come from the browser, such as the referrer of the landing page, may be missing.

How does it decide the channel?

Ad click identifiers win first, because most of them only ever appear on a paid click. A few ride on organic links as well, so fbclid, igshid, epik and srsltid are read together with the medium: an fbclid with a paid medium is a Meta ad, on its own it is a shared Facebook post.

Campaign parameters come next, where a medium such as cpc, ppc or paid-social marks the visit as paid. A source the plugin recognises outranks a vague medium, so utm_source=chatgpt&utm_medium=referral is filed as an AI assistant rather than as a plain referral.

If there are no campaign parameters, the referring host is matched against the platform list. Hosts are matched properly rather than by substring, so boot.co.uk is never mistaken for t.co. Anything else external is a referral, and nothing at all is direct.

Two filters let you change any of it: entrysource_detect_channel for the result, and entrysource_channel_labels for the wording.

Are spam submissions stored?

Only if you ask for it in the settings. By default they are skipped, because Contact Form 7 has already flagged them.

Can editors see the entries?

By default only administrators can. The settings let you open the entries and insights screens to editors or authors as well. Changing the settings always stays with administrators.

Does it store uploaded files?

The file names are stored with the entry. The files themselves stay with Contact Form 7, which attaches them to the notification email.

Will deleting the plugin remove my entries?

No, unless you tick the option that says so in the settings. That way an accidental deactivation never costs you your data.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“EntrySource Database and UTM Tracker for Contact Form 7” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.0

  • First release.