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 campaig
PricingFree downloadThe WordPress.org download is free. Pro versions, add-ons or external services may cost extra.
CompatibilityRequires WordPress 6.5 and PHP 7.4.
SourceWordPress plugins · Oct 30, 2026
01 / Source details
Aboutthistool.
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 .
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.
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:
01Tick one checkbox in the settings and the source summary is appended to your notification email automatically. No form editing.
02Or 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.
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.
See it in action
Screenshots & previews.
The entries list, filtered by channel, showing the source of each submission.A single entry: the answers on the left, the whole traffic source on the right.Source insights grouped by channel, campaign, landing page and form.Settings, including the mail-tag reference with copy buttons.
02 / Source details
Gettingstarted.
01Install and activate Contact Form 7 first, since EntrySource records its submissions.
02Upload the plugin through Plugins, Add New, or install it from the plugin directory.
03Activate it. The database tables are created for you.
04Open 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.
03 / Source details
Frequently asked questions.
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.
Website LLMs.txt and LLMs-Full.txt Generator is an LLMs.txt generator and llms-full.txt generator for WordPress. It helps site owners generate, manage, preview, validate, and serve AI discovery files from published public content. Use it to create structured /llms.txt and optional /llms-full.txt end
EngageDock AI is a customizable floating contact widget for WordPress websites that want more leads and faster visitor communication. It helps small businesses turn website traffic into calls, texts, emails, and callback requests from one clean contact panel. Key Features: Click-to-Call – One tap ca
Altify AI is an auto ALT text and AI ALT text plugin for WordPress images. It helps generate descriptive image ALT text for accessibility and image SEO. Use bulk image ALT text tools for your Media Library, generate featured image ALT text automatically, and scale WooCommerce image ALT updates with
The Accepted Payment Methods plugin is a straightforward, lightweight solution that enhances your website by displaying visually appealing icons of the payment methods you accept. This plugin is ideal for a variety of websites, including e-commerce platforms, service-oriented websites, and informati