Description
Production-grade attribution and analytics plugin for Elementor Forms and WooCommerce with advanced customer journey tracking and reporting.
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.
Features:
* Elementor lead attribution with complete conversion snapshots
* WooCommerce order attribution
* WooCommerce Analytics Dashboard
* Executive Dashboard with KPIs
* Orders Analytics
* Cart Events tracking
* Product Performance reports
* Funnel Analytics
* Campaign Performance reports
* First-touch and Last-touch attribution
* Session tracking with visit count
* Attribution confidence classification
* UTM cookie persistence and server-side fallback
* Advanced Leads Dashboard with filters, sorting, custom columns and CSV export
* Manually correct a lead’s contact details and UTM values, individually or in bulk across multiple leads at once
* Historical Attribution Repair — rebuild “untracked” records whose original landing page already contains attribution parameters
* 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
* Read-only Reporting REST API for connecting external reporting, analytics, and business intelligence platforms
* Separate WooCommerce analytics database optimized for reporting
* 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
* Fully backward compatible with legacy cookies, options and meta keys
Screenshots





Installation
- Upload the plugin ZIP in WordPress admin or copy the plugin folder to /wp-content/plugins/.
- Activate the plugin.
- Configure settings from the plugin admin screen.
Contributors & Developers
“Shulman UTM Attribution for Elementor” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Shulman UTM Attribution for Elementor” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
Note: this section is kept trimmed to recent versions to stay under WordPress.org’s 5000-character
changelog limit. The complete version history is preserved in docs/CHANGELOG-ARCHIVE.md.
1.22.1
- 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 — it never overwrites a genuine, distinct value like a newsletter or another ad platform.
- 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 — 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.
- 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.
1.22.0
- Added: a new Reporting API endpoint, GET /leads, returns individual (non-aggregated) lead rows, cursor-paginated, with no personal data — 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.
- Added: a canonical Google click-ID rule — 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.
- 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.
- Added: a new Reporting API endpoint, GET /order-items, returns WooCommerce purchase data at the individual product line-item level — quantity, revenue, product, category, live order status, and attribution — so a specific product’s sales can be measured accurately even inside a mixed shopping cart.
- 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.
- 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.
1.21.1 and earlier
- 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.
