No leads are being recorded
Work through these in order:
1. Test in a private/incognito window. Visit your site with a test URL like ?utm_source=test&utm_medium=debug&utm_campaign=check, then look at UTM Manager → Leads. Regular windows may reuse an existing visitor ID, updating an old lead instead of creating a new one.
2. Check the tracking script is loading. View the page source (or the browser DevTools Network tab) and look for tracker.js loading from wp-content/plugins/utm-manager/assets/js/. If it’s missing:
- A
utmm_enable_trackingfilter in your theme/another plugin may be disabling tracking (it’s commonly used to exclude admins — test logged out). - An aggressive script optimizer (e.g. delaying all JS until user interaction) may be deferring it indefinitely — exclude
utmm-trackerfrom such optimizations.
3. Check the beacon request. In DevTools → Network, filter for utmm/v1/track and reload the page. You should see a POST request:
- No request at all → the script is blocked (see step 2) or an ad-blocker is interfering (test in a clean browser profile).
- 404 → the REST API is unreachable; check Settings → Permalinks (click Save to flush rewrite rules) and any security plugin that restricts
/wp-json/. - 403 → a firewall/security plugin is blocking the REST endpoint; allowlist
utmm/v1/track.
4. Check the parameter is enabled. Under UTM Manager → Settings, confirm the parameters you’re testing with are toggled on — disabled parameters are silently discarded.
5. If UTM Manager Pro is active, check its gates under UTM Manager → Settings → Pro Settings:
- Require consent is on but no consent cookie is set — tracking is suppressed by design until your banner sets it. Confirm the configured cookie name matches the one your banner actually writes, and that its value is
yes,1,true,allow, orgranted. - Exclude roles includes the role you’re testing with — log out or test in a private window.
Leads appear but have no source/campaign
- The visits genuinely carried no UTM parameters (direct traffic is still recorded as journey data).
- The specific parameter is disabled in Settings.
- The URL was malformed — parameters must come after
?and be separated by&.
The same person shows up as two leads
Visitor identity lives in a first-party cookie + localStorage. A new lead is created when a visitor uses a different browser or device, clears their browsing data, or browses in private mode. This is expected — no cookieless tracker can fully avoid it. If the visitor logs in on both devices, both leads will carry the same email and can be recognized as one person.
Tracking works logged out but not logged in (or vice versa)
Almost always a conditional utmm_enable_tracking filter added by your theme or another plugin. Search your codebase for utmm_enable_tracking.
Migration from 1.x hasn’t imported old leads
The migration runs on WP-Cron in one-minute batches:
- On low-traffic sites WP-Cron fires rarely — visit the front-end a few times, or wait.
- If your host disables WP-Cron (
DISABLE_WP_CRON), make sure a real cron job triggerswp-cron.php, or runwp cron event run utmm_migrate_datavia WP-CLI. - Deactivating and reactivating the plugin reschedules the migration if it was interrupted.
CSV export problems
See the troubleshooting section in CSV Export.
Dashboard shows zero after updating to 2.0
The dashboard reads from the new v2.0 tables. If your legacy leads haven’t migrated yet, totals start low and climb as the background migration proceeds — see Migrating from Version 1.x.
Pro features aren’t showing up
- The free plugin must stay active. Pro boots on a hook the free plugin fires, so it does nothing at all when UTM Manager is deactivated.
- Check the license. On Plugins → Installed Plugins, the UTM Manager Pro row should read License is valid. If it doesn’t, see License Activation.
- Once valid, Reports appears under the UTM Manager menu and the Pro Settings and Custom Parameters tabs appear on the Settings screen.
Reports show no countries, devices, or browsers
- Enrichment is switched off under Settings → Pro Settings → Geolocation & Device — tick the boxes you want.
- Country stays empty without an edge header. UTM Manager Pro reads the country your host or CDN reports (
CF-IPCountry,X-Country-Code,GeoIP-Country-Code); it never calls an external geolocation service. If you’re not behind Cloudflare or a host that sets one of those headers, no country is recorded — device and browser still work. - Enrichment only applies to hits recorded after it was enabled; existing leads aren’t backfilled.
Webhooks aren’t arriving
- Enable webhooks is ticked and at least one URL is filled in, one per line.
lead.trackedonly fires when the extra "fire on every tracked visit" box is ticked;lead.identifiedandlead.convertedalways fire.- Deliveries are fire-and-forget with no retry — check your endpoint’s own logs, and verify the
X-UTMM-Signatureheader if you’re rejecting unsigned requests.
Still stuck?
Contact support with: your WordPress and PHP versions, active caching/security/optimization plugins, and what you observed in the DevTools Network tab for the utmm/v1/track request.