{"id":370336,"date":"2026-09-22T07:11:47","date_gmt":"2026-09-22T07:11:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/leads-dashboard-for-forms\/"},"modified":"2026-10-01T12:35:56","modified_gmt":"2026-10-01T12:35:56","slug":"plynto-form-leads-dashboard","status":"publish","type":"plugin","link":"https:\/\/te.wordpress.org\/plugins\/plynto-form-leads-dashboard\/","author":23567712,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.4.2","stable_tag":"0.4.2","tested":"7.1.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Plynto \u2013 Leads Database, Dashboard & UTM Tracking for Contact Form 7","header_author":"Mayur Patil","header_description":"A visual leads dashboard for your form plugins \u2014 donut charts, trend graphs, source tracking, and a clean lead inbox. Free tier: Contact Form 7.","assets_banners_color":"54524c","last_updated":"2026-10-01 12:35:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":4,"author_block_rating":0,"active_installs":0,"downloads":231,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.0":{"tag":"0.3.0","author":"leadlens","date":"2026-09-22 07:11:29","revision":3706748},"0.3.1":{"tag":"0.3.1","author":"leadlens","date":"2026-09-22 10:12:40","revision":3707033},"0.4.0":{"tag":"0.4.0","author":"leadlens","date":"2026-09-23 12:18:34","revision":3709300},"0.4.1":{"tag":"0.4.1","author":"leadlens","date":"2026-09-29 05:38:39","revision":3718304},"0.4.2":{"tag":"0.4.2","author":"leadlens","date":"2026-10-01 12:35:56","revision":3723146}},"upgrade_notice":{"0.4.2":"<p>Fixes a stray column appearing in other Contact Form 7 entry plugins. Recommended for everyone.<\/p>","0.4.1":"<p>Security and privacy hardening for attachments and the settings screen. Recommended for all users. No database changes.<\/p>","0.4.0":"<p>Adds ad-campaign tracking, a lead pipeline and notes. The database is upgraded automatically; no leads are changed or removed.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":1,"5":0},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3720347,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3720347,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3720347,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3720347,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.0","0.3.1","0.4.0","0.4.1","0.4.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3720347,"resolution":"1","location":"assets","locale":"","width":1600,"height":516},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3720347,"resolution":"2","location":"assets","locale":"","width":1600,"height":363},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3720347,"resolution":"3","location":"assets","locale":"","width":1600,"height":880},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3720347,"resolution":"4","location":"assets","locale":"","width":1600,"height":767},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3720347,"resolution":"5","location":"assets","locale":"","width":1600,"height":868},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3720347,"resolution":"6","location":"assets","locale":"","width":1920,"height":1418},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3720347,"resolution":"7","location":"assets","locale":"","width":1920,"height":1038}},"screenshots":{"1":"Leads dashboard \u2014 total, this month, today and unread counters, Leads by Form donut and 30-day trend.","2":"Leads by Channel and Lead Pipeline \u2014 see whether Google Ads, Facebook or organic search brings your enquiries.","3":"Leads by Project \/ Page and the Form \u00d7 Page breakdown matrix.","4":"Lead inbox with search, form, page, stage, channel and date filters and bulk actions.","5":"Single lead view with every submitted field, attachments, pipeline stage and private notes.","6":"Traffic source of a lead \u2014 UTM campaign, click ID, referrer and landing page.","7":"Settings \u2014 form plugins, traffic source tracking and data options."}},"plugin_section":[],"plugin_tags":[139346,1152,187790,335,25969],"plugin_category":[36],"plugin_contributors":[281967],"plugin_business_model":[],"class_list":["post-370336","plugin","type-plugin","status-publish","hentry","plugin_tags-cf7-database","plugin_tags-contact-form-7","plugin_tags-form-entries","plugin_tags-leads","plugin_tags-utm-tracking","plugin_category-analytics","plugin_contributors-leadlens","plugin_committers-leadlens"],"banners":{"banner":"https:\/\/ps.w.org\/plynto-form-leads-dashboard\/assets\/banner-772x250.png?rev=3720347","banner_2x":"https:\/\/ps.w.org\/plynto-form-leads-dashboard\/assets\/banner-1544x500.png?rev=3720347","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/plynto-form-leads-dashboard\/assets\/icon-128x128.png?rev=3720347","icon_2x":"https:\/\/ps.w.org\/plynto-form-leads-dashboard\/assets\/icon-256x256.png?rev=3720347","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/plynto-form-leads-dashboard\/assets\/screenshot-1.png?rev=3720347","caption":"Leads dashboard \u2014 total, this month, today and unread counters, Leads by Form donut and 30-day trend."},{"src":"https:\/\/ps.w.org\/plynto-form-leads-dashboard\/assets\/screenshot-2.png?rev=3720347","caption":"Leads by Channel and Lead Pipeline \u2014 see whether Google Ads, Facebook or organic search brings your enquiries."},{"src":"https:\/\/ps.w.org\/plynto-form-leads-dashboard\/assets\/screenshot-3.png?rev=3720347","caption":"Leads by Project \/ Page and the Form \u00d7 Page breakdown matrix."},{"src":"https:\/\/ps.w.org\/plynto-form-leads-dashboard\/assets\/screenshot-4.png?rev=3720347","caption":"Lead inbox with search, form, page, stage, channel and date filters and bulk actions."},{"src":"https:\/\/ps.w.org\/plynto-form-leads-dashboard\/assets\/screenshot-5.png?rev=3720347","caption":"Single lead view with every submitted field, attachments, pipeline stage and private notes."},{"src":"https:\/\/ps.w.org\/plynto-form-leads-dashboard\/assets\/screenshot-6.png?rev=3720347","caption":"Traffic source of a lead \u2014 UTM campaign, click ID, referrer and landing page."},{"src":"https:\/\/ps.w.org\/plynto-form-leads-dashboard\/assets\/screenshot-7.png?rev=3720347","caption":"Settings \u2014 form plugins, traffic source tracking and data options."}],"raw_content":"<!--section=description-->\n<p><strong>Contact Form 7 only emails you a submission \u2014 if that email lands in spam or never arrives, the lead is gone.<\/strong> Plynto saves every Contact Form 7 submission in your own WordPress database and turns it into a leads dashboard you can actually use: how many leads came in today and this month, which form and which page produced them, and which ad campaign sent the visitor.<\/p>\n\n<p>It works the moment you activate it. No setup, no account, no external service.<\/p>\n\n<h4>Why Plynto instead of a plain CF7 database plugin?<\/h4>\n\n<p>A database plugin stores entries. Plynto also answers the question every business owner asks: <strong>\"Is my Google Ads or Facebook money actually bringing enquiries?\"<\/strong><\/p>\n\n<ul>\n<li><strong>Contact Form 7 database<\/strong> \u2014 every submission, every field and every file upload saved and searchable<\/li>\n<li><strong>UTM and ad tracking<\/strong> \u2014 UTM source, medium, campaign, keyword and content, plus Google (gclid), Facebook (fbclid) and Microsoft (msclkid) click IDs, saved with each lead<\/li>\n<li><strong>Leads by channel<\/strong> \u2014 Google Ads, Facebook \/ Instagram, organic search, social, email, referral or direct, charted automatically<\/li>\n<li><strong>Lead pipeline<\/strong> \u2014 move each lead from New \u2192 Contacted \u2192 Qualified \u2192 Won or Lost, like a lightweight CRM<\/li>\n<li><strong>Private notes<\/strong> \u2014 log calls, site visits and follow-ups on every lead, with author and time<\/li>\n<li><strong>Source page tracking<\/strong> \u2014 see which landing page, property or project page the lead came from, even for forms inside popups and shortcodes<\/li>\n<\/ul>\n\n<h4>Dashboard<\/h4>\n\n<ul>\n<li>Total, this month, today and unread lead counters<\/li>\n<li>Leads by Form donut chart with clickable legend<\/li>\n<li>Leads by Channel donut chart<\/li>\n<li>Lead Pipeline breakdown by stage<\/li>\n<li>Leads by Project \/ Page donut chart<\/li>\n<li>30-day lead trend graph<\/li>\n<li>Form \u00d7 Page breakdown matrix \u2014 every cell opens that filtered lead list<\/li>\n<li>Unread lead count badge in the admin menu<\/li>\n<\/ul>\n\n<h4>Lead inbox<\/h4>\n\n<ul>\n<li>Search by name, email, phone or any submitted field<\/li>\n<li>Filter by form, page, pipeline stage, channel and date range<\/li>\n<li>Single lead view with every submitted field, file attachments, page URL, IP address, browser and full traffic source (first visit and the visit that led to the enquiry)<\/li>\n<li>Bulk mark as read, bulk move to stage and bulk delete<\/li>\n<li>One-click \"Reply by email\"<\/li>\n<\/ul>\n\n<h4>CSV export<\/h4>\n\n<p>Export Contact Form 7 entries to CSV, opening cleanly in Excel and Google Sheets. The export follows your current filters and includes stage, channel, UTM source, medium, campaign, landing page and referrer columns. Values are protected against spreadsheet formula injection.<\/p>\n\n<h4>How traffic source tracking works<\/h4>\n\n<p>A small first-party script remembers how each visitor arrived \u2014 UTM tags, click IDs, the referring website and the landing page \u2014 and attaches it to the lead when a form is submitted, even if that happens several pages or days later. It works behind page caches. Both the first visit and the visit that led to the enquiry are kept.<\/p>\n\n<p>It uses one cookie, <code>plynto_attr<\/code>, for 90 days. It can be switched off under Leads \u2192 Settings, or connected to a cookie consent plugin through the <code>plynto_attribution_enabled<\/code> filter.<\/p>\n\n<h4>Privacy and your data<\/h4>\n\n<ul>\n<li>Leads, notes and traffic-source data are stored only in your own WordPress database<\/li>\n<li>The free plugin makes no outbound requests at all \u2014 nothing is sent to any external service<\/li>\n<li>Uploaded files are copied into your own uploads folder with unguessable file names, in a folder that blocks directory listing and script execution<\/li>\n<li>Deleting a lead also deletes its copied attachments and notes<\/li>\n<li>Works with WordPress's Export Personal Data and Erase Personal Data tools (GDPR), and adds suggested text to your privacy policy guide<\/li>\n<\/ul>\n\n<h4>Who is it for?<\/h4>\n\n<p>Real estate developers and agents, agencies running Google Ads or Facebook campaigns for clients, coaching and education businesses, clinics, B2B service companies \u2014 any site where a Contact Form 7 enquiry is a sales lead.<\/p>\n\n<h4>More form plugins<\/h4>\n\n<p>This free plugin supports Contact Form 7. An optional paid add-on adds WPForms, Gravity Forms, Elementor Forms and Fluent Forms capture, instant email alerts, outgoing webhooks, scheduled summaries, and an inbound endpoint that receives leads from Google Ads lead forms, or from Facebook Lead Ads through Zapier, Make or Pabbly, into the same inbox. The free plugin is complete on its own and never limits how many leads you store.<\/p>\n\n<h4>About the name<\/h4>\n\n<p>\"Plynto\" is a coined word and a personal project by Mayur Patil; it is not a company or a registered brand, and the plugin claims no domain or website. This plugin is not affiliated with, endorsed by, or connected to Contact Form 7, WPForms, Gravity Forms, Elementor or Fluent Forms. Those names appear only to describe which form plugins submissions can be read from, and all trademarks belong to their respective owners.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Go to Plugins \u2192 Add New, search for \"Plynto\" and click Install, or upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Make sure Contact Form 7 is active. Go to Leads \u2192 Settings and confirm Contact Form 7 is ticked (it is by default).<\/li>\n<li>Submit one of your forms \u2014 the lead appears under Leads straight away.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20save%20contact%20form%207%20submissions%20to%20the%20database%3F\"><h3>Does it save Contact Form 7 submissions to the database?<\/h3><\/dt>\n<dd><p>Yes. Every submission is saved to your WordPress database, including all fields and uploaded files, even if the notification email fails.<\/p><\/dd>\n<dt id=\"does%20it%20import%20my%20old%20submissions%3F\"><h3>Does it import my old submissions?<\/h3><\/dt>\n<dd><p>No. Leads are captured from the moment the plugin is active. Existing submissions stored by another plugin are not read.<\/p><\/dd>\n<dt id=\"can%20i%20see%20which%20google%20ads%20or%20facebook%20campaign%20a%20lead%20came%20from%3F\"><h3>Can I see which Google Ads or Facebook campaign a lead came from?<\/h3><\/dt>\n<dd><p>Yes. If the visitor arrived through a link with UTM tags or a Google, Facebook or Microsoft click ID, the campaign details are saved with the lead and the lead is assigned a channel such as Google Ads or Facebook \/ Instagram.<\/p><\/dd>\n<dt id=\"how%20is%20a%20lead%27s%20channel%20decided%3F\"><h3>How is a lead's channel decided?<\/h3><\/dt>\n<dd><p>From the visit that led to the enquiry: a Google click ID or a paid Google UTM means Google Ads; a Facebook click ID, a Facebook \/ Instagram UTM or referrer means Facebook \/ Instagram; a search engine referrer means organic search; any other website means referral; and no campaign or referrer means direct. Leads captured before version 0.4.0, or with tracking switched off, show as \"Not tracked\".<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20forms%20inside%20popups%20or%20shortcodes%3F\"><h3>Does it work with forms inside popups or shortcodes?<\/h3><\/dt>\n<dd><p>Yes. A hidden field records the page the form was rendered on, so the source page is still correct when the referring URL is not.<\/p><\/dd>\n<dt id=\"can%20i%20export%20contact%20form%207%20entries%20to%20csv%20or%20excel%3F\"><h3>Can I export Contact Form 7 entries to CSV or Excel?<\/h3><\/dt>\n<dd><p>Yes. The Export CSV button on the lead list exports exactly the leads matching your current filters, with a UTF-8 file that opens correctly in Excel and Google Sheets.<\/p><\/dd>\n<dt id=\"where%20are%20uploaded%20files%20stored%3F\"><h3>Where are uploaded files stored?<\/h3><\/dt>\n<dd><p>In <code>wp-content\/uploads\/plynto-leads\/YYYY\/MM\/<\/code>, with a random prefix on each file name. Contact Form 7 deletes its own temporary uploads after sending, so the plugin copies them first. Deleting a lead deletes its copied files too.<\/p><\/dd>\n<dt id=\"does%20deactivating%20the%20plugin%20delete%20my%20leads%3F\"><h3>Does deactivating the plugin delete my leads?<\/h3><\/dt>\n<dd><p>No. Deactivating changes nothing. Even deleting the plugin keeps your data unless you tick \"Delete all stored leads and uploaded files\" in Leads \u2192 Settings first.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20anything%20to%20an%20external%20server%3F\"><h3>Does the plugin send anything to an external server?<\/h3><\/dt>\n<dd><p>No. The free version makes no outbound requests at all.<\/p><\/dd>\n<dt id=\"does%20source%20tracking%20set%20a%20cookie%3F\"><h3>Does source tracking set a cookie?<\/h3><\/dt>\n<dd><p>Yes, one first-party cookie called <code>plynto_attr<\/code>, kept for 90 days, holding only campaign parameters, the referring site and the landing page \u2014 no name, email or other form data. Suggested wording for your privacy policy is added to Settings \u2192 Privacy \u2192 Policy Guide. If your visitors must opt in to marketing cookies, switch tracking off in Leads \u2192 Settings or connect it to your consent plugin with the <code>plynto_attribution_enabled<\/code> filter.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20%22unread%22%20and%20the%20%22new%22%20stage%3F\"><h3>What is the difference between \"Unread\" and the \"New\" stage?<\/h3><\/dt>\n<dd><p>Unread only means nobody has opened the lead yet. The stage is your sales progress: a lead stays at New until you mark it Contacted, Qualified, Won or Lost.<\/p><\/dd>\n<dt id=\"can%20editors%20or%20other%20roles%20see%20the%20leads%3F\"><h3>Can editors or other roles see the leads?<\/h3><\/dt>\n<dd><p>By default only administrators can. Developers can change this with the <code>plynto_capability<\/code> filter. Leads \u2192 Settings stays administrator-only.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Fix: the hidden field Plynto uses to record which page a form was submitted from no longer appears as a column in other Contact Form 7 entry plugins. It now uses Contact Form 7's reserved <code>_wpcf7<\/code> prefix, which those plugins skip.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Security: Leads \u2192 Settings now always requires an administrator, even when lead access has been given to another role.<\/li>\n<li>Security: copied Contact Form 7 attachments get an unguessable file name, every upload sub-folder gets its own index file, and file types a browser could run as a page or script (HTML, SVG, JavaScript, PHP and similar) are never stored.<\/li>\n<li>Privacy: deleting a lead \u2014 one at a time, in bulk, or through a personal data erasure request \u2014 now also deletes its copied attachments.<\/li>\n<li>Fixed: invalid dates in the lead list date filter are ignored instead of filtering everything out.<\/li>\n<li>New: <code>plynto_settings_capability<\/code> and <code>plynto_blocked_upload_extensions<\/code> filters.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>New: traffic source tracking \u2014 UTM tags, Google \/ Facebook \/ Microsoft click IDs, referrer and landing page are saved with every lead, and each lead gets a channel.<\/li>\n<li>New: \"Leads by Channel\" donut chart and channel filter.<\/li>\n<li>New: lead pipeline stages (New, Contacted, Qualified, Won, Lost) with a dashboard breakdown, stage filter and bulk \"move to stage\".<\/li>\n<li>New: private notes on every lead.<\/li>\n<li>New: stage, channel and UTM columns in the CSV export.<\/li>\n<li>New: stage, channel, campaign data and notes included in personal data exports; notes removed with erasure requests.<\/li>\n<li>New: suggested privacy policy text.<\/li>\n<li>Changed: the unread marker in the lead list now reads \"Unread\" so it is not confused with the \"New\" stage.<\/li>\n<li>Improved: the lead list query now uses fixed, fully prepared SQL for every filter.<\/li>\n<li>Fixed: the Date column in the lead list could shrink to a single character wide.<\/li>\n<li>Database: adds <code>stage<\/code>, <code>channel<\/code> and <code>attribution<\/code> columns and a notes table. Existing leads are kept and start at the New stage.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Fixed: \"headers already sent\" warning when deleting leads.<\/li>\n<li>Fixed: the correct submenu item is now highlighted on the lead list and single lead screens.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Renamed to Plynto Form Leads Dashboard. All functions, classes, constants, globals, options, transients, hooks and the custom database table now use the <code>plynto_<\/code> \/ <code>PLYNTO_<\/code> prefix.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added a plan-aware feature gate and the <code>plynto_lead_saved<\/code> action and settings extension hooks for add-ons.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: Contact Form 7 capture, dashboard, charts, lead inbox, single lead view, CSV export, settings screen.<\/li>\n<\/ul>","raw_excerpt":"Save Contact Form 7 submissions to your database, see which Google or Facebook ad each lead came from, and track it from New to Won.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/370336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=370336"}],"author":[{"embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/leadlens"}],"wp:attachment":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=370336"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=370336"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=370336"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=370336"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=370336"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=370336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}