SmartDingo Form Tracker fails silently — a stale cache, an ungranted consent, or a
mismatched selector all look identical to “the plugin is broken.” This page is organized as
symptom → likely cause → fix so you can jump straight to what you’re seeing.
Note Your first move for almost any tracking problem is the Debug overlay. Turn it on
under SmartDingo Form Tracker → Tools → Debug Mode, then reload the form page while logged
in as an administrator. The overlay (visible only to admins) shows the storage type, consent
status, how many fields are buffered, every stored value, and — per mapping — whether the target
element was FOUND or NOT FOUND. Most causes below are visible at a glance there.
No values are stored and the Debug overlay doesn’t appear at all.
| Likely cause | Fix |
|---|---|
| No tracking fields are enabled. If not a single field is switched on, the tracker script is never even loaded onto the page — and neither is the Debug overlay. | Go to Settings → Tracking Fields and enable at least one field (e.g. UTM Source). Save, then reload the form page. |
| Consent hasn’t been granted. With a consent mode set, incoming data is held in memory and not written to storage until consent is given. | Grant consent in your cookie banner, or check the overlay’s Consent line. See Choose a consent mode. |
| Browser storage is blocked. Safari Private Mode, strict privacy settings, or a blocked storage API prevent values from persisting between pages. | The tracker falls back to an in-memory store so the current page still fills, but data won’t survive navigation. Test in a normal (non-private) window. |
| A stale cached page is loading the old script. | Purge all caches and confirm the page loads sdft-tracker.js?ver=<current version> (view source). See Before you go live. |
Tracking works (values are stored and auto-filled), but submissions don’t turn into leads.
sendBeacon safety-net but cannot be guaranteed.Warning Always confirm with one real test submission before assuming leads are working:
submit with?utm_source=sdft-test, check the Leads page, then delete the test lead.
A tracking value is stored (visible in the Debug overlay) but your form field stays empty.
| Likely cause | Fix |
|---|---|
| The CSS selector doesn’t match the field. The overlay shows NOT FOUND for that mapping. | Re-check the selector against the live form’s HTML, or re-run Scan page to auto-match it. See Field mapping & auto-fill. |
| The field is added to the page after load. Multi-step forms, popups, and lazy-loaded forms may not exist yet at first fill. | The tracker watches the page and re-fills when new fields appear, but fields inside an <iframe> or shadow DOM are out of reach. Where possible, ensure the form renders in the main document. |
| Consent hasn’t been granted. Un-consented data is buffered in memory only, so there is nothing to fill from storage. | Grant consent, or set the consent mode to Off if appropriate for your jurisdiction. |
| A second form claimed the configuration. Each configuration targets one form; if two forms share the same selector, only one is filled. | Give each form its own configuration with selectors unique to that form. |
License activation is handled by Freemius on the connection screen shown after activation.
Caching, optimization, and security layers are the most common cause of “it worked yesterday.”
Caching / optimization plugins (LiteSpeed, WP Rocket, WP Super Cache, host or CDN cache)
freeze the 5-minute lead token in cached HTML, causing rejected submissions and empty Leads
pages. Purge all caches after every deploy or settings change, then confirm the current?ver= script is being served.
ModSecurity / a WAF returning “406 Not Acceptable” can block two things:
Ask your host to whitelist the plugin’s requests (exclude the offending rule ID from the WAF
audit log for your admin and for the frontend/js/ asset paths).
Note After changing any WAF or cache setting, re-run the end-to-end test in
Before you go live.
A visitor reports their form “didn’t go through,” or leads are intermittently missing.
This is expected behavior, not a bug.
input[name="utm_source"]) for each form you want to capture.You’ve spent the budget. You’ve run the campaigns. You deserve to know what actually worked. SmartDingo gives you complete, accurate, first-party attribution for every WordPress form submission. Start today on the forms you already use.
SmartDingo is a WordPress lead tracking plugin built for online marketers and WordPress developers who need accurate, cookieless attribution. It captures UTM parameters, traffic sources, landing pages, and full visitor journeys for every form submission, working seamlessly with Fluent Forms, Gravity Forms, Ninja Forms, WPForms, and other major WordPress form plugins. Whether you’re tracking leads from Google Ads, Meta, LinkedIn, or organic search, SmartDingo connects every lead to the marketing campaign that generated it.