Title: EntrySource Database and UTM Tracker for Contact Form 7
Author: Aayush Karki
Published: <strong>September 9, 2026</strong>
Last modified: September 9, 2026

---

Search plugins

![](https://ps.w.org/entrysource-database-utm-tracker-for-contact-form-7/assets/
banner-772x250.png?rev=3687576)

![](https://ps.w.org/entrysource-database-utm-tracker-for-contact-form-7/assets/
icon-256x256.png?rev=3687576)

# EntrySource Database and UTM Tracker for Contact Form 7

 By [Aayush Karki](https://profiles.wordpress.org/aayukarki/)

[Download](https://downloads.wordpress.org/plugin/entrysource-database-utm-tracker-for-contact-form-7.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/entrysource-database-utm-tracker-for-contact-form-7/#description)
 * [Reviews](https://wordpress.org/plugins/entrysource-database-utm-tracker-for-contact-form-7/#reviews)
 *  [Installation](https://wordpress.org/plugins/entrysource-database-utm-tracker-for-contact-form-7/#installation)
 * [Development](https://wordpress.org/plugins/entrysource-database-utm-tracker-for-contact-form-7/#developers)

 [Support](https://wordpress.org/support/plugin/entrysource-database-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:
 3. [_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

[⌊The entries list, filtered by channel, showing the source of each submission.⌉⌊
The entries list, filtered by channel, showing the source of each submission.⌉[

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.⌉⌊
A single entry: the answers on the left, the whole traffic source on the right.⌉[

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.⌉⌊Source insights
grouped by channel, campaign, landing page and form.⌉[

Source insights grouped by channel, campaign, landing page and form.

[⌊Settings, including the mail-tag reference with copy buttons.⌉⌊Settings, including
the mail-tag reference with copy buttons.⌉[

Settings, including the mail-tag reference with copy buttons.

## 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

 *   [ Aayush Karki ](https://profiles.wordpress.org/aayukarki/)

[Translate “EntrySource Database and UTM Tracker for Contact Form 7” into your language.](https://translate.wordpress.org/projects/wp-plugins/entrysource-database-utm-tracker-for-contact-form-7)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/entrysource-database-utm-tracker-for-contact-form-7/),
check out the [SVN repository](https://plugins.svn.wordpress.org/entrysource-database-utm-tracker-for-contact-form-7/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/entrysource-database-utm-tracker-for-contact-form-7/)
by [RSS](https://plugins.trac.wordpress.org/log/entrysource-database-utm-tracker-for-contact-form-7/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * First release.

## Meta

 *  Version **1.0.0**
 *  Last updated **18 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [attribution](https://wordpress.org/plugins/tags/attribution/)[contact form 7](https://wordpress.org/plugins/tags/contact-form-7/)
   [form submissions](https://wordpress.org/plugins/tags/form-submissions/)[lead source](https://wordpress.org/plugins/tags/lead-source/)
   [UTM](https://wordpress.org/plugins/tags/utm/)
 *  [Advanced View](https://wordpress.org/plugins/entrysource-database-utm-tracker-for-contact-form-7/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/entrysource-database-utm-tracker-for-contact-form-7/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/entrysource-database-utm-tracker-for-contact-form-7/reviews/)

## Contributors

 *   [ Aayush Karki ](https://profiles.wordpress.org/aayukarki/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/entrysource-database-utm-tracker-for-contact-form-7/)