Understand the different ways to manage user consent with the Zeotap Web SDK and choose the best approach for your needs.
Important: Please ensure your CMP configuration includes new Vendor ID 1469 for 1st Party data tracking. Additionally, include Vendor ID 301 if cookie sync is enabled. Learn more
Integrating a Consent Management Platform (CMP) or handling user consent is crucial for compliance with privacy regulations like GDPR. The Zeotap Web SDK offers flexibility in how you manage and communicate user consent choices. This guide helps you choose the best approach for your implementation.
The primary goal is to ensure that the Zeotap SDK only collects and processes user data when you have obtained the necessary consent from the user. The SDK needs to know whether consent has been given for specific purposes (like analytics, personalization, advertising) before it activates its tracking and data collection features.
1. No Explicit Consent Management (Default Behavior)
How it works: You initialize the SDK without any specific consent configuration. The SDK assumes consent is granted and starts tracking immediately upon loading.
When to use: Only suitable if your website/application does not fall under regulations requiring explicit user consent (e.g., purely informational sites with no user tracking, or sites operating exclusively outside jurisdictions like the EU). This is generally not recommended for most modern websites.
Pros: Simplest setup.
Cons: High risk of non-compliance with privacy regulations like GDPR. Lack of user control.
2. Using a TCF v2.2 Compatible Consent Management Platform (CMP)
How it works: You integrate a third-party CMP (like OneTrust, TrustArc, Didomi, Sourcepoint, etc.) that adheres to the IAB Transparency and Consent Framework (TCF) v2.2 standard. The Zeotap SDK automatically detects the TCF API provided by the CMP, reads the user’s consent choices, and acts accordingly.
When to use:
You operate in regions covered by GDPR or similar regulations requiring granular consent.
You use other advertising or marketing technologies that also rely on the TCF standard.
You want a robust, standardized way to manage consent across multiple vendors.
Implementation:
Implement your chosen TCF v2.2 compliant CMP on your website.
Initialize the Zeotap SDK after the CMP’s stub file has loaded (often placed high in the <head>).
The SDK will automatically listen for TCF API signals (addEventListener for __tcfapi) to get consent status. No specific setConsent call is usually needed unless you have very custom requirements.
Pros: Industry standard, widely supported, handles complex consent strings, often provides UI/UX for consent collection.
Cons: Requires integrating and potentially paying for a third-party CMP.
3. Using the setConsent API (Manual/Custom Implementation)
How it works: You implement your own consent mechanism (e.g., a custom banner or integration with a non-TCF CMP). When a user provides or updates their consent preferences, you explicitly call the window.zeotap.setConsent({...}) function, passing the user’s choices.
When to use:
You have a custom-built consent banner or system.
You are using a CMP that doesn’t support TCF v2.2 but provides its own API to access consent status.
You need fine-grained control over when and how consent information is passed to the Zeotap SDK.
Implementation:
Build or integrate your consent UI/mechanism.
When the user makes a choice (e.g., clicks “Accept All”, “Reject All”, or customizes settings), retrieve the consent status.
Translate this status into the format expected by setConsent (e.g., { "track": "true" }).
Call window.zeotap.setConsent() with the appropriate object.
Pros: Flexible, allows integration with any system.
Cons: Requires more development effort to build and maintain the consent logic and UI. You are responsible for correctly interpreting and translating consent signals.
Are you subject to GDPR or similar privacy regulations?
Yes: You MUST implement a consent mechanism. Proceed to step 2.
No: You could use the default behavior, but implementing consent is still best practice for user trust. Consider options 2 or 3 for future-proofing.
Are you already using or planning to use a TCF v2.2 compliant CMP for other vendors?
Yes: This is likely your best option. Integrate the CMP and let the Zeotap SDK automatically detect the TCF signals.
No: Proceed to step 3.
Do you need fine-grained control over the consent mechanism, or are you using a non-TCF CMP?
Yes: Use the setConsent API (Option 3). You will need to build the logic to capture user consent and pass it to the SDK.
No (and you don’t want to use a TCF CMP): Re-evaluate if you truly don’t need a CMP. If you only need simple “all or nothing” consent, the setConsent API with { "track": true/false } might suffice, but ensure this meets legal requirements in your operating regions.
Timing: Ensure the consent mechanism loads and potentially gets user input before the Zeotap SDK initializes fully or sends tracking calls. Many CMPs handle this automatically or provide callbacks.
Updates: Your implementation should handle changes in user consent preferences over time. If a user revokes consent, subsequent tracking calls will be blocked. Both TCF CMPs and the setConsent method support updating consent status.
Region-Specific Logic: You might need different consent mechanisms or defaults depending on the user’s geographic location (e.g., GDPR for EU users). Your website logic needs to handle this.
By carefully considering your regulatory requirements, technical infrastructure, and desired user experience, you can choose the most appropriate consent management strategy for integrating the Zeotap Web SDK. Using a TCF v2.2 compliant CMP (Option 2) is often the most robust and future-proof solution for businesses operating internationally.
Last modified on June 25, 2026
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Zeotap docs","colors":{"primary":"#174efb","light":"#174efb","dark":"#174efb"},"logo":{"light":"https://mintcdn.com/zeotap/pbiFRnrYXBNUsbba/logo/light.svg?fit=max\u0026auto=format\u0026n=pbiFRnrYXBNUsbba\u0026q=85\u0026s=c566b5af653699d3bcf4d8efb4f678d1","dark":"https://mintcdn.com/zeotap/pbiFRnrYXBNUsbba/logo/dark.svg?fit=max\u0026auto=format\u0026n=pbiFRnrYXBNUsbba\u0026q=85\u0026s=ae6e1d27d3d2e409f9e86c089b64e224","href":"https://zeotap.com/"},"favicon":"https://mintcdn.com/zeotap/Tg-jPUQrcrgXsHVA/favicon.svg?fit=max\u0026auto=format\u0026n=Tg-jPUQrcrgXsHVA\u0026q=85\u0026s=f5b2731a91bf6cad0fe370680ebae4fe","appearance":{"default":"light"},"background":{"decoration":"gradient","color":{"light":"#eaf0fe"}},"navbar":{"links":[{"href":"https://login.zeotap.com/","label":"Login"}],"primary":{"type":"button","label":"Book a Demo","href":"https://zeotap.com/demo/"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/zeotap"}},"seo":{"indexing":"all"},"integrations":{"ga4":{"measurementId":"G-XXXXXXXXXX"}},"banner":{"content":"New: [Support \u0026 Diagnostics](/articles/support-diagnostics-customer/support-diagnostics) troubleshooting guides are now live.","dismissible":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":true},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"zeotap","hasAudioNarration":false,"actualSubdomain":"zeotap","customDomains":["docs.zeotap.com"],"gitSource":{"type":"github","owner":"zeotap","repo":"zeotap-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af181b6c6b8d7b676811082","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"Products","count":354},{"language":"default","tag":"Integrate","count":215},{"language":"default","tag":"SDKs","count":157},{"language":"default","tag":"Destinations","count":150},{"language":"default","tag":"Batch Integrations","count":97},{"language":"default","tag":"Sources","count":65},{"language":"default","tag":"Unify","count":65},{"language":"default","tag":"Source Integrations (Batch+Real-Time)","count":54},{"language":"default","tag":"Release Notes","count":54},{"language":"default","tag":"Catalogue","count":48}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"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":"editor-metadata","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},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"articles/sdks/web-js/consent/consent-strategy","slug":"/articles/sdks/web-js/consent/consent-strategy","pageMetadata":{"title":"Choosing a Consent Strategy","description":"Understand the different ways to manage user consent with the Zeotap Web SDK and choose the best approach for your needs.","href":"/articles/sdks/web-js/consent/consent-strategy"},"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: \"Understand the different ways to manage user consent with the Zeotap Web SDK and choose the best approach for your needs.\"\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`,em:`em`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Important:`}),` Please ensure your CMP configuration includes new `,_jsx(_components.strong,{children:`Vendor ID 1469`}),` for 1st Party data tracking. Additionally, include `,_jsx(_components.strong,{children:`Vendor ID 301`}),` if cookie sync is enabled. `,_jsx(_components.a,{href:`/articles/sdks/web-js/configurations/consent-options#shouldcheckzeotapvendorconsent`,children:`Learn more`})]})}),`\n`,_jsx(_components.p,{children:`Integrating a Consent Management Platform (CMP) or handling user consent is crucial for compliance with privacy regulations like GDPR. The Zeotap Web SDK offers flexibility in how you manage and communicate user consent choices. This guide helps you choose the best approach for your implementation.`}),`\n`,_jsx(Heading,{level:`2`,id:`understanding-the-core-concept`,children:`Understanding the Core Concept`}),`\n`,_jsx(_components.p,{children:`The primary goal is to ensure that the Zeotap SDK only collects and processes user data when you have obtained the necessary consent from the user. The SDK needs to know whether consent has been given for specific purposes (like analytics, personalization, advertising) before it activates its tracking and data collection features.`}),`\n`,_jsx(Heading,{level:`2`,id:`available-strategies`,children:`Available Strategies`}),`\n`,_jsx(Heading,{level:`3`,id:`1-no-explicit-consent-management-default-behavior`,children:`1. No Explicit Consent Management (Default Behavior)`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`How it works:`}),` You initialize the SDK without any specific consent configuration. The SDK assumes consent is granted and starts tracking immediately upon loading.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`When to use:`}),` Only suitable if your website/application does not fall under regulations requiring explicit user consent (e.g., purely informational sites with no user tracking, or sites operating exclusively outside jurisdictions like the EU). `,_jsx(_components.strong,{children:`This is generally not recommended for most modern websites.`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Pros:`}),` Simplest setup.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Cons:`}),` High risk of non-compliance with privacy regulations like GDPR. Lack of user control.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`2-using-a-tcf-v2-2-compatible-consent-management-platform-cmp`,children:`2. Using a TCF v2.2 Compatible Consent Management Platform (CMP)`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`How it works:`}),` You integrate a third-party CMP (like OneTrust, TrustArc, Didomi, Sourcepoint, etc.) that adheres to the IAB Transparency and Consent Framework (TCF) v2.2 standard. The Zeotap SDK automatically detects the TCF API provided by the CMP, reads the user’s consent choices, and acts accordingly.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`When to use:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You operate in regions covered by GDPR or similar regulations requiring granular consent.`}),`\n`,_jsx(_components.li,{children:`You use other advertising or marketing technologies that also rely on the TCF standard.`}),`\n`,_jsx(_components.li,{children:`You want a robust, standardized way to manage consent across multiple vendors.`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Implementation:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Implement your chosen TCF v2.2 compliant CMP on your website.`}),`\n`,_jsxs(_components.li,{children:[`Initialize the Zeotap SDK `,_jsx(_components.em,{children:`after`}),` the CMP’s stub file has loaded (often placed high in the `,_jsx(_components.code,{children:`\u003chead>`}),`).`]}),`\n`,_jsxs(_components.li,{children:[`The SDK will automatically listen for TCF API signals (`,_jsx(_components.code,{children:`addEventListener`}),` for `,_jsx(_components.code,{children:`__tcfapi`}),`) to get consent status. No specific `,_jsx(_components.code,{children:`setConsent`}),` call is usually needed unless you have very custom requirements.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Pros:`}),` Industry standard, widely supported, handles complex consent strings, often provides UI/UX for consent collection.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Cons:`}),` Requires integrating and potentially paying for a third-party CMP.`]}),`\n`]}),`\n`,_jsxs(Heading,{level:`3`,id:`3-using-the-setconsent-api-manual/custom-implementation`,children:[`3. Using the `,_jsx(_components.code,{children:`setConsent`}),` API (Manual/Custom Implementation)`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`How it works:`}),` You implement your own consent mechanism (e.g., a custom banner or integration with a non-TCF CMP). When a user provides or updates their consent preferences, you explicitly call the `,_jsx(_components.code,{children:`window.zeotap.setConsent({...})`}),` function, passing the user’s choices.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`When to use:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You have a custom-built consent banner or system.`}),`\n`,_jsx(_components.li,{children:`You are using a CMP that doesn’t support TCF v2.2 but provides its own API to access consent status.`}),`\n`,_jsx(_components.li,{children:`You need fine-grained control over when and how consent information is passed to the Zeotap SDK.`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Implementation:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Build or integrate your consent UI/mechanism.`}),`\n`,_jsx(_components.li,{children:`When the user makes a choice (e.g., clicks “Accept All”, “Reject All”, or customizes settings), retrieve the consent status.`}),`\n`,_jsxs(_components.li,{children:[`Translate this status into the format expected by `,_jsx(_components.code,{children:`setConsent`}),` (e.g., `,_jsx(_components.code,{children:`{ \"track\": \"true\" }`}),`).`]}),`\n`,_jsxs(_components.li,{children:[`Call `,_jsx(_components.code,{children:`window.zeotap.setConsent()`}),` with the appropriate object.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Pros:`}),` Flexible, allows integration with any system.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Cons:`}),` Requires more development effort to build and maintain the consent logic and UI. You are responsible for correctly interpreting and translating consent signals.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`decision-flow`,children:`Decision Flow`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Are you subject to GDPR or similar privacy regulations?`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Yes:`}),` You MUST implement a consent mechanism. Proceed to step 2.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`No:`}),` You `,_jsx(_components.em,{children:`could`}),` use the default behavior, but implementing consent is still best practice for user trust. Consider options 2 or 3 for future-proofing.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Are you already using or planning to use a TCF v2.2 compliant CMP for other vendors?`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Yes:`}),` This is likely your best option. Integrate the CMP and let the Zeotap SDK automatically detect the TCF signals.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`No:`}),` Proceed to step 3.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Do you need fine-grained control over the consent mechanism, or are you using a non-TCF CMP?`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Yes:`}),` Use the `,_jsx(_components.code,{children:`setConsent`}),` API (Option 3). You will need to build the logic to capture user consent and pass it to the SDK.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`No (and you don’t want to use a TCF CMP):`}),` Re-evaluate if you truly don’t need a CMP. If you only need simple “all or nothing” consent, the `,_jsx(_components.code,{children:`setConsent`}),` API with `,_jsx(_components.code,{children:`{ \"track\": true/false }`}),` might suffice, but ensure this meets legal requirements in your operating regions.`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`key-considerations`,children:`Key Considerations`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Timing:`}),` Ensure the consent mechanism loads and potentially gets user input `,_jsx(_components.em,{children:`before`}),` the Zeotap SDK initializes fully or sends tracking calls. Many CMPs handle this automatically or provide callbacks.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Updates:`}),` Your implementation should handle changes in user consent preferences over time. If a user revokes consent, subsequent tracking calls will be blocked. Both TCF CMPs and the `,_jsx(_components.code,{children:`setConsent`}),` method support updating consent status.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Region-Specific Logic:`}),` You might need different consent mechanisms or defaults depending on the user’s geographic location (e.g., GDPR for EU users). Your website logic needs to handle this.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`By carefully considering your regulatory requirements, technical infrastructure, and desired user experience, you can choose the most appropriate consent management strategy for integrating the Zeotap Web SDK. Using a TCF v2.2 compliant CMP (Option 2) is often the most robust and future-proof solution for businesses operating internationally.`})]})}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":"Choosing a Consent Strategy","description":"Understand the different ways to manage user consent with the Zeotap Web SDK and choose the best approach for your needs.","href":"/articles/sdks/web-js/consent/consent-strategy"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Understanding the Core Concept","slug":"understanding-the-core-concept","depth":2,"children":[]},{"title":"Available Strategies","slug":"available-strategies","depth":2,"children":[{"title":"1. No Explicit Consent Management (Default Behavior)","slug":"1-no-explicit-consent-management-default-behavior","depth":3,"children":[]},{"title":"2. Using a TCF v2.2 Compatible Consent Management Platform (CMP)","slug":"2-using-a-tcf-v2-2-compatible-consent-management-platform-cmp","depth":3,"children":[]},{"title":"3. Using the setConsent API (Manual/Custom Implementation)","slug":"3-using-the-setconsent-api-manual/custom-implementation","depth":3,"children":[]}]},{"title":"Decision Flow","slug":"decision-flow","depth":2,"children":[]},{"title":"Key Considerations","slug":"key-considerations","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/zeotap/8d1f66bf8eed64a4/scripts/convert-to-mdx.js"],"subdomain":"zeotap","siteName":"Zeotap docs","title":"Choosing a Consent Strategy - Zeotap docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-25T08:21:59.158Z","gitLastModified":"2026-06-25T08:20:38.000Z","originalFileLocation":"articles/sdks/web-js/consent/consent-strategy.mdx"},"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=\"light\"}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=\"Understand the different ways to manage user consent with the Zeotap Web SDK and choose the best approach for your needs.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Zeotap docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/zeotap/dSUuokAmJ7V-SYpL/_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/zeotap/dSUuokAmJ7V-SYpL/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/zeotap/dSUuokAmJ7V-SYpL/_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/zeotap/dSUuokAmJ7V-SYpL/_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/zeotap/dSUuokAmJ7V-SYpL/_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/zeotap/dSUuokAmJ7V-SYpL/_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/zeotap/dSUuokAmJ7V-SYpL/_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/zeotap/dSUuokAmJ7V-SYpL/_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/zeotap/dSUuokAmJ7V-SYpL/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Choosing a Consent Strategy - Zeotap docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Understand the different ways to manage user consent with the Zeotap Web SDK and choose the best approach for your needs.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Zeotap docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.zeotap.com/articles/sdks/web-js/consent/consent-strategy\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://zeotap.mintlify.site/_mintlify/api/og/v2?division=Consent+Resolution\u0026amp;title=Choosing+a+Consent+Strategy\u0026amp;description=Understand+the+different+ways+to+manage+user+consent+with+the+Zeotap+Web+SDK+and+choose+the+best+approach+for+your+needs.\u0026amp;theme=860bb9e6ef8e2213f794d7e2\u0026amp;signature=577137609d4ad86097d321e62883efd1b5a8de3e513d42b865a627b0b2bcc643\">\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=\"Choosing a Consent Strategy - Zeotap docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Understand the different ways to manage user consent with the Zeotap Web SDK and choose the best approach for your needs.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://zeotap.mintlify.site/_mintlify/api/og/v2?division=Consent+Resolution\u0026amp;title=Choosing+a+Consent+Strategy\u0026amp;description=Understand+the+different+ways+to+manage+user+consent+with+the+Zeotap+Web+SDK+and+choose+the+best+approach+for+your+needs.\u0026amp;theme=860bb9e6ef8e2213f794d7e2\u0026amp;signature=577137609d4ad86097d321e62883efd1b5a8de3e513d42b865a627b0b2bcc643\">\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/zeotap/dSUuokAmJ7V-SYpL/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Zeotap docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#174efb\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.zeotap.com/articles/sdks/web-js/consent/consent-strategy\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/articles/sdks/web-js/consent/consent-strategy.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.zeotap.com/#organization\",\"name\":\"Zeotap docs\",\"url\":\"https://docs.zeotap.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/zeotap/pbiFRnrYXBNUsbba/logo/light.svg?fit=max\u0026auto=format\u0026n=pbiFRnrYXBNUsbba\u0026q=85\u0026s=c566b5af653699d3bcf4d8efb4f678d1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.zeotap.com#website\",\"name\":\"Zeotap docs\",\"url\":\"https://docs.zeotap.com\",\"publisher\":{\"@id\":\"https://docs.zeotap.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.zeotap.com/articles/sdks/web-js/consent/consent-strategy#webpage\",\"url\":\"https://docs.zeotap.com/articles/sdks/web-js/consent/consent-strategy\",\"name\":\"Choosing a Consent Strategy\",\"description\":\"Understand the different ways to manage user consent with the Zeotap Web SDK and choose the best approach for your needs.\",\"dateModified\":\"2026-06-25T08:20:38.000Z\",\"isPartOf\":{\"@id\":\"https://docs.zeotap.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.zeotap.com/articles/sdks/web-js/consent/consent-strategy#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.zeotap.com/articles/sdks/web-js/consent/consent-strategy#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Web JavaScript SDK\",\"item\":\"https://docs.zeotap.com/articles/sdks/web-js/intro\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Choosing a Consent Strategy\",\"item\":\"https://docs.zeotap.com/articles/sdks/web-js/consent/consent-strategy\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.zeotap.com/articles/sdks/web-js/consent/consent-strategy#article\",\"headline\":\"Choosing a Consent Strategy\",\"name\":\"Choosing a Consent Strategy\",\"description\":\"Understand the different ways to manage user consent with the Zeotap Web SDK and choose the best approach for your needs.\",\"url\":\"https://docs.zeotap.com/articles/sdks/web-js/consent/consent-strategy\",\"mainEntityOfPage\":{\"@id\":\"https://docs.zeotap.com/articles/sdks/web-js/consent/consent-strategy#webpage\"},\"dateModified\":\"2026-06-25T08:20:38.000Z\",\"publisher\":{\"@id\":\"https://docs.zeotap.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.zeotap.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Zeotap docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Zeotap docs","nav":{"global":{},"tabs":[{"tab":"Home","icon":"house","pages":[{"title":"Home","href":""}]},{"tab":"Products","icon":"grid-2","pages":[{"title":"Products","href":"/articles/integrate-customer/integrate"}]},{"tab":"SDKs","icon":"code","groups":[{"group":"Overview","icon":"compass","pages":[{"title":"Zeotap SDKs","href":"/articles/sdks/overview"}]},{"group":"Web JavaScript SDK","icon":"browser","pages":[{"title":"Introduction to Zeotap SDK","href":"/articles/sdks/web-js/intro"},{"title":"Quick Start Guide","href":"/articles/sdks/web-js/quick-start"},{"group":"Configurations","icon":"sliders","pages":[{"title":"Configurations","href":"/articles/sdks/web-js/configurations/overview"},{"title":"Write Key","href":"/articles/sdks/web-js/configurations/write-key"},{"title":"PII Hashing Configuration","href":"/articles/sdks/web-js/configurations/hashing"},{"title":"Consent Configuration Options","href":"/articles/sdks/web-js/configurations/consent-options"},{"title":"persistenceInCookieStorage","href":"/articles/sdks/web-js/configurations/persistence-in-cookie-storage"},{"title":"ID5 Integration","href":"/articles/sdks/web-js/configurations/id5"},{"title":"allowCookieSync","href":"/articles/sdks/web-js/configurations/allow-cookie-sync"},{"title":"Consent Based cookie syncing","href":"/articles/sdks/web-js/configurations/partner-consent-key-map"}]},{"group":"Guides \u0026 References","icon":"code","pages":[{"title":"Tracking User Identities","href":"/articles/sdks/web-js/api-reference/set-user-identities"},{"title":"Tracking Page Views","href":"/articles/sdks/web-js/api-reference/set-page-properties"},{"title":"Tracking User Actions","href":"/articles/sdks/web-js/api-reference/set-event-properties"},{"title":"Setting User Properties","href":"/articles/sdks/web-js/api-reference/set-user-properties"},{"title":"Tracking User Consent","href":"/articles/sdks/web-js/api-reference/set-consent"},{"title":"Logout communication","href":"/articles/sdks/web-js/api-reference/unset-user-identities"}]},{"title":"Interact SDK","description":"Interact SDK","href":"/articles/sdks/web-js/interact"},{"group":"Consent Resolution","icon":"shield-check","pages":[{"title":"Choosing a Consent Strategy","href":"/articles/sdks/web-js/consent/consent-strategy"},{"title":"Default Behavior (No Explicit Consent Management)","description":"Understand how the Zeotap SDK operates regarding consent when no specific consent mechanism is configured.","href":"/articles/sdks/web-js/consent/default"},{"title":"TCF v2.x / GDPR Compliance","href":"/articles/sdks/web-js/consent/gdpr"},{"title":"Custom Consent Management","href":"/articles/sdks/web-js/consent/custom-consent"}]},{"title":"Examples","href":"/articles/sdks/web-js/examples"},{"group":"FAQ","icon":"circle-question","pages":[{"title":"How to send cellno","href":"/articles/sdks/web-js/faq/how-to-send-cellno"},{"title":"All about cookie syncing","href":"/articles/sdks/web-js/faq/cookie-sync"}]},{"group":"Release Notes","icon":"clock-rotate-left","pages":[{"title":"Release Notes","href":"/articles/sdks/web-js/release-notes/overview"},{"title":"Version 4.4.4","href":"/articles/sdks/web-js/release-notes/v4.4.4"}]}]},{"group":"Google Tag Manager","icon":"google","pages":[{"title":"Introduction to Zeotap GTM Tag","href":"/articles/sdks/gtm/intro"},{"group":"Setup Guide","icon":"list-check","pages":[{"title":"Step 1 - Importing Zeotap Tag template via GTM Gallery","href":"/articles/sdks/gtm/setup-guide/import-template-to-gtm"},{"title":"Step 2 - Adding the Zeotap Collect Tag","href":"/articles/sdks/gtm/setup-guide/add-tag-to-gtm"},{"group":"Step 3 - Configuration","icon":"sliders","pages":[{"title":"Tag Configuration Overview","href":"/articles/sdks/gtm/setup-guide/configuration/overview"},{"title":"1. Initialization Options","href":"/articles/sdks/gtm/setup-guide/configuration/initialisation"},{"title":"2. Tracking Page Views and Events","href":"/articles/sdks/gtm/setup-guide/configuration/tracking"},{"title":"3. Login and Identity Settings","href":"/articles/sdks/gtm/setup-guide/configuration/login"},{"title":"4. Google Analytics Configuration","href":"/articles/sdks/gtm/setup-guide/configuration/google-analytics"},{"title":"5. ID5 Integration","href":"/articles/sdks/gtm/setup-guide/configuration/id5"}]},{"title":"Step 4 - Set Up the Trigger","href":"/articles/sdks/gtm/setup-guide/triggers"},{"title":"Step 5 - Validate the Configured Collect Tag","href":"/articles/sdks/gtm/setup-guide/validation"}]}]},{"group":"Adobe Launch","icon":"rocket","pages":[{"title":"Adobe Launch Integration Overview","href":"/articles/sdks/adobe-launch/intro"},{"title":"Installing the Zeotap Collect Extension","href":"/articles/sdks/adobe-launch/installation"},{"title":"Configuring the Zeotap Collect Extension","href":"/articles/sdks/adobe-launch/configure"},{"group":"Setting up Actions","icon":"bolt","pages":[{"title":"Setting Up Actions","href":"/articles/sdks/adobe-launch/actions/overview"},{"title":"Track Event","href":"/articles/sdks/adobe-launch/actions/track-events"},{"title":"Sync User Identity","href":"/articles/sdks/adobe-launch/actions/sync-user-identity"},{"title":"Set Custom Consent","href":"/articles/sdks/adobe-launch/actions/set-custom-consent"}]}]},{"group":"iOS SDK","icon":"apple","pages":[{"title":"Introduction to Zeotap Collect iOS SDK","href":"/articles/sdks/ios/intro"},{"title":"Quick Start Guide","href":"/articles/sdks/ios/quick-start"},{"group":"Configurations","icon":"sliders","pages":[{"title":"Configurations","href":"/articles/sdks/ios/configurations/overview"},{"title":"Write Key","href":"/articles/sdks/ios/configurations/write-key"},{"title":"PII Hashing Configuration","href":"/articles/sdks/ios/configurations/hashing"},{"title":"Consent Configuration Options","href":"/articles/sdks/ios/configurations/consent-options"}]},{"group":"Guides \u0026 References","icon":"code","pages":[{"title":"Track User Identities","href":"/articles/sdks/ios/api-reference/set-user-identities"},{"title":"Track Page View Events","href":"/articles/sdks/ios/api-reference/set-page-properties"},{"title":"Track User Events","href":"/articles/sdks/ios/api-reference/track"},{"title":"Setting User Properties","href":"/articles/sdks/ios/api-reference/set-user-properties"},{"title":"Track User Consent","href":"/articles/sdks/ios/api-reference/set-consent"},{"title":"Pause Collection","href":"/articles/sdks/ios/api-reference/pause-collection"},{"title":"Resume Collection","href":"/articles/sdks/ios/api-reference/resume-collection"},{"title":"Remove User Identities","href":"/articles/sdks/ios/api-reference/unset-user-identities"},{"title":"Collect Advertising ID (IDFA)","href":"/articles/sdks/ios/api-reference/collect-advertising-id"}]},{"group":"Consent Resolution","icon":"shield-check","pages":[{"title":"Choosing a Consent Strategy","href":"/articles/sdks/ios/consent/consent-strategy"},{"title":"Default Behavior (No Explicit Consent Management)","href":"/articles/sdks/ios/consent/default"},{"title":"TCF v2.x / GDPR Compliance","href":"/articles/sdks/ios/consent/gdpr"},{"title":"Custom Consent Management","href":"/articles/sdks/ios/consent/custom-consent"}]},{"title":"Implementation Examples","href":"/articles/sdks/ios/examples"},{"group":"Release Notes","icon":"clock-rotate-left","pages":[{"title":"Release Notes","href":"/articles/sdks/ios/release-notes/overview"},{"title":"Version 1.3.10","href":"/articles/sdks/ios/release-notes/v1.3.10"},{"title":"Version 1.3.9","href":"/articles/sdks/ios/release-notes/v1.3.9"},{"title":"Version 1.3.8","href":"/articles/sdks/ios/release-notes/v1.3.8"},{"title":"Version 1.3.7","href":"/articles/sdks/ios/release-notes/v1.3.7"},{"title":"Version 1.3.6","href":"/articles/sdks/ios/release-notes/v1.3.6"},{"title":"Version 1.3.4","href":"/articles/sdks/ios/release-notes/v1.3.4"},{"title":"Version 1.3.3","href":"/articles/sdks/ios/release-notes/v1.3.3"},{"title":"Version 1.3.2","href":"/articles/sdks/ios/release-notes/v1.3.2"},{"title":"Version 1.3.0","href":"/articles/sdks/ios/release-notes/v1.3.0"},{"title":"Version 1.2.0","href":"/articles/sdks/ios/release-notes/v1.2.0"},{"title":"Version 1.0.1","href":"/articles/sdks/ios/release-notes/v1.0.1"},{"title":"Version 1.0.0","href":"/articles/sdks/ios/release-notes/v1.0.0"}]}]},{"group":"Android SDK","icon":"android","pages":[{"title":"Introduction to Zeotap Collect Android SDK","href":"/articles/sdks/android/intro"},{"title":"Quick Start Guide","href":"/articles/sdks/android/quick-start"},{"group":"Configurations","icon":"sliders","pages":[{"title":"Configurations","href":"/articles/sdks/android/configurations/overview"},{"title":"Write Key","href":"/articles/sdks/android/configurations/write-key"},{"title":"PII Hashing Configuration","href":"/articles/sdks/android/configurations/hashing"},{"title":"Consent Configuration Options","href":"/articles/sdks/android/configurations/consent-options"}]},{"group":"API Reference","icon":"code","pages":[{"title":"Track User Identities","href":"/articles/sdks/android/api-reference/set-user-identities"},{"title":"Track Page View Events","href":"/articles/sdks/android/api-reference/set-page-properties"},{"title":"Track Events","href":"/articles/sdks/android/api-reference/set-event-properties"},{"title":"Track Instant Event","href":"/articles/sdks/android/api-reference/set-instant-event-properties"},{"title":"Track User Properties","href":"/articles/sdks/android/api-reference/set-user-properties"},{"title":"Track User Consent","href":"/articles/sdks/android/api-reference/set-consent"},{"title":"Remove User Identities","href":"/articles/sdks/android/api-reference/unset-user-identities"},{"title":"Pause Collection","href":"/articles/sdks/android/api-reference/pause-collection"},{"title":"Resume Collection","href":"/articles/sdks/android/api-reference/resume-collection"}]},{"group":"Consent Resolution","icon":"shield-check","pages":[{"title":"Choosing a Consent Strategy","href":"/articles/sdks/android/consent/consent-strategy"},{"title":"Default Behavior (No Explicit Consent Management)","href":"/articles/sdks/android/consent/default"},{"title":"TCF v2.x / GDPR Compliance","href":"/articles/sdks/android/consent/gdpr"},{"title":"Custom Consent Management","href":"/articles/sdks/android/consent/custom-consent"}]},{"title":"Implementation Examples","href":"/articles/sdks/android/examples"},{"group":"Release Notes","icon":"clock-rotate-left","pages":[{"title":"Release Notes","href":"/articles/sdks/android/release-notes/overview"},{"title":"Version 2.2.12","href":"/articles/sdks/android/release-notes/v2.2.12"},{"title":"Version 2.2.11","href":"/articles/sdks/android/release-notes/v2.2.11"},{"title":"Version 2.2.10","href":"/articles/sdks/android/release-notes/v2.2.10"},{"title":"Version 2.2.9","href":"/articles/sdks/android/release-notes/v2.2.9"},{"title":"Version 2.2.8","href":"/articles/sdks/android/release-notes/v2.2.8"},{"title":"Version 2.2.7","href":"/articles/sdks/android/release-notes/v2.2.7"},{"title":"Version 2.2.6","href":"/articles/sdks/android/release-notes/v2.2.6"},{"title":"Version 2.2.5","href":"/articles/sdks/android/release-notes/v2.2.5"},{"title":"Version 2.2.4","href":"/articles/sdks/android/release-notes/v2.2.4"},{"title":"Version 2.2.3","href":"/articles/sdks/android/release-notes/v2.2.3"},{"title":"Version 2.2.0","href":"/articles/sdks/android/release-notes/v2.2.0"},{"title":"Version 2.1.1","href":"/articles/sdks/android/release-notes/v2.1.1"},{"title":"Version 2.1.0","href":"/articles/sdks/android/release-notes/v2.1.0"},{"title":"Version 2.0.1","href":"/articles/sdks/android/release-notes/v2.0.1"},{"title":"Version 2.0.0","href":"/articles/sdks/android/release-notes/v2.0.0"},{"title":"Version 1.0.0","href":"/articles/sdks/android/release-notes/v1.0.0"}]}]},{"group":"React Native SDK","icon":"react","pages":[{"title":"Introduction to React Native SDK","href":"/articles/sdks/react-native/intro"},{"title":"Quick Start","href":"/articles/sdks/react-native/quick-start"},{"group":"Configurations","icon":"sliders","pages":[{"title":"Configurations","href":"/articles/sdks/react-native/configurations/overview"},{"title":"Write Key","href":"/articles/sdks/react-native/configurations/write-key"},{"title":"PII Hashing Configuration","href":"/articles/sdks/react-native/configurations/hashing"},{"title":"Consent Configuration Options","href":"/articles/sdks/react-native/configurations/consent-options"}]},{"group":"API Reference","icon":"code","pages":[{"title":"Track User Identities","href":"/articles/sdks/react-native/api-reference/set-user-identities"},{"title":"Track Page View Events","href":"/articles/sdks/react-native/api-reference/set-page-properties"},{"title":"Track Events","href":"/articles/sdks/react-native/api-reference/set-event-properties"},{"title":"Track Instant Events","href":"/articles/sdks/react-native/api-reference/set-instant-event-properties"},{"title":"Track User Properties","href":"/articles/sdks/react-native/api-reference/set-user-properties"},{"title":"Track User Consent","href":"/articles/sdks/react-native/api-reference/set-consent"},{"title":"Remove User Identities","href":"/articles/sdks/react-native/api-reference/unset-user-identities"},{"title":"Pause Collection","href":"/articles/sdks/react-native/api-reference/pause-collection"},{"title":"Resume Collection","href":"/articles/sdks/react-native/api-reference/resume-collection"}]},{"group":"Consent Resolution","icon":"shield-check","pages":[{"title":"Choosing a Consent Strategy","href":"/articles/sdks/react-native/consent/consent-strategy"},{"title":"Default Behavior (No Explicit Consent Management)","href":"/articles/sdks/react-native/consent/default"},{"title":"TCF v2.x / GDPR Compliance","href":"/articles/sdks/react-native/consent/gdpr"},{"title":"Custom Consent Management","href":"/articles/sdks/react-native/consent/custom-consent"}]},{"title":"Implementation Examples","href":"/articles/sdks/react-native/examples"},{"group":"Release Notes","icon":"clock-rotate-left","pages":[{"title":"Release Notes","href":"/articles/sdks/react-native/release-notes/overview"},{"title":"Version 1.3.9","href":"/articles/sdks/react-native/release-notes/v1.3.9"},{"title":"Version 1.3.8","href":"/articles/sdks/react-native/release-notes/v1.3.8"},{"title":"Version 1.3.7","href":"/articles/sdks/react-native/release-notes/v1.3.7"},{"title":"Version 1.3.6","href":"/articles/sdks/react-native/release-notes/v1.3.6"},{"title":"Version 1.3.5","href":"/articles/sdks/react-native/release-notes/v1.3.5"},{"title":"Version 1.3.4","href":"/articles/sdks/react-native/release-notes/v1.3.4"},{"title":"Version 1.3.3","href":"/articles/sdks/react-native/release-notes/v1.3.3"},{"title":"Version 1.3.2","href":"/articles/sdks/react-native/release-notes/v1.3.2"},{"title":"Version 1.3.1","href":"/articles/sdks/react-native/release-notes/v1.3.1"},{"title":"Version 1.3.0","href":"/articles/sdks/react-native/release-notes/v1.3.0"},{"title":"Version 1.2.1","href":"/articles/sdks/react-native/release-notes/v1.2.1"},{"title":"Version 1.2.0","href":"/articles/sdks/react-native/release-notes/v1.2.0"},{"title":"Version 1.1.6","href":"/articles/sdks/react-native/release-notes/v1.1.6"},{"title":"Version 1.1.5","href":"/articles/sdks/react-native/release-notes/v1.1.5"},{"title":"Version 1.1.4","href":"/articles/sdks/react-native/release-notes/v1.1.4"},{"title":"Version 1.1.3","href":"/articles/sdks/react-native/release-notes/v1.1.3"},{"title":"Version 1.1.2","href":"/articles/sdks/react-native/release-notes/v1.1.2"},{"title":"Version 1.1.1","href":"/articles/sdks/react-native/release-notes/v1.1.1"},{"title":"Version 1.1.0","href":"/articles/sdks/react-native/release-notes/v1.1.0"},{"title":"Version 1.0.1","href":"/articles/sdks/react-native/release-notes/v1.0.1"},{"title":"Version 1.0.0","href":"/articles/sdks/react-native/release-notes/v1.0.0"}]}]}]},{"tab":"Status","icon":"signal","href":"https://status.zeotap.com/"},{"tab":"Profile API","icon":"square-terminal","pages":[{"title":"Profile API","href":"/profile-api/profileapi"}]},{"tab":"Get Started","icon":"rocket","hidden":true,"pages":[{"title":"Get Started","href":"/articles/get-started-guide/getting-started"}]},{"tab":"What's New?","icon":"calendar-days","pages":[{"title":"What's New?","href":"/articles/product-release-notes/2026/q3-2026"}]},{"tab":"Composable CDP","href":"https://composable-docs.zeotap.com/"},{"tab":"ID+","icon":"fingerprint","hidden":true,"pages":[{"title":"ID+","href":"/articles/id-publication/basic-integration-guide_v2"}]},{"tab":"Support","icon":"headset","hidden":true,"pages":[{"title":"Support","href":"/articles/support/clear-your-cache-and-cookies"}]}]},"basePath":"","title":"Choosing a Consent Strategy - Zeotap docs","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":["10e4515597"],"chunks":["BannerMarkdown-Cj6eAYhz.js","dist-CdrJecqK.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-D-TRO5q5.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}