Troubleshooting
Start with debug. Add it to init and reload the page:
qm("init", { key: "pk_live_…", debug: true });The script then writes what it did, and what it ignored and why, to the browser console (console.debug, shown under “Verbose” in Chrome). Remove it when you are done.
Nothing arrives
Section titled “Nothing arrives”- Is the host allowed? The page’s host must be in Allowed domains in Analytics settings.
www.example.comandexample.comare different hosts;*.example.comcovers subdomains. - Is tracking on? Tracking on in Analytics settings.
- Is the request blocked? Open the browser’s Network tab and look for requests to
ingest-prod.quomerce.com. Ad blockers and privacy extensions can block them. Test in a clean browser profile. - Is there a Content Security Policy? Add
https://ingest-prod.quomerce.comtoscript-srcandconnect-src. See Content Security Policy. - Is the key right? It starts with
pk_live_and must match the website. - Is it a test browser? Playwright, Puppeteer, Selenium, Cypress and headless browsers are recognised as bots: by default their events are not stored at all, and they are never recorded. Test with an ordinary browser window.
Events arrive, but no replays
Section titled “Events arrive, but no replays”- Is Record replays on?
- With consent Required, the visitor must allow both
analyticsandreplay. See Consent. - Sessions under 3 seconds upload nothing.
Commerce events are missing
Section titled “Commerce events are missing”- You call
qm.commercebut nothing arrives? You are inautomode, which ignores these calls. Passcommerce: "manual"toinit. See Commerce: auto or manual. - In
manualmode, some calls are dropped? The arguments do not describe a product or cart. A product needsid,name,priceandcurrency. Money is in major units.debug: truelogs each dropped call. - In
automode, a step is empty? Check Install & setup, which lists events per source. Payment redirects need a rule. Add rules for anything else in Analytics settings → Commerce events. See Auto mode. - Calls made before the script loads are lost? Use the call form
qm("commerce.cartAdded", …), notqm.commerce.cartAdded(…). Only the call form is queued.
Every page looks like a new visit
Section titled “Every page looks like a new visit”With consent Required, ids live in memory for one page load until qm("consent", { analytics: true }) is called. Make sure your banner calls it on every page load, not only when the visitor clicks.
Sessions split between subdomains
Section titled “Sessions split between subdomains”Set cookieDomain: ".example.com" in init, and add every subdomain to Allowed domains.
Orders are counted twice
Section titled “Orders are counted twice”A reload of the confirmation page sends purchase again. Guard the call per order id. See Manual mode.