Snippet is in the wrong place — it must be in <head>, not <body> or after </html>
site_id is missing — confirm scanova('init', 'YOUR_SITE_ID', ...) has a real site ID, not a placeholder
Script blocked by Content Security Policy (CSP) — add https://cdn.scanova.io (script source) and https://t.scanova.io (connect source) to your CSP headers
Browser extension blocking the request — test in an incognito window with all extensions disabled
autoPageview: false and no manual track call — either enable autoPageview or add scanova('track', 'pageview')
SDK loaded twice — having both a direct HTML install and a GTM install on the same page causes issues. Remove one.
The origin of your request is not in the tracking site’s Allowed Domains list.
Go to Analytics → Conversion Tracking
Click on your tracking site → Edit
Add the exact hostname shown in your browser’s address bar (e.g. yoursite.com, www.yoursite.com)
Save
www.yoursite.com and yoursite.com are treated as different domains. Add both if you use either.
The allowlist is checked against the request’s Origin (falling back to Referer). A curl or server-side reproduction of a browser event therefore returns 403 Domain not allowed for this site even when the domain is allowed, because neither header is sent. Add -H "Origin: https://yoursite.com" when reproducing a browser event by hand.
You have both autoPageview: true in your init options and a manual scanova('track', 'page_view', ...) call somewhere in your code. These produce two separate events. Remove one — see Auto-Tracked Events.
If no /ct request appears for a visit, the most likely cause is that the user arrived without a QR Code scan — there is no ?scnv= parameter in the URL. The SDK checks for a scan_session_id before sending any event, and silently skips if it is absent.Scanova Conversion Tracking only measures QR-scan-originated traffic. Direct or organic visits produce no events — this is by design.To test attribution, visit your page with a ?scnv= parameter to simulate a scan:
The scan_session_id you sent could not be linked to a QR scan in the Scanova database. This happens when:
The scan_session_id was made up or invalid
The user did not actually scan a QR Code — they arrived directly
The scan session has expired
Confirm you are reading scan_session_id from the browser (via localStorage._scnv — an internal SDK storage key) and passing it to your server correctly. See Send Server Events for examples.
This is an orphan record — the event arrived before the scan session data was fully propagated in the Scanova database. These records are automatically cleaned up after 24 hours if the session data never arrives, or backfilled once it does.If you see many orphan records, check that:
The scan_session_id in your events is a real scan session (not a test UUID)
Your QR Codes are correctly linked to the tracking site in the dashboard
Your scan_session_id is not being read correctly — you may be reading a stale or incorrect value from localStorage. Confirm your frontend reads from localStorage.getItem('_scnv') (the SDK’s internal storage key) and parses .sid from the JSON value. See Send Server Events for the full pattern.
For server events, switch to the batch endpoint (POST /server-events/batch) to send up to 100 events per request, reducing your request rate by up to 100×.For browser events, 429 during normal usage is rare. If you see it during load testing, space out your requests.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Scanova API Documentation","colors":{"primary":"#6938ef","light":"#6938ef","dark":"#6938ef"},"logo":{"light":"https://mintcdn.com/scanova-api/89jUfOeAiT0p2JGx/images/PrimaryColor-Full.svg?fit=max\u0026auto=format\u0026n=89jUfOeAiT0p2JGx\u0026q=85\u0026s=edc08604efcf06d6dd5d00e9e2c50f20","dark":"https://mintcdn.com/scanova-api/89jUfOeAiT0p2JGx/images/WhiteColor-Full2.svg?fit=max\u0026auto=format\u0026n=89jUfOeAiT0p2JGx\u0026q=85\u0026s=84e81cd9168db3d3ca3949b427e2d6c6"},"favicon":{"light":"https://mintcdn.com/scanova-api/aXUnnYg-8s3nt2o_/images/favicon-64x64.png?fit=max\u0026auto=format\u0026n=aXUnnYg-8s3nt2o_\u0026q=85\u0026s=b59720ad14aa6f2f474ea4380bf15d23","dark":"https://mintcdn.com/scanova-api/aXUnnYg-8s3nt2o_/images/favicon-64x64.png?fit=max\u0026auto=format\u0026n=aXUnnYg-8s3nt2o_\u0026q=85\u0026s=b59720ad14aa6f2f474ea4380bf15d23"},"background":{"color":{"dark":"#05060f"}},"navbar":{"links":[{"href":"https://scanova.io/contact-support/","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.scanova.io"}},"footer":{"socials":{"website":"https://scanova.io","youtube":"https://www.youtube.com/channel/UCHSrteaenPuxL0WjLFmhaEA/featured","x":"https://twitter.com/scanovatech","linkedin":"https://www.linkedin.com/products/scanova-qr-code-generator"}},"integrations":{"ga4":{"measurementId":"G-GWMY0DDJWB"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{},"languages":[{"language":"en","default":true,"href":"getting-started/what-is-scanova"},{"language":"de","href":"de/getting-started/what-is-scanova"},{"language":"es","href":"es/getting-started/what-is-scanova"},{"language":"fr","href":"fr/getting-started/what-is-scanova"},{"language":"zh","href":"zh/getting-started/what-is-scanova"},{"language":"ar","href":"ar/getting-started/what-is-scanova"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"scanova-api","hasAudioNarration":false,"actualSubdomain":"scanova-api","customDomains":["docs.scanova.io"],"gitSource":{"type":"github","owner":"trycon","repo":"qcg-api-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeae5422d1fe1dfc0da7326","collectionId":"be1f7f57-9002-4484-8744-623fd9e88bd2","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeae5422d1fe1dfc0da7326"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{},"buildId":"6aeae5422d1fe1dfc0da7326","clientVersion":"0.0.4064","searchFilterCounts":[{"language":"en","tag":"API Reference","count":271},{"language":"de","tag":"API-Referenz","count":197},{"language":"es","tag":"Referencia de API","count":197},{"language":"fr","tag":"Référence API","count":197},{"language":"ar","tag":"مرجع واجهة البرمجة","count":189},{"language":"zh","tag":"API 参考","count":189},{"language":"en","tag":"Guides","count":115},{"language":"ar","tag":"الأدلة","count":96},{"language":"de","tag":"Anleitungen","count":96},{"language":"es","tag":"Guías","count":96},{"language":"fr","tag":"Guides","count":96},{"language":"zh","tag":"指南","count":93},{"language":"default","tag":"Guides (Legacy)","count":61},{"language":"en","tag":"QR Codes","count":49},{"language":"default","tag":"API reference (Legacy)","count":46},{"language":"en","tag":"Integrations","count":30},{"language":"default","tag":"Category Components","count":30},{"language":"en","tag":"Leads \u0026 Forms","count":28},{"language":"ar","tag":"العملاء المحتملون والنماذج","count":28},{"language":"default","tag":"Categories","count":28},{"language":"de","tag":"Leads \u0026 Formulare","count":28},{"language":"es","tag":"Clientes potenciales y formularios","count":28},{"language":"fr","tag":"Prospects et formulaires","count":28},{"language":"zh","tag":"潜在客户与表单","count":28},{"language":"ar","tag":"Conversion Tracking","count":27},{"language":"default","tag":"Conversion Tracking","count":27},{"language":"de","tag":"Conversion Tracking","count":27},{"language":"es","tag":"Conversion Tracking","count":27},{"language":"fr","tag":"Conversion Tracking","count":27},{"language":"en","tag":"QR Assets","count":26},{"language":"ar","tag":"أصول QR","count":26},{"language":"de","tag":"QR-Assets","count":26},{"language":"es","tag":"Recursos de QR","count":26},{"language":"fr","tag":"Ressources QR","count":26},{"language":"zh","tag":"QR 资源","count":26},{"language":"en","tag":"QR Codes — Create","count":25},{"language":"ar","tag":"رموز QR — إنشاء","count":23},{"language":"de","tag":"QR-Codes — Erstellen","count":23},{"language":"es","tag":"Códigos QR — Crear","count":23},{"language":"fr","tag":"Codes QR — Créer","count":23},{"language":"zh","tag":"二维码 — 创建","count":23},{"language":"en","tag":"QR Codes — Manage","count":18},{"language":"en","tag":"Analytics \u0026 Plans","count":17},{"language":"ar","tag":"التحليلات والخطط","count":17},{"language":"de","tag":"Analysen \u0026 Tarife","count":17},{"language":"es","tag":"Analítica y planes","count":17},{"language":"fr","tag":"Analytique et forfaits","count":17},{"language":"zh","tag":"分析与套餐","count":17},{"language":"en","tag":"Bulk Operations","count":16},{"language":"ar","tag":"العمليات بالجملة","count":16},{"language":"de","tag":"Massenvorgänge","count":16},{"language":"es","tag":"Operaciones en masa","count":16},{"language":"fr","tag":"Opérations en masse","count":16},{"language":"zh","tag":"批量操作","count":16},{"language":"ar","tag":"النطاقات المخصصة","count":14},{"language":"ar","tag":"المستخدمون المشتركون والأدوار","count":14},{"language":"de","tag":"Benutzerdefinierte Domains","count":14},{"language":"de","tag":"Geteilte Nutzer \u0026 Rollen","count":14},{"language":"es","tag":"Dominios personalizados","count":14},{"language":"es","tag":"Usuarios compartidos y roles","count":14},{"language":"fr","tag":"Domaines personnalisés","count":14},{"language":"fr","tag":"Utilisateurs partagés et rôles","count":14},{"language":"zh","tag":"自定义域名","count":14},{"language":"zh","tag":"共享用户与角色","count":14},{"language":"zh","tag":"主题与页面模板","count":14},{"language":"default","tag":"QR Code Management","count":9},{"language":"default","tag":"API Reference","count":8},{"language":"default","tag":"Browser SDK","count":7},{"language":"default","tag":"Folder Management","count":6},{"language":"default","tag":"Form Management","count":6}],"searchSettings":{"maxResults":10,"showContentSnippets":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"conversion-tracking/troubleshooting","slug":"/conversion-tracking/troubleshooting","pageMetadata":{"title":"Troubleshooting","description":"Fix common Scanova Conversion Tracking issues — no events appearing, CORS errors, 403 domain errors, missing attribution, and duplicate events.","href":"/conversion-tracking/troubleshooting"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Fix common Scanova Conversion Tracking issues — no events appearing, CORS errors, 403 domain errors, missing attribution, and duplicate events.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`browser-sdk-issues`,children:`Browser SDK issues`}),`\n`,_jsxs(Heading,{level:`3`,id:`no-network-request-to-/ct-appears`,children:[`No network request to `,_jsx(_components.code,{children:`/ct`}),` appears`]}),`\n`,_jsx(_components.p,{children:`Check these in order:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Snippet is in the wrong place`}),` — it must be in `,_jsx(_components.code,{children:`\u003chead>`}),`, not `,_jsx(_components.code,{children:`\u003cbody>`}),` or after `,_jsx(_components.code,{children:`\u003c/html>`})]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`site_id`}),` is missing`]}),` — confirm `,_jsx(_components.code,{children:`scanova('init', 'YOUR_SITE_ID', ...)`}),` has a real site ID, not a placeholder`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Script blocked by Content Security Policy (CSP)`}),` — add `,_jsx(_components.code,{children:`https://cdn.scanova.io`}),` (script source) and `,_jsx(_components.code,{children:`https://t.scanova.io`}),` (connect source) to your CSP headers`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Browser extension blocking the request`}),` — test in an incognito window with all extensions disabled`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`autoPageview: false`}),` and no manual track call`]}),` — either enable `,_jsx(_components.code,{children:`autoPageview`}),` or add `,_jsx(_components.code,{children:`scanova('track', 'pageview')`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`SDK loaded twice`}),` — having both a direct HTML install and a GTM install on the same page causes issues. Remove one.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`403-domain-not-allowed`,children:_jsx(_components.code,{children:`403 Domain not allowed`})}),`\n`,_jsxs(_components.p,{children:[`The origin of your request is not in the tracking site’s `,_jsx(_components.strong,{children:`Allowed Domains`}),` list.`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Analytics → Conversion Tracking`})]}),`\n`,_jsxs(_components.li,{children:[`Click on your tracking site → `,_jsx(_components.strong,{children:`Edit`})]}),`\n`,_jsxs(_components.li,{children:[`Add the exact hostname shown in your browser’s address bar (e.g. `,_jsx(_components.code,{children:`yoursite.com`}),`, `,_jsx(_components.code,{children:`www.yoursite.com`}),`)`]}),`\n`,_jsx(_components.li,{children:`Save`}),`\n`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`www.yoursite.com`}),` and `,_jsx(_components.code,{children:`yoursite.com`}),` are treated as different domains. Add both if you use either.`]})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The allowlist is checked against the request’s `,_jsx(_components.code,{children:`Origin`}),` (falling back to `,_jsx(_components.code,{children:`Referer`}),`). A `,_jsx(_components.code,{children:`curl`}),` or server-side reproduction of a browser event therefore returns `,_jsx(_components.code,{children:`403 Domain not allowed for this site`}),` even when the domain is allowed, because neither header is sent. Add `,_jsx(_components.code,{children:`-H \"Origin: https://yoursite.com\"`}),` when reproducing a browser event by hand.`]})}),`\n`,_jsxs(Heading,{level:`3`,id:`400-—-bad-request`,children:[_jsx(_components.code,{children:`400`}),` — Bad request`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`site_id`}),` is invalid, empty, or the site has been deactivated in the dashboard. Verify:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`You are using the correct `,_jsx(_components.code,{children:`site_id`}),` for this tracking site`]}),`\n`,_jsx(_components.li,{children:`The site is active (shown as enabled in the dashboard)`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`events-appear-in-devtools-but-not-in-the-dashboard`,children:`Events appear in DevTools but not in the dashboard`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Wait up to 60 seconds — there is a short processing delay`}),`\n`,_jsx(_components.li,{children:`Ensure you are looking at the correct tracking site in the dashboard`}),`\n`,_jsxs(_components.li,{children:[`Verify `,_jsx(_components.code,{children:`site_id`}),` in the network request payload matches the site you are viewing`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`two-events-firing-per-page-load`,children:`Two events firing per page load`}),`\n`,_jsxs(_components.p,{children:[`You have both `,_jsx(_components.code,{children:`autoPageview: true`}),` in your init options and a manual `,_jsx(_components.code,{children:`scanova('track', 'page_view', ...)`}),` call somewhere in your code. These produce two separate events. Remove one — see `,_jsx(_components.a,{href:`/conversion-tracking/browser/auto-tracking#page-view`,children:`Auto-Tracked Events`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`no-events-at-all-for-a-specific-visit`,children:`No events at all for a specific visit`}),`\n`,_jsxs(_components.p,{children:[`If no `,_jsx(_components.code,{children:`/ct`}),` request appears for a visit, the most likely cause is that the user arrived without a QR Code scan — there is no `,_jsx(_components.code,{children:`?scnv=`}),` parameter in the URL. The SDK checks for a `,_jsx(_components.code,{children:`scan_session_id`}),` before sending any event, and silently skips if it is absent.`]}),`\n`,_jsx(_components.p,{children:`Scanova Conversion Tracking only measures QR-scan-originated traffic. Direct or organic visits produce no events — this is by design.`}),`\n`,_jsxs(_components.p,{children:[`To test attribution, visit your page with a `,_jsx(_components.code,{children:`?scnv=`}),` parameter to simulate a scan:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://yoursite.com/?scnv=00000000-0000-0000-0000-000000000001`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`server-side-event-issues`,children:`Server-side event issues`}),`\n`,_jsxs(Heading,{level:`3`,id:`401-—-missing-api-key`,children:[_jsx(_components.code,{children:`401`}),` — Missing API key`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`X-API-Key`}),` header is not included in the request. See `,_jsx(_components.a,{href:`/conversion-tracking/api/authentication`,children:`Authentication`}),`.`]}),`\n`,_jsxs(Heading,{level:`3`,id:`403-—-invalid-key-or-wrong-site`,children:[_jsx(_components.code,{children:`403`}),` — Invalid key or wrong site`]}),`\n`,_jsxs(_components.p,{children:[`Either the key is invalid/revoked, or the `,_jsx(_components.code,{children:`site_id`}),` in your payload does not match the site that generated the key. Check:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Copy the key again from the dashboard (keys are shown once — if you lost it, generate a new one)`}),`\n`,_jsxs(_components.li,{children:[`Verify `,_jsx(_components.code,{children:`site_id`}),` in your payload is the same site ID shown on the Conversion Tracking Sites list`]}),`\n`,_jsx(_components.li,{children:`Confirm the key has not been revoked`}),`\n`]}),`\n`,_jsxs(Heading,{level:`3`,id:`422-—-validation-error`,children:[_jsx(_components.code,{children:`422`}),` — Validation error`]}),`\n`,_jsx(_components.p,{children:`The response body tells you exactly which field failed. Common causes:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Cause`}),_jsx(_components.th,{children:`Fix`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`scan_session_id`}),` is not a UUID`]}),_jsx(_components.td,{children:`Must be a valid UUID string`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`event_name`}),` is missing`]}),_jsx(_components.td,{children:`Required field for server events`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`properties`}),` exceeds 10 KB`]}),_jsx(_components.td,{children:`Reduce payload size`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Raw email in `,_jsx(_components.code,{children:`properties`})]}),_jsxs(_components.td,{children:[`Hash it: `,_jsx(_components.code,{children:`user_identifiers.email_hash`})]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`events-delivered-but-not-attributed-to-a-qr-code`,children:`Events delivered but not attributed to a QR Code`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`scan_session_id`}),` you sent could not be linked to a QR scan in the Scanova database. This happens when:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`scan_session_id`}),` was made up or invalid`]}),`\n`,_jsx(_components.li,{children:`The user did not actually scan a QR Code — they arrived directly`}),`\n`,_jsx(_components.li,{children:`The scan session has expired`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Confirm you are reading `,_jsx(_components.code,{children:`scan_session_id`}),` from the browser (via `,_jsx(_components.code,{children:`localStorage._scnv`}),` — an internal SDK storage key) and passing it to your server correctly. See `,_jsx(_components.a,{href:`/conversion-tracking/server/send-events#passing-scan_session_id-from-browser-to-server`,children:`Send Server Events`}),` for examples.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`attribution-issues`,children:`Attribution issues`}),`\n`,_jsxs(Heading,{level:`3`,id:`events-show-null-for-qr_code_id`,children:[`Events show `,_jsx(_components.code,{children:`null`}),` for `,_jsx(_components.code,{children:`qr_code_id`})]}),`\n`,_jsxs(_components.p,{children:[`This is an `,_jsx(_components.strong,{children:`orphan record`}),` — the event arrived before the scan session data was fully propagated in the Scanova database. These records are automatically cleaned up after 24 hours if the session data never arrives, or backfilled once it does.`]}),`\n`,_jsx(_components.p,{children:`If you see many orphan records, check that:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`scan_session_id`}),` in your events is a real scan session (not a test UUID)`]}),`\n`,_jsx(_components.li,{children:`Your QR Codes are correctly linked to the tracking site in the dashboard`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`conversions-showing-for-wrong-qr-code`,children:`Conversions showing for wrong QR Code`}),`\n`,_jsxs(_components.p,{children:[`Your `,_jsx(_components.code,{children:`scan_session_id`}),` is not being read correctly — you may be reading a stale or incorrect value from `,_jsx(_components.code,{children:`localStorage`}),`. Confirm your frontend reads from `,_jsx(_components.code,{children:`localStorage.getItem('_scnv')`}),` (the SDK’s internal storage key) and parses `,_jsx(_components.code,{children:`.sid`}),` from the JSON value. See `,_jsx(_components.a,{href:`/conversion-tracking/server/send-events#passing-scan_session_id-from-browser-to-server`,children:`Send Server Events`}),` for the full pattern.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`performance-issues`,children:`Performance issues`}),`\n`,_jsxs(Heading,{level:`3`,id:`429-—-rate-limit-exceeded`,children:[_jsx(_components.code,{children:`429`}),` — Rate limit exceeded`]}),`\n`,_jsx(_components.p,{children:`You are hitting the rate limit:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Browser events: 100 requests/min per IP`}),`\n`,_jsx(_components.li,{children:`Server events: 1,000 requests/min per API key`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For server events, switch to the batch endpoint (`,_jsx(_components.code,{children:`POST /server-events/batch`}),`) to send up to 100 events per request, reducing your request rate by up to 100×.`]}),`\n`,_jsxs(_components.p,{children:[`For browser events, `,_jsx(_components.code,{children:`429`}),` during normal usage is rare. If you see it during load testing, space out your requests.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Troubleshooting","description":"Fix common Scanova Conversion Tracking issues — no events appearing, CORS errors, 403 domain errors, missing attribution, and duplicate events.","href":"/conversion-tracking/troubleshooting"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Browser SDK issues","slug":"browser-sdk-issues","depth":2,"children":[{"title":"No network request to /ct appears","slug":"no-network-request-to-/ct-appears","depth":3,"children":[]},{"title":"403 Domain not allowed","slug":"403-domain-not-allowed","depth":3,"children":[]},{"title":"400 — Bad request","slug":"400-—-bad-request","depth":3,"children":[]},{"title":"Events appear in DevTools but not in the dashboard","slug":"events-appear-in-devtools-but-not-in-the-dashboard","depth":3,"children":[]},{"title":"Two events firing per page load","slug":"two-events-firing-per-page-load","depth":3,"children":[]},{"title":"No events at all for a specific visit","slug":"no-events-at-all-for-a-specific-visit","depth":3,"children":[]}]},{"title":"Server-side event issues","slug":"server-side-event-issues","depth":2,"children":[{"title":"401 — Missing API key","slug":"401-—-missing-api-key","depth":3,"children":[]},{"title":"403 — Invalid key or wrong site","slug":"403-—-invalid-key-or-wrong-site","depth":3,"children":[]},{"title":"422 — Validation error","slug":"422-—-validation-error","depth":3,"children":[]},{"title":"Events delivered but not attributed to a QR Code","slug":"events-delivered-but-not-attributed-to-a-qr-code","depth":3,"children":[]}]},{"title":"Attribution issues","slug":"attribution-issues","depth":2,"children":[{"title":"Events show null for qr_code_id","slug":"events-show-null-for-qr_code_id","depth":3,"children":[]},{"title":"Conversions showing for wrong QR Code","slug":"conversions-showing-for-wrong-qr-code","depth":3,"children":[]}]},{"title":"Performance issues","slug":"performance-issues","depth":2,"children":[{"title":"429 — Rate limit exceeded","slug":"429-—-rate-limit-exceeded","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"scanova-api","siteName":"Scanova API Documentation","title":"Troubleshooting - Scanova API Documentation","navMaps":{"firstHrefInVersion":{"v2":{"href":"/conversion-tracking/troubleshooting","matchLevel":0},"v1":{"href":"/v1","matchLevel":4}},"firstHrefInLanguage":{"en":{"href":"/conversion-tracking/troubleshooting","matchLevel":0},"de":{"href":"/de/conversion-tracking/troubleshooting","matchLevel":1},"es":{"href":"/es/conversion-tracking/troubleshooting","matchLevel":1},"fr":{"href":"/fr/conversion-tracking/troubleshooting","matchLevel":1},"zh":{"href":"/conversion-tracking/troubleshooting","matchLevel":0},"ar":{"href":"/ar/conversion-tracking/troubleshooting","matchLevel":1}}},"lastModified":"2026-09-17T13:55:28.912Z","originalFileLocation":"conversion-tracking/troubleshooting.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Fix common Scanova Conversion Tracking issues — no events appearing, CORS errors, 403 domain errors, missing attribution, and duplicate events.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Scanova API Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/scanova-api/kNDlh2zn25UXP5WX/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/scanova-api/kNDlh2zn25UXP5WX/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/scanova-api/kNDlh2zn25UXP5WX/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/scanova-api/kNDlh2zn25UXP5WX/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/scanova-api/kNDlh2zn25UXP5WX/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/scanova-api/kNDlh2zn25UXP5WX/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/scanova-api/kNDlh2zn25UXP5WX/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/scanova-api/kNDlh2zn25UXP5WX/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/scanova-api/kNDlh2zn25UXP5WX/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Troubleshooting - Scanova API Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Fix common Scanova Conversion Tracking issues — no events appearing, CORS errors, 403 domain errors, missing attribution, and duplicate events.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Scanova API Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.scanova.io/conversion-tracking/troubleshooting\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://scanova-api.mintlify.app/_mintlify/api/og/v2?division=Resources\u0026amp;title=Troubleshooting\u0026amp;description=Fix+common+Scanova+Conversion+Tracking+issues+%E2%80%94+no+events+appearing%2C+CORS+errors%2C+403+domain+errors%2C+missing+attribution%2C+and+duplicate+events.\u0026amp;theme=f9ed38a6e1c8b99666344abf\u0026amp;signature=3cf69cda8a10df217d0d420cd7c9e6697ed069dfdc32563849d4221c53b13a85\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Troubleshooting - Scanova API Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Fix common Scanova Conversion Tracking issues — no events appearing, CORS errors, 403 domain errors, missing attribution, and duplicate events.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://scanova-api.mintlify.app/_mintlify/api/og/v2?division=Resources\u0026amp;title=Troubleshooting\u0026amp;description=Fix+common+Scanova+Conversion+Tracking+issues+%E2%80%94+no+events+appearing%2C+CORS+errors%2C+403+domain+errors%2C+missing+attribution%2C+and+duplicate+events.\u0026amp;theme=f9ed38a6e1c8b99666344abf\u0026amp;signature=3cf69cda8a10df217d0d420cd7c9e6697ed069dfdc32563849d4221c53b13a85\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/scanova-api/kNDlh2zn25UXP5WX/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Scanova API Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6938ef\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.scanova.io/conversion-tracking/troubleshooting\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/conversion-tracking/troubleshooting.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.scanova.io/conversion-tracking/troubleshooting\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"de\" href=\"https://docs.scanova.io/de/conversion-tracking/troubleshooting\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://docs.scanova.io/es/conversion-tracking/troubleshooting\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://docs.scanova.io/fr/conversion-tracking/troubleshooting\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ar\" href=\"https://docs.scanova.io/ar/conversion-tracking/troubleshooting\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.scanova.io/conversion-tracking/troubleshooting\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.scanova.io/#organization\",\"name\":\"Scanova API Documentation\",\"url\":\"https://docs.scanova.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/scanova-api/89jUfOeAiT0p2JGx/images/PrimaryColor-Full.svg?fit=max\u0026auto=format\u0026n=89jUfOeAiT0p2JGx\u0026q=85\u0026s=edc08604efcf06d6dd5d00e9e2c50f20\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.scanova.io#website\",\"name\":\"Scanova API Documentation\",\"url\":\"https://docs.scanova.io\",\"publisher\":{\"@id\":\"https://docs.scanova.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.scanova.io/conversion-tracking/troubleshooting#webpage\",\"url\":\"https://docs.scanova.io/conversion-tracking/troubleshooting\",\"name\":\"Troubleshooting\",\"description\":\"Fix common Scanova Conversion Tracking issues — no events appearing, CORS errors, 403 domain errors, missing attribution, and duplicate events.\",\"dateModified\":\"2026-09-17T13:55:28.912Z\",\"isPartOf\":{\"@id\":\"https://docs.scanova.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.scanova.io/conversion-tracking/troubleshooting#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.scanova.io/conversion-tracking/troubleshooting#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Scanova API Documentation\",\"item\":\"https://docs.scanova.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Troubleshooting\",\"item\":\"https://docs.scanova.io/conversion-tracking/troubleshooting\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.scanova.io/conversion-tracking/troubleshooting#article\",\"headline\":\"Troubleshooting\",\"name\":\"Troubleshooting\",\"description\":\"Fix common Scanova Conversion Tracking issues — no events appearing, CORS errors, 403 domain errors, missing attribution, and duplicate events.\",\"url\":\"https://docs.scanova.io/conversion-tracking/troubleshooting\",\"mainEntityOfPage\":{\"@id\":\"https://docs.scanova.io/conversion-tracking/troubleshooting#webpage\"},\"dateModified\":\"2026-09-17T13:55:28.912Z\",\"publisher\":{\"@id\":\"https://docs.scanova.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.scanova.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Scanova API Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Scanova API Documentation","nav":{"global":{},"languages":[{"language":"en","default":true,"versions":[{"version":"v2","default":true,"tag":"Latest","tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/getting-started/what-is-scanova"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/getting-started/introduction"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]},{"tab":"Conversion Tracking","groups":[{"group":"Overview","pages":[{"title":"What is Conversion Tracking?","href":"/conversion-tracking/introduction"},{"title":"How Conversion Tracking Works","href":"/conversion-tracking/how-it-works"},{"title":"Quick Start — Go Live in 5 Steps","href":"/conversion-tracking/setup-guide"},{"title":"Event Model Reference","href":"/conversion-tracking/event-model"}]},{"group":"Browser SDK","pages":[{"title":"Browser SDK Overview","href":"/conversion-tracking/browser/overview"},{"title":"Install the Browser SDK","href":"/conversion-tracking/browser/install"},{"title":"SDK Configuration Reference","href":"/conversion-tracking/browser/sdk-configuration"},{"title":"Auto-Tracked Events","href":"/conversion-tracking/browser/auto-tracking"},{"title":"Custom Events","href":"/conversion-tracking/browser/custom-events"},{"title":"SPA \u0026 Framework Setup","href":"/conversion-tracking/browser/spa-frameworks"},{"title":"Verify \u0026 Debug Browser SDK","href":"/conversion-tracking/browser/verify"}]},{"group":"Server-Side","pages":[{"title":"Server-Side Events Overview","href":"/conversion-tracking/server/overview"},{"title":"Generate an API Key","href":"/conversion-tracking/server/generate-api-key-dashboard"},{"title":"Send Server-Side Events","href":"/conversion-tracking/server/send-events"},{"title":"Idempotency \u0026 Retries","href":"/conversion-tracking/server/idempotency-retries"},{"title":"Verify \u0026 Debug Server Events","href":"/conversion-tracking/server/verify"}]},{"group":"API Reference","pages":[{"title":"API Authentication","href":"/conversion-tracking/api/authentication"},{"title":"Browser Events API — POST /ct","href":"/conversion-tracking/api/browser-events"},{"title":"Server Events API — POST /server-events","openapi":"POST /server-events","href":"/conversion-tracking/api/events-collect"},{"title":"Batch Server Events API — POST /server-events/batch","openapi":"POST /server-events/batch","href":"/conversion-tracking/api/events-batch"},{"title":"Errors \u0026 Rate Limits","href":"/conversion-tracking/api/errors-rate-limits"},{"title":"Conversion Analytics","openapi":"POST /analytics/ct/","href":"/conversion-tracking/api/ct-analytics"},{"title":"Export Conversion Analytics","openapi":"POST /analytics/ct/export/","href":"/conversion-tracking/api/ct-export"},{"title":"Export Raw Conversion Events","openapi":"POST /analytics/ct/raw/","description":"Export row-level conversion events in CSV/XLS/XLSX formats.","href":"/conversion-tracking/api/ct-raw"}]},{"group":"Resources","pages":[{"title":"Troubleshooting","href":"/conversion-tracking/troubleshooting"},{"title":"FAQ","description":"Frequently asked questions about Scanova Conversion Tracking — setup, attribution, events, privacy, and billing.","href":"/conversion-tracking/faq"},{"title":"Changelog","href":"/conversion-tracking/changelog"}]}]}]},{"version":"v1","tag":"Legacy","pages":[{"title":"v1","href":"/v1"}]}]},{"language":"de","pages":[{"title":"de","href":"/de/conversion-tracking/troubleshooting"}]},{"language":"es","pages":[{"title":"es","href":"/es/conversion-tracking/troubleshooting"}]},{"language":"fr","pages":[{"title":"fr","href":"/fr/conversion-tracking/troubleshooting"}]},{"language":"zh","versions":[{"version":"v2","default":true,"tag":"Latest","tabs":[{"tab":"指南","pages":[{"title":"指南","href":"/zh/getting-started/what-is-scanova"}]},{"tab":"API 参考","pages":[{"title":"API 参考","href":"/zh/api-reference/getting-started/introduction"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/zh/mcp/overview"}]},{"tab":"Conversion Tracking","groups":[{"group":"Overview","pages":[{"title":"What is Conversion Tracking?","href":"/conversion-tracking/introduction"},{"title":"How Conversion Tracking Works","href":"/conversion-tracking/how-it-works"},{"title":"Quick Start — Go Live in 5 Steps","href":"/conversion-tracking/setup-guide"},{"title":"Event Model Reference","href":"/conversion-tracking/event-model"}]},{"group":"Browser SDK","pages":[{"title":"Browser SDK Overview","href":"/conversion-tracking/browser/overview"},{"title":"Install the Browser SDK","href":"/conversion-tracking/browser/install"},{"title":"SDK Configuration Reference","href":"/conversion-tracking/browser/sdk-configuration"},{"title":"Auto-Tracked Events","href":"/conversion-tracking/browser/auto-tracking"},{"title":"Custom Events","href":"/conversion-tracking/browser/custom-events"},{"title":"SPA \u0026 Framework Setup","href":"/conversion-tracking/browser/spa-frameworks"},{"title":"Verify \u0026 Debug Browser SDK","href":"/conversion-tracking/browser/verify"}]},{"group":"Server-Side","pages":[{"title":"Server-Side Events Overview","href":"/conversion-tracking/server/overview"},{"title":"Generate an API Key","href":"/conversion-tracking/server/generate-api-key-dashboard"},{"title":"Send Server-Side Events","href":"/conversion-tracking/server/send-events"},{"title":"Idempotency \u0026 Retries","href":"/conversion-tracking/server/idempotency-retries"},{"title":"Verify \u0026 Debug Server Events","href":"/conversion-tracking/server/verify"}]},{"group":"API Reference","pages":[{"title":"API Authentication","href":"/conversion-tracking/api/authentication"},{"title":"Browser Events API — POST /ct","href":"/conversion-tracking/api/browser-events"},{"title":"Server Events API — POST /server-events","openapi":"POST /server-events","href":"/conversion-tracking/api/events-collect"},{"title":"Batch Server Events API — POST /server-events/batch","openapi":"POST /server-events/batch","href":"/conversion-tracking/api/events-batch"},{"title":"Errors \u0026 Rate Limits","href":"/conversion-tracking/api/errors-rate-limits"},{"title":"Conversion Analytics","openapi":"POST /analytics/ct/","href":"/conversion-tracking/api/ct-analytics"},{"title":"Export Conversion Analytics","openapi":"POST /analytics/ct/export/","href":"/conversion-tracking/api/ct-export"},{"title":"Export Raw Conversion Events","openapi":"POST /analytics/ct/raw/","description":"Export row-level conversion events in CSV/XLS/XLSX formats.","href":"/conversion-tracking/api/ct-raw"}]},{"group":"Resources","pages":[{"title":"Troubleshooting","href":"/conversion-tracking/troubleshooting"},{"title":"FAQ","description":"Frequently asked questions about Scanova Conversion Tracking — setup, attribution, events, privacy, and billing.","href":"/conversion-tracking/faq"},{"title":"Changelog","href":"/conversion-tracking/changelog"}]}]}]},{"version":"v1","tag":"Legacy","pages":[{"title":"v1","href":"/v1"}]}]},{"language":"ar","pages":[{"title":"ar","href":"/ar/conversion-tracking/troubleshooting"}]}]},"basePath":"","title":"Troubleshooting - Scanova API Documentation","buildId":"dpl_2gSLkbMoF5kkLsBqYzq9KWtDyJRo","deploymentId":"dpl_2gSLkbMoF5kkLsBqYzq9KWtDyJRo","dynamics":[],"chunks":[]}