Manually manage user consent using the Zeotap Android SDK’s setConsent API when not using a TCFv2 CMP.
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
This approach allows you to manage user consent using your own custom logic and user interface (like a custom consent dialog or integration with a non-TCF CMP) and then communicate the user’s choices directly to the Zeotap Android SDK using the setConsent API call.This method is suitable when:
You are not using an IAB TCF v2.x compliant Consent Management Platform (CMP).
You have built your own consent collection mechanism.
You need fine-grained control over when and how consent signals are passed to the SDK.
You are implementing consent requirements for regulations other than GDPR (though it can be used for GDPR if implemented correctly).
You want to integrate with a non-TCF CMP or custom privacy solution.
// Test granting consentMap<String, Object> grantConsent = new HashMap<>();grantConsent.put("track", true);Collect.getInstance().setConsent(grantConsent);// Test denying consentMap<String, Object> denyConsent = new HashMap<>();denyConsent.put("track", false);Collect.getInstance().setConsent(denyConsent);// Test mixed consentMap<String, Object> mixedConsent = new HashMap<>();mixedConsent.put("track", true);mixedConsent.put("marketingConsent", false);Collect.getInstance().setConsent(mixedConsent);
{"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":"6aedbf31f8ed849a5c7dc2cc","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":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"articles/sdks/android/consent/custom-consent","slug":"/articles/sdks/android/consent/custom-consent","pageMetadata":{"title":"Custom Consent Management","description":"Manually manage user consent using the Zeotap Android SDK's setConsent API when not using a TCFv2 CMP.","href":"/articles/sdks/android/consent/custom-consent"},"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: \"Manually manage user consent using the Zeotap Android SDK’s setConsent API when not using a TCFv2 CMP.\"\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`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);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`,_jsxs(_components.p,{children:[`This approach allows you to manage user consent using your own custom logic and user interface (like a custom consent dialog or integration with a non-TCF CMP) and then communicate the user’s choices directly to the Zeotap Android SDK using the `,_jsx(_components.a,{href:`/articles/sdks/android/api-reference/set-consent`,children:_jsx(_components.code,{children:`setConsent`})}),` API call.`]}),`\n`,_jsx(_components.p,{children:`This method is suitable when:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You are not using an IAB TCF v2.x compliant Consent Management Platform (CMP).`}),`\n`,_jsx(_components.li,{children:`You have built your own consent collection mechanism.`}),`\n`,_jsx(_components.li,{children:`You need fine-grained control over when and how consent signals are passed to the SDK.`}),`\n`,_jsx(_components.li,{children:`You are implementing consent requirements for regulations other than GDPR (though it can be used for GDPR if implemented correctly).`}),`\n`,_jsx(_components.li,{children:`You want to integrate with a non-TCF CMP or custom privacy solution.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How it Works`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`SDK Configuration:`}),` You initialize the Zeotap SDK with specific options to indicate you will be managing consent manually.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`User Interaction:`}),` Your app presents a consent mechanism (e.g., a dialog, settings screen) to the user.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Capture Consent:`}),` Your app’s code captures the user’s consent choices (e.g., accepting tracking, accepting specific data uses).`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Call `,_jsx(_components.code,{children:`setConsent`}),`:`]}),` Your code calls the `,_jsx(_components.code,{children:`setConsent()`}),` function, passing a map representing the user’s consent status.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`SDK Action:`}),` The Zeotap SDK receives this consent object, stores it locally, and uses it to determine whether subsequent tracking calls should proceed.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`configuration`,children:`Configuration`}),`\n`,_jsxs(_components.p,{children:[`To enable Custom Consent Management, you `,_jsx(_components.strong,{children:`must`}),` configure the SDK during initialization as follows:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`java`,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:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// SDK Initialization for Custom Consent`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`CollectOptions`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` options`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` CollectOptions`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`builder`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`this`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`credential`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"YOUR_WRITE_KEY\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // --- Configuration for Custom Consent ---`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`useConsent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// REQUIRED: Enables consent features`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`checkForCMP`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// REQUIRED: Tells the SDK *not* to look for TCF CMP data`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`build`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Collect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`init`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(options);`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`testing-custom-consent`,children:`Testing Custom Consent`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`15`,language:`java`,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:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`15`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Test granting consent`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`Map`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:`Object`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`grantConsent`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` new`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:` HashMap`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c>();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`grantConsent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`put`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"track\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Collect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getInstance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setConsent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(grantConsent);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Test denying consent`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`Map`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:`Object`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`denyConsent`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` new`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:` HashMap`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c>();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`denyConsent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`put`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"track\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Collect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getInstance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setConsent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(denyConsent);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Test mixed consent`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`Map`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:`String`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:`Object`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`> `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`mixedConsent`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` new`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:` HashMap`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c>();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`mixedConsent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`put`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"track\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`mixedConsent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`put`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"marketingConsent\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Collect`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getInstance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`setConsent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(mixedConsent);`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`related-documentation`,children:`Related Documentation`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/articles/sdks/android/configurations/consent-options`,children:`Consent Configuration Options`}),`: Detailed configuration options for consent management`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/articles/sdks/android/api-reference/set-consent`,children:`Set Consent API`}),`: Complete API reference for the setConsent method`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/articles/sdks/android/consent/consent-strategy`,children:`Choosing a Consent Strategy`}),`: Guide to choosing the right consent approach`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/articles/sdks/android/consent/gdpr`,children:`GDPR/TCF Integration`}),`: Alternative approach using TCF-compliant CMPs`]}),`\n`]})]})}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":"Custom Consent Management","description":"Manually manage user consent using the Zeotap Android SDK's setConsent API when not using a TCFv2 CMP.","href":"/articles/sdks/android/consent/custom-consent"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How it Works","slug":"how-it-works","depth":2,"children":[]},{"title":"Configuration","slug":"configuration","depth":2,"children":[]},{"title":"Testing Custom Consent","slug":"testing-custom-consent","depth":2,"children":[]},{"title":"Related Documentation","slug":"related-documentation","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/zeotap/8d1f66bf8eed64a4/scripts/convert-to-mdx.js"],"subdomain":"zeotap","siteName":"Zeotap docs","title":"Custom Consent Management - Zeotap docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-25T08:21:55.048Z","gitLastModified":"2026-06-25T08:20:38.000Z","originalFileLocation":"articles/sdks/android/consent/custom-consent.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=\"Manually manage user consent using the Zeotap Android SDK\u0026#x27;s setConsent API when not using a TCFv2 CMP.\">\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=\"Custom Consent Management - Zeotap docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Manually manage user consent using the Zeotap Android SDK\u0026#x27;s setConsent API when not using a TCFv2 CMP.\">\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/android/consent/custom-consent\">\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=Custom+Consent+Management\u0026amp;description=Manually+manage+user+consent+using+the+Zeotap+Android+SDK%27s+setConsent+API+when+not+using+a+TCFv2+CMP.\u0026amp;theme=860bb9e6ef8e2213f794d7e2\u0026amp;signature=689132a35f068842829da524176691a8e81e8eaf9bc752244b0c8944fac6aa72\">\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=\"Custom Consent Management - Zeotap docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Manually manage user consent using the Zeotap Android SDK\u0026#x27;s setConsent API when not using a TCFv2 CMP.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://zeotap.mintlify.site/_mintlify/api/og/v2?division=Consent+Resolution\u0026amp;title=Custom+Consent+Management\u0026amp;description=Manually+manage+user+consent+using+the+Zeotap+Android+SDK%27s+setConsent+API+when+not+using+a+TCFv2+CMP.\u0026amp;theme=860bb9e6ef8e2213f794d7e2\u0026amp;signature=689132a35f068842829da524176691a8e81e8eaf9bc752244b0c8944fac6aa72\">\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/android/consent/custom-consent\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/articles/sdks/android/consent/custom-consent.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/android/consent/custom-consent#webpage\",\"url\":\"https://docs.zeotap.com/articles/sdks/android/consent/custom-consent\",\"name\":\"Custom Consent Management\",\"description\":\"Manually manage user consent using the Zeotap Android SDK's setConsent API when not using a TCFv2 CMP.\",\"dateModified\":\"2026-06-25T08:20:38.000Z\",\"isPartOf\":{\"@id\":\"https://docs.zeotap.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.zeotap.com/articles/sdks/android/consent/custom-consent#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.zeotap.com/articles/sdks/android/consent/custom-consent#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Android SDK\",\"item\":\"https://docs.zeotap.com/articles/sdks/android/intro\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Consent Resolution\",\"item\":\"https://docs.zeotap.com/articles/sdks/android/consent/consent-strategy\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Custom Consent Management\",\"item\":\"https://docs.zeotap.com/articles/sdks/android/consent/custom-consent\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.zeotap.com/articles/sdks/android/consent/custom-consent#article\",\"headline\":\"Custom Consent Management\",\"name\":\"Custom Consent Management\",\"description\":\"Manually manage user consent using the Zeotap Android SDK's setConsent API when not using a TCFv2 CMP.\",\"url\":\"https://docs.zeotap.com/articles/sdks/android/consent/custom-consent\",\"mainEntityOfPage\":{\"@id\":\"https://docs.zeotap.com/articles/sdks/android/consent/custom-consent#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","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)","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","description":"Integrating the Zeotap Android SDK with IAB TCF v2.x compliant Consent Management Platforms (CMPs) for GDPR compliance.","href":"/articles/sdks/android/consent/gdpr"},{"title":"Custom Consent Management","href":"/articles/sdks/android/consent/custom-consent"}]},{"title":"Implementation Examples","description":null,"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":"Custom Consent Management - 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"]}