=== Shulman UTM Attribution for Elementor === Contributors: ranelshulman Tags: utm, attribution, elementor, woocommerce, leads Requires at least: 5.8 Tested up to: 7.1 Requires PHP: 7.4 Stable tag: 1.25.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Track UTM attribution for Elementor forms and WooCommerce with lead capture, phone storage, and first-touch / last-touch reporting. == 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 == Installation == 1. Upload the plugin ZIP in WordPress admin or copy the plugin folder to /wp-content/plugins/. 2. Activate the plugin. 3. Configure settings from the plugin admin screen. == 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. == 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.25.0 = * Fixed: Google Shopping traffic (google_shopping/google-shopping) was only alias-matched for filtering, never actually merged into the canonical "google" source for display or grouping — causing repeated, fragmented rows for what should have been one combined source on Campaign Performance and elsewhere. Now folds into "google" everywhere the shared canonical resolver is used, including the Reporting API (a site reading a raw google_shopping source from /orders, /order-items, or /leads now sees google instead). * Added: a Purchases Attribution Summary at the top of WooCommerce Orders — Attribution (Total Orders/Revenue, Attributed/Direct/Untracked breakdown, Top Sources, Top First-Touch vs. Last-Touch bars), replacing the old First-Touch → Last-Touch Path Analysis table, plus a Summary by Source (Orders, Revenue, Cart Abandonment) on Campaign Performance. Both pages, and the existing Campaign Performance table itself, now count Orders/Revenue from paid orders only (Processing/Completed) and show an excluded-orders breakdown by status, so a pending, cancelled, or failed order is never counted as a purchase. (Also fixes a multi-line-item order being counted as several orders on Campaign Performance, caught during QA of this same change.) * Added: the Orders Attribution status filter is now multi-select, so e.g. Processing and Completed can be filtered together instead of one at a time. = 1.24.0 = * Added: an optional SUMIT donations bridge, GET /sumit-donations — a Reporting API route for sites using a custom SUMIT-based donation plugin instead of WooCommerce checkout. Reads completed donations live, in-process (no outbound network request, no local storage, no new database table) from that plugin's own REST route, and normalizes their tracking data through this plugin's existing attribution engine, so the same UTM/click-ID handling applies. Off by default; enable in Settings and provide the SUMIT API key to activate. Does not affect WooCommerce or Elementor tracking in any way. * Fixed: saving the SUMIT Donations settings form was silently turning off the "Enable WooCommerce tracking" checkbox (and vice versa), because the Settings screen's several independent forms shared one save handler with no way to tell which form was actually submitted. Each form is now tagged so saving one section never resets another. Sites that had WooCommerce tracking enabled and then saved the SUMIT section should re-check that box once after updating. = 1.23.0 and earlier = * See docs/CHANGELOG-ARCHIVE.md for the complete history, including the new order-level GET /orders endpoint and WooCommerce campaign_id capture (1.23.0), the GET /leads fatal-error fix (1.22.2), the canonical Google click-ID precedence revision (1.22.1), and everything before that. * See docs/CHANGELOG-ARCHIVE.md for the complete history, including the GET /leads fatal-error fix and "Tested up to" bump (1.22.2), the canonical Google click-ID precedence revision and GET /leads and GET /order-items canonical Source/Medium reporting — a breaking change for those two fields (1.22.1), the GET /leads and GET /order-items Reporting API endpoints and canonical Google click-ID rule (1.22.0), 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.