The entries list, filtered by channel, showing the source of each submission.
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.
For every submission EntrySource stores the answers of each form field plus:
utm_source, utm_medium, utm_campaign, utm_term and utm_content.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).Traffic is named rather than lumped into “Referral”. Around 160 referring hosts and 100 utm_source spellings are matched, covering:
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.
Two ways, use whichever suits you:
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.
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.
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.
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.