{"id":291281,"date":"2026-03-26T19:12:01","date_gmt":"2026-03-26T19:12:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/utm-tracker-for-elementor\/"},"modified":"2026-08-18T06:01:52","modified_gmt":"2026-08-18T06:01:52","slug":"shulman-utm-attribution-for-elementor","status":"publish","type":"plugin","link":"https:\/\/sna.wordpress.org\/plugins\/shulman-utm-attribution-for-elementor\/","author":21137828,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.22.1","stable_tag":"1.22.1","tested":"7.0.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Shulman UTM Attribution for Elementor","header_author":"Ranel Shulman","header_description":"Simple and reliable UTM tracking for Elementor Forms and WooCommerce with First Click and Last Click attribution support.","assets_banners_color":"fbfbfc","last_updated":"2026-08-18 06:01:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":5,"author_block_rating":0,"active_installs":10,"downloads":1092,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.10.10":{"tag":"1.10.10","author":"ranelshulman","date":"2026-05-05 21:43:23"},"1.10.11":{"tag":"1.10.11","author":"ranelshulman","date":"2026-05-07 21:38:08"},"1.10.12":{"tag":"1.10.12","author":"ranelshulman","date":"2026-05-12 08:09:40"},"1.10.13":{"tag":"1.10.13","author":"ranelshulman","date":"2026-05-18 11:16:44"},"1.10.14":{"tag":"1.10.14","author":"ranelshulman","date":"2026-05-18 12:24:26"},"1.10.15":{"tag":"1.10.15","author":"ranelshulman","date":"2026-06-04 07:06:02"},"1.10.16":{"tag":"1.10.16","author":"ranelshulman","date":"2026-06-04 08:07:43"},"1.10.17":{"tag":"1.10.17","author":"ranelshulman","date":"2026-06-04 08:17:07"},"1.10.18":{"tag":"1.10.18","author":"ranelshulman","date":"2026-06-04 08:35:13"},"1.10.19":{"tag":"1.10.19","author":"ranelshulman","date":"2026-06-04 09:15:41"},"1.10.20":{"tag":"1.10.20","author":"ranelshulman","date":"2026-06-04 09:29:06"},"1.10.6":{"tag":"1.10.6","author":"ranelshulman","date":"2026-04-20 19:51:29"},"1.10.7":{"tag":"1.10.7","author":"ranelshulman","date":"2026-04-26 15:31:42"},"1.10.8":{"tag":"1.10.8","author":"ranelshulman","date":"2026-04-30 19:01:58"},"1.10.9":{"tag":"1.10.9","author":"ranelshulman","date":"2026-05-03 08:11:05"},"1.16.2":{"tag":"1.16.2","author":"ranelshulman","date":"2026-07-09 11:07:47"},"1.19.0":{"tag":"1.19.0","author":"ranelshulman","date":"2026-07-21 23:13:35"},"1.21.0":{"tag":"1.21.0","author":"ranelshulman","date":"2026-07-26 15:56:15"},"1.21.1":{"tag":"1.21.1","author":"ranelshulman","date":"2026-07-26 16:26:59"},"1.22.1":{"tag":"1.22.1","author":"ranelshulman","date":"2026-08-18 06:01:52"},"1.7.12":{"tag":"1.7.12","author":"ranelshulman","date":"2026-03-26 19:21:15"},"1.8.0":{"tag":"1.8.0","author":"ranelshulman","date":"2026-04-14 12:38:36"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3617769,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3617769,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3617769,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3617769,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.10.10","1.10.11","1.10.12","1.10.13","1.10.14","1.10.15","1.10.16","1.10.17","1.10.18","1.10.19","1.10.20","1.10.6","1.10.7","1.10.8","1.10.9","1.16.2","1.19.0","1.21.0","1.21.1","1.22.1","1.7.12","1.8.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3617769,"resolution":"1","location":"assets","locale":"","width":1663,"height":1084},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3617769,"resolution":"2","location":"assets","locale":"","width":2285,"height":1129},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3617769,"resolution":"3","location":"assets","locale":"","width":1862,"height":793},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3617769,"resolution":"4","location":"assets","locale":"","width":2012,"height":988},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3617769,"resolution":"5","location":"assets","locale":"","width":2274,"height":1074}},"screenshots":{"1":"UTM Attribution Dashboard with key insights and attribution overview.","2":"WooCommerce Executive Dashboard with revenue, orders and performance metrics.","3":"Compare First Touch and Last Touch attribution sources.","4":"Conversion Funnel showing visitor progression through the purchase journey.","5":"Attribution Leads Table with captured UTM parameters and visitor details."}},"plugin_section":[],"plugin_tags":[9067,76538,335,24188,286],"plugin_category":[36,45],"plugin_contributors":[258723],"plugin_business_model":[],"class_list":["post-291281","plugin","type-plugin","status-publish","hentry","plugin_tags-attribution","plugin_tags-elementor","plugin_tags-leads","plugin_tags-utm","plugin_tags-woocommerce","plugin_category-analytics","plugin_category-ecommerce","plugin_contributors-ranelshulman","plugin_committers-ranelshulman"],"banners":{"banner":"https:\/\/ps.w.org\/shulman-utm-attribution-for-elementor\/assets\/banner-772x250.png?rev=3617769","banner_2x":"https:\/\/ps.w.org\/shulman-utm-attribution-for-elementor\/assets\/banner-1544x500.png?rev=3617769","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/shulman-utm-attribution-for-elementor\/assets\/icon-128x128.png?rev=3617769","icon_2x":"https:\/\/ps.w.org\/shulman-utm-attribution-for-elementor\/assets\/icon-256x256.png?rev=3617769","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/shulman-utm-attribution-for-elementor\/assets\/screenshot-1.jpg?rev=3617769","caption":"UTM Attribution Dashboard with key insights and attribution overview."},{"src":"https:\/\/ps.w.org\/shulman-utm-attribution-for-elementor\/assets\/screenshot-2.jpg?rev=3617769","caption":"WooCommerce Executive Dashboard with revenue, orders and performance metrics."},{"src":"https:\/\/ps.w.org\/shulman-utm-attribution-for-elementor\/assets\/screenshot-3.jpg?rev=3617769","caption":"Compare First Touch and Last Touch attribution sources."},{"src":"https:\/\/ps.w.org\/shulman-utm-attribution-for-elementor\/assets\/screenshot-4.jpg?rev=3617769","caption":"Conversion Funnel showing visitor progression through the purchase journey."},{"src":"https:\/\/ps.w.org\/shulman-utm-attribution-for-elementor\/assets\/screenshot-5.jpg?rev=3617769","caption":"Attribution Leads Table with captured UTM parameters and visitor details."}],"raw_content":"<!--section=description-->\n<p>Production-grade attribution and analytics plugin for Elementor Forms and WooCommerce with advanced customer journey tracking and reporting.<\/p>\n\n<p>Tracks first-touch and last-touch attribution across the customer journey, captures Elementor leads, enriches WooCommerce orders, records WooCommerce shopping events, and provides analytics dashboards with CSV export.<\/p>\n\n<p>Features:\n* Elementor lead attribution with complete conversion snapshots\n* WooCommerce order attribution\n* WooCommerce Analytics Dashboard\n* Executive Dashboard with KPIs\n* Orders Analytics\n* Cart Events tracking\n* Product Performance reports\n* Funnel Analytics\n* Campaign Performance reports\n* First-touch and Last-touch attribution\n* Session tracking with visit count\n* Attribution confidence classification\n* UTM cookie persistence and server-side fallback\n* Advanced Leads Dashboard with filters, sorting, custom columns and CSV export\n* Manually correct a lead's contact details and UTM values, individually or in bulk across multiple leads at once\n* Historical Attribution Repair \u2014 rebuild \"untracked\" records whose original landing page already contains attribution parameters\n* Landing Page Optimization Report with canonical Source\/Medium grouping, full column sorting, period-over-period comparisons, Top Insights, Top Rankings, Paid vs Organic breakdown, and a simple Report Notes field\n* Read-only Reporting REST API for connecting external reporting, analytics, and business intelligence platforms\n* Separate WooCommerce analytics database optimized for reporting\n* Plugin-wide canonical Meta (Facebook\/Instagram) normalization shown consistently across every report, dashboard, and export, with a Debug Layer to inspect the original captured value when needed\n* Fully backward compatible with legacy cookies, options and meta keys<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP in WordPress admin or copy the plugin folder to \/wp-content\/plugins\/.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Configure settings from the plugin admin screen.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<p>Note: this section is kept trimmed to recent versions to stay under WordPress.org's 5000-character\nchangelog limit. The complete version history is preserved in docs\/CHANGELOG-ARCHIVE.md.<\/p>\n\n<h4>1.22.1<\/h4>\n\n<ul>\n<li>Fixed: a Google click ID (gclid) could incorrectly override an already-valid, meaningful Source\/Medium (e.g. \"YouTube \/ Paid\" was being forced to \"Google \/ Paid\"). A gclid now only repairs a Source\/Medium pair that is missing or malformed \u2014 it never overwrites a genuine, distinct value like a newsletter or another ad platform.<\/li>\n<li>Fixed: the Reporting API's GET \/leads and GET \/order-items now report canonical Source\/Medium (matching the Dashboard, CSV exports, and Elementor Webhook fields) instead of the raw captured value \u2014 closing a gap where an external system could see different Source\/Medium values than the Dashboard for the same lead or order. Their Source\/Medium filter parameters (also shared by GET \/report-summary and GET \/campaigns) now match on that same canonical value too, so filtering no longer misses a row shown under that value elsewhere. This is a breaking change for the affected fields; see docs\/REPORTING_API.md for details.<\/li>\n<li>Improved: Elementor Webhook\/Email\/CRM integrations now send canonical Source\/Medium by default; two new optional fields, raw_utm_source and raw_utm_medium, are available for anyone who specifically needs the original captured value.<\/li>\n<\/ul>\n\n<h4>1.22.0<\/h4>\n\n<ul>\n<li>Added: a new Reporting API endpoint, GET \/leads, returns individual (non-aggregated) lead rows, cursor-paginated, with no personal data \u2014 for an external system to pull the full lead dataset each sync cycle. Detecting deletions needs no separate mechanism: a previously-seen lead simply stops appearing in the pull.<\/li>\n<li>Added: a canonical Google click-ID rule \u2014 when a lead carries a genuine Google Ads click ID, its reported Source is always \"Google,\" and its Medium reflects the actual traffic surface (\"CPC\" for Search, \"Paid\" for PMax\/Display\/YouTube\/Shopping and anything else), overriding a malformed, missing, or unrelated raw value. Applied consistently everywhere Source\/Medium is shown or filtered.<\/li>\n<li>Added: GET \/leads now reports both a canonical (grouped) and raw Form Name, so an external system can reliably treat multiple technical form instances that share one business-facing name as the same form.<\/li>\n<li>Added: a new Reporting API endpoint, GET \/order-items, returns WooCommerce purchase data at the individual product line-item level \u2014 quantity, revenue, product, category, live order status, and attribution \u2014 so a specific product's sales can be measured accurately even inside a mixed shopping cart.<\/li>\n<li>Added: GET \/leads and GET \/order-items now also report session count (visits before conversion) and UTM Content\/Term for both first-touch and last-touch. Custom Lead Fields can now be selectively exposed to the Reporting API via a new opt-in \"Include in API\" checkbox, off by default for every field.<\/li>\n<li>Fixed: deleting or editing a single lead from the Leads dashboard could leave the page blank until logging out and back in, caused by a redirect that ran too late in WordPress's own page-load sequence. Both actions now redirect correctly.<\/li>\n<\/ul>\n\n<h4>1.21.1 and earlier<\/h4>\n\n<ul>\n<li>See docs\/CHANGELOG-ARCHIVE.md for the complete history, including the plugin-wide canonical Meta Source\/Medium normalization and Debug Layer (1.21.0), the Landing Page Optimization Report redesign and Leads Table Medium filter (1.20.0), the vendor-neutral Reporting API wording and repair UX overhaul (1.19.0), the Leads Table manual-correction feature and Attribution Engine consistency fixes (1.18.0), the lint-suppression correctness fix (1.17.2), the Landing Page Optimization Report's attribution repair tool and resizable columns (1.17.0), the split phpcs:ignore comment fix (1.16.2), the Campaign filter fix (1.16.1), the report grouping and CSV-export sync hardening (1.16.0), the Landing Page Optimization Report launch (1.15.0), Attribution Engine Hardening, Plugin Check remediation, Custom Lead Fields UX, curated default-visible columns, attribution confidence scoring, direct-vs-untracked classification, fbclid\/gclid handling, and referrer normalization.<\/li>\n<\/ul>","raw_excerpt":"Track UTM attribution for Elementor forms and WooCommerce with lead capture, phone storage, and first-touch \/ last-touch reporting.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/291281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=291281"}],"author":[{"embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ranelshulman"}],"wp:attachment":[{"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=291281"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=291281"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=291281"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=291281"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=291281"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sna.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=291281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}