# c15t Documentation > Curated documentation map for developers and coding agents working with c15t. ## How To Use This File Read the summary links first. If the page links are not enough, use `/llms-full.txt` as the broad full-context fallback. ## Getting started - [Introduction](/docs/index.md): c15t adds a consent banner, a preference dialog and consent-gated scripts to JavaScript, React, Next.js, Vue, Nuxt, Svelte, SvelteKit, Astro and TanStack Start sites. - [Choose your setup](/docs/concepts/choose-your-setup.md): Pick the c15t setup for your framework, rendering mode and hosting, and decide who runs the consent backend. - [Examples](/docs/examples.md): Runnable c15t apps from the c15t repository. Starters show the smallest setup for Next.js, TanStack Start, React, Nuxt, Vue, Astro, Svelte, SvelteKit, HTML and JavaScript. Showcases show custom banners, preference centers, gated embeds, analytics, IAB TCF, experiments and multilingual sites. ## Concepts - [How consent works](/docs/concepts/how-consent-works.md): What c15t decides on each page load, the difference between a permission and a recorded choice, and what happens when a visitor saves. - [Consent categories](/docs/concepts/consent-categories.md): Assign scripts, embeds and features to c15t consent categories, and understand which categories the preference dialog shows. - [Policies](/docs/concepts/policies.md): How policy models, prompts and scope decide what c15t asks visitors, where to change the rules, and why a banner may not appear. - [Consent modes](/docs/concepts/modes.md): Reference for manifest(), hosted() and offline() in every c15t framework package, where each one resolves the visitor's policy, what it adds to first-load JavaScript, the build-time manifest fetch and its failure policy, and the backend URL variable each framework reads. - [Data fetching](/docs/concepts/data-fetching.md): Choose the recommended build-time policy snapshot or runtime manifest fetching, backend /init, browser resolution or offline rules, and understand where consent choices are saved. - [Consent state reference](/docs/concepts/consent-state.md): How c15t saves choices, gates IAB vendors, hydrates server records and keeps browser tabs and storage in step. ## Customization - [Customize the interface](/docs/customization/overview.md): Change c15t's consent banner and dialog one step at a time, from a prop to your own markup, and find where each step lives in your framework. - [Banner designs](/docs/customization/recipes.md): Five consent banner designs built with c15t, from one prop to your own markup, with tested code for React, Vue, Svelte, Astro and plain HTML. - [Theme tokens](/docs/customization/tokens.md): Change c15t's colors, type, radius, spacing, shadows and motion with theme tokens, and see every --c15t-* variable with its default. - [Dark mode](/docs/customization/dark-mode.md): Switch c15t's banner and dialog to dark colors with colorScheme, set your own dark tokens, follow your site's theme switch, and paint dark on the first frame in every framework. - [Motion and animation](/docs/customization/motion.md): Change how fast c15t's banner and dialog animate with duration and easing tokens, turn animations off per surface with disableAnimation, and check reduced-motion behavior in each framework. - [Stylesheets and CSS layers](/docs/customization/stylesheets.md): See how c15t delivers its styles in each framework without a render-blocking stylesheet, when to import styles.css yourself with styles false, which file holds the dialog's rules, and how c15t's cascade layer meets your own. - [Component parts](/docs/customization/slots.md): Find every part of c15t's banner, dialog, widget, trigger and ConsentGate placeholder, its key in your framework's part API, and the data attributes to select on. - [Class names and CSS-in-JS](/docs/customization/class-names.md): Style c15t's component parts with CSS Modules, vanilla-extract, StyleX, Emotion or plain class names, and see which approach works in each framework. - [Tailwind CSS](/docs/customization/tailwind.md): Use c15t's styles with Tailwind CSS 4 or 3 in every framework, put utilities on c15t component parts, and use Tailwind's dark variant with c15t. - [Copy and translations](/docs/customization/translations.md): Change consent wording through i18n and test the complete prompt and preferences flow. - [Banner experiments](/docs/guides/banner-experiments.md): Run A/B tests on consent banner presentation with any feature-flag provider or built-in weighted assignment, and attribute every impression and choice to its arm. ## Verify and troubleshoot - [Verify consent](/docs/guides/verify-consent.md): Check in a production build that vendor requests wait for consent, rejection survives a reload, preferences reopen and privacy signals apply. - [Troubleshooting](/docs/guides/troubleshooting.md): Fix a missing banner, analytics that load before consent, choices lost on reload, CORS errors, hydration differences, failed manifest downloads, mode errors and failed static builds in c15t v3. ## Frameworks - [Frameworks](/docs/frameworks.md): c15t setup guides for Next.js, TanStack Start, React, Nuxt, Vue, Astro, Svelte, SvelteKit, plain HTML and JavaScript. ### Next.js - [Quickstart](/docs/frameworks/next/quickstart.md): Add c15t consent management to a Next.js App Router app with Inth, a build-time policy manifest and consent-gated scripts, then check it works. Links to the Pages Router and static export guides. - [App Router](/docs/frameworks/next/app-router.md): Set up c15t in the Next.js App Router with Inth, a build-time policy manifest, consent-gated scripts and a streamed or awaited root layout. - [Pages Router](/docs/frameworks/next/pages-router.md): Set up c15t in the Next.js Pages Router with Inth, a build-time policy manifest, getServerSideProps and consent-gated scripts. - [Static export](/docs/frameworks/next/static-export.md): Add c15t to a Next.js site built with output export, where the browser resolves consent through Inth without request helpers or API routes. - [Client-side initialization](/docs/frameworks/next/client-side.md): Initialize c15t in the browser in a Next.js app with hosted() mode, without server prefetch, a consent route or API handlers. - [Rendering and deployment](/docs/frameworks/next/rendering.md): Choose how Next.js resolves consent for your router, rendering mode and hosting, from streamed App Router layouts to static export, ISR, Cache Components and ensureStatic. - [Upgrade from v2](/docs/frameworks/next/upgrade-v3.md): Upgrade a Next.js app from c15t v2 (@c15t/nextjs) to v3. Covers packages, ConsentRoot or ConsentProvider, the useConsentManager codemod, callbacks, policies, styles, IAB and stored consent. #### Scripts and embeds - [Scripts](/docs/frameworks/next/scripts.md): Register vendor scripts in a Next.js ConsentRoot, check how each vendor loads, let visitors turn off one vendor, clear stored data after revocation and replace @next/third-parties. - [Embeds](/docs/frameworks/next/embeds.md): Keep YouTube videos, maps and other iframes out of a Next.js page until their consent category is allowed, with ConsentGate or the iframe blocker in ConsentRoot. - [Network blocker](/docs/frameworks/next/network-blocker.md): Hold fetch and XMLHttpRequest calls in a Next.js app until their consent category is allowed, with networkBlocker rules in c15t.config.ts. - [Vendor consent](/docs/frameworks/next/vendor-consent.md): Let visitors allow a category such as marketing in a Next.js app and still turn off one vendor in it, with vendors in c15t.config.ts and useVendorAllowed. - [Clear on revocation](/docs/frameworks/next/clear-on-revocation.md): Delete the first-party cookies and Web Storage keys a consent category owns in a Next.js app when that category is denied, with clearOnRevocation in c15t.config.ts. #### Customization - [Customize](/docs/frameworks/next/customize.md): Load the c15t stylesheet yourself in Next.js when you need to, and change colors, radius, button roles, component parts, dark mode and banner shape with ConsentTheme and ConsentRoot options. - [Banner designs](/docs/customization/recipes.md): Five consent banner designs built with c15t, from one prop to your own markup, with tested code for React, Vue, Svelte, Astro and plain HTML. - [Theme tokens](/docs/customization/tokens.md): Change c15t's colors, type, radius, spacing, shadows and motion with theme tokens, and see every --c15t-* variable with its default. - [Dark mode](/docs/customization/dark-mode.md): Switch c15t's banner and dialog to dark colors with colorScheme, set your own dark tokens, follow your site's theme switch, and paint dark on the first frame in every framework. - [Tailwind CSS](/docs/customization/tailwind.md): Use c15t's styles with Tailwind CSS 4 or 3 in every framework, put utilities on c15t component parts, and use Tailwind's dark variant with c15t. - [Translations](/docs/frameworks/next/translations.md): Where c15t banner and dialog copy comes from in Next.js, how the server and browser pick the visitor's language, and how to override copy and switch languages from a Client Component. - [Compose your own banner](/docs/frameworks/next/compose.md): Build a Next.js consent banner as a Client Component from the ConsentBanner parts in c15t/next, with your own markup and buttons, rendered inside ConsentRoot. - [Headless](/docs/frameworks/next/headless.md): Build a custom consent banner in Next.js with the c15t/next/headless hooks inside your existing ConsentRoot. #### Components - [Components](/docs/frameworks/next/components.md): Every c15t component a Next.js app imports from c15t/next, what each renders, which ones are Client Components, and where to start. - [ConsentRoot](/docs/frameworks/next/components/consent-root.md): Render the Next.js ConsentRoot once from a Server Component layout, pass it the server-resolved state, and see how it reads c15t.config.ts and picks the consent mode. - [ConsentBanner](/docs/frameworks/next/components/consent-banner.md): Render the pre-built ConsentBanner inside a Next.js ConsentRoot and configure its variants, per-policy buttons and compound parts. - [ConsentDialog](/docs/frameworks/next/components/consent-dialog.md): Mount ConsentDialog as a Client Component inside a Next.js ConsentRoot to open the preference center from the banner, links and triggers. - [ConsentWidget](/docs/frameworks/next/components/consent-widget.md): Render ConsentWidget on a Next.js privacy page inside ConsentRoot as an inline preference center, server-rendered when the route resolves consent. - [ConsentDialogLink](/docs/frameworks/next/components/consent-dialog-link.md): Open the preference center from a Next.js footer with ConsentDialogLink, a Client Component that renders an unstyled button inside ConsentRoot. - [ConsentDialogTrigger](/docs/frameworks/next/components/consent-dialog-trigger.md): Add the floating ConsentDialogTrigger button or toolbar to a Next.js ConsentRoot so visitors can reopen the preference center. - [ConsentGate](/docs/frameworks/next/components/consent-gate.md): Consent-gate an iframe in Next.js with ConsentGate inside ConsentRoot; with server prefetch the server HTML carries the placeholder for a denied category, and a granted embed mounts after hydration. #### Consent API - [Hooks](/docs/frameworks/next/hooks.md): Gate features and save consent choices in Next.js Client Components with the focused hooks exported from c15t/next. - [Callbacks](/docs/frameworks/next/callbacks.md): Run code in a Next.js app when a visitor records a consent choice, when permissions change, when a request fails and before the revocation reload, from c15t.config.ts. #### Advanced - [IAB TCF](/docs/frameworks/next/iab.md): Mount the IAB TCF banner and dialog inside a Next.js ConsentRoot and configure the CMP ID, policy and vendor data. - [IAB GPP](/docs/frameworks/next/gpp.md): Add the IAB Global Privacy Platform API (__gpp) to a Next.js app with ConsentGPP from c15t/react/gpp, so ad tech can read US state opt-outs and the TCF EU consent string. - [Geography headers](/docs/frameworks/next/geography-headers.md): Use c15tProxy in Next.js proxy.ts or middleware.ts so Server Components and Route Handlers receive the visitor's country and region. - [Content Security Policy](/docs/frameworks/next/content-security-policy.md): Pass a per-request CSP nonce to ConsentRoot in Next.js and allow the consent backend in connect-src. - [Performance](/docs/frameworks/next/optimization.md): Bundle policy at build time to avoid manifest fetch latency, use runtime caching when policies must refresh without a rebuild, and optionally keep browser consent requests on your origin. - [Data fetching reference](/docs/frameworks/next/data-fetching-reference.md): Reference for the Next.js c15t.config.ts options, modes, resolveConsent, withConsentProps, the consent route, manifest resolution, request geography and offline configuration. #### Verify and troubleshoot - [DevTools](/docs/frameworks/next/components/dev-tools.md): Load the c15t DevTools panel only in Next.js development builds to inspect consent state, scripts, policy and events inside ConsentRoot. - [Troubleshooting](/docs/frameworks/next/troubleshooting.md): Diagnose failed c15t consent prefetch and build-time manifest downloads in Next.js, verify manifest requests, and fix a missing c15t.config.ts, config errors, unknown server location and prerendering errors. - [Verify consent](/docs/guides/verify-consent.md): Check in a production build that vendor requests wait for consent, rejection survives a reload, preferences reopen and privacy signals apply. ### TanStack Start - [Quickstart](/docs/frameworks/tanstack-start/quickstart.md): Resolve consent on the server in a TanStack Start root loader, render the banner in the first HTML, and gate vendor scripts, using Inth as the consent backend. - [Rendering and deployment](/docs/frameworks/tanstack-start/rendering.md): Choose how a TanStack Start app resolves consent, with an awaited or streamed root loader, a same-origin consent route, or SPA mode, prerendered pages and static hosting. #### Scripts and embeds - [Scripts](/docs/frameworks/tanstack-start/scripts.md): Load vendor scripts by consent category in a TanStack Start app with ConsentRoot, and clear stored data or reload the page when a visitor withdraws consent. - [Embeds](/docs/frameworks/tanstack-start/embeds.md): Keep YouTube videos, maps and other iframes out of a TanStack Start page until their consent category is allowed, with ConsentGate or the iframe blocker in ConsentRoot. - [Network blocker](/docs/frameworks/tanstack-start/network-blocker.md): Hold fetch and XMLHttpRequest calls in a TanStack Start app until their consent category is allowed, with networkBlocker rules on ConsentRoot. - [Vendor consent](/docs/frameworks/tanstack-start/vendor-consent.md): Let visitors allow a category such as marketing in a TanStack Start app and still turn off one vendor in it, with the vendors prop on ConsentRoot and useVendorAllowed. - [Clear on revocation](/docs/frameworks/tanstack-start/clear-on-revocation.md): Delete the first-party cookies and Web Storage keys a consent category owns in a TanStack Start app when that category is denied, with the clearOnRevocation prop on ConsentRoot. #### Customization - [Customize](/docs/frameworks/tanstack-start/customize.md): Change the colors, fonts, layout, button styles and copy of the c15t banner and dialog in a TanStack Start app with theme tokens, ConsentRoot options and component parts, and load the stylesheet yourself when you need to. - [Banner designs](/docs/customization/recipes.md): Five consent banner designs built with c15t, from one prop to your own markup, with tested code for React, Vue, Svelte, Astro and plain HTML. - [Theme tokens](/docs/customization/tokens.md): Change c15t's colors, type, radius, spacing, shadows and motion with theme tokens, and see every --c15t-* variable with its default. - [Dark mode](/docs/customization/dark-mode.md): Switch c15t's banner and dialog to dark colors with colorScheme, set your own dark tokens, follow your site's theme switch, and paint dark on the first frame in every framework. - [Tailwind CSS](/docs/customization/tailwind.md): Use c15t's styles with Tailwind CSS 4 or 3 in every framework, put utilities on c15t component parts, and use Tailwind's dark variant with c15t. - [Translations](/docs/frameworks/tanstack-start/translations.md): Where c15t banner and dialog copy comes from in TanStack Start, how the server and browser pick the visitor's language, and how to override copy and switch languages from the root route. - [Compose your own banner](/docs/frameworks/tanstack-start/compose.md): Build a TanStack Start consent banner from the ConsentBanner parts in c15t/tanstack-start, with your own markup and buttons, rendered inside ConsentRoot in the root route. - [Headless](/docs/frameworks/tanstack-start/headless.md): Build your own consent banner markup in a TanStack Start app with the c15t/tanstack-start/headless hooks inside ConsentRoot. #### Components - [Components](/docs/frameworks/tanstack-start/components.md): ConsentRoot and the consent banner, dialog, widget, links, gate and DevTools components a TanStack Start app imports from c15t/tanstack-start. - [ConsentBanner](/docs/frameworks/tanstack-start/components/consent-banner.md): Render the c15t consent banner in a TanStack Start app, set its variant and position, and override its labels. - [ConsentDialog](/docs/frameworks/tanstack-start/components/consent-dialog.md): Open the c15t preference dialog in a TanStack Start app, reopen it from your own controls, and control blocking, focus and policy gating. - [ConsentWidget](/docs/frameworks/tanstack-start/components/consent-widget.md): Embed the c15t preference controls inline on a TanStack Start privacy page with ConsentWidget, recording a choice only when the visitor saves. - [ConsentDialogLink](/docs/frameworks/tanstack-start/components/consent-dialog-link.md): Add a ConsentDialogLink to a TanStack Start footer so visitors can reopen the c15t preference dialog from your own text link. - [ConsentDialogTrigger](/docs/frameworks/tanstack-start/components/consent-dialog-trigger.md): Add a floating button or toolbar to a TanStack Start app that reopens the c15t preference dialog after the first prompt. - [ConsentGate](/docs/frameworks/tanstack-start/components/consent-gate.md): Gate a YouTube video, map or other iframe behind consent in a TanStack Start app with ConsentGate, showing a placeholder until the category is allowed. #### Consent API - [Hooks](/docs/frameworks/tanstack-start/hooks.md): Read consent permissions, open the preference dialog and save choices in TanStack Start components with the hooks exported from c15t/tanstack-start. - [Callbacks](/docs/frameworks/tanstack-start/callbacks.md): Run code in a TanStack Start app when a visitor records a consent choice, when permissions change, when a request fails and before the revocation reload, from ConsentRoot in the root route. #### Advanced - [IAB TCF](/docs/frameworks/tanstack-start/iab.md): Show the IAB TCF banner and dialog in a TanStack Start app for visitors whose policy uses the IAB model, with c15t/react/iab inside ConsentRoot. - [IAB GPP](/docs/frameworks/tanstack-start/gpp.md): Add the IAB Global Privacy Platform API (__gpp) to a TanStack Start app with ConsentGPP from c15t/react/gpp, so ad tech can read US state opt-outs and the TCF EU consent string. - [Geography headers](/docs/frameworks/tanstack-start/geography-headers.md): Which request headers c15t reads for country, region, language and Global Privacy Control in TanStack Start, where the server functions and consent route send them, and how to test another location. - [Content Security Policy](/docs/frameworks/tanstack-start/content-security-policy.md): Run c15t in a TanStack Start app under a Content Security Policy, pass the router's per-request nonce to ConsentRoot, and allow the consent backend and vendor hosts. #### Verify and troubleshoot - [DevTools](/docs/frameworks/tanstack-start/components/dev-tools.md): Inspect consent state, location, loaded scripts and consent events in a TanStack Start app during development, on its own or inside TanStack Devtools. - [Troubleshooting](/docs/frameworks/tanstack-start/troubleshooting.md): Fix build-time manifest failures, a missing server-rendered banner, server function errors, proxy and firewall failures, and early vendor requests in a TanStack Start app that uses c15t. - [Verify consent](/docs/guides/verify-consent.md): Check in a production build that vendor requests wait for consent, rejection survives a reload, preferences reopen and privacy signals apply. ### React - [Quickstart](/docs/frameworks/react/quickstart.md): Add a consent banner, preferences dialog and consent-gated scripts to a React single-page app built with Vite, using Inth as the consent backend. - [Rendering and deployment](/docs/frameworks/react/rendering.md): How c15t resolves consent in client-rendered React apps, React Router framework mode, Remix and other server-rendered React apps without a c15t adapter. - [Upgrade from v2](/docs/frameworks/react/upgrade-v3.md): Upgrade a React app from c15t v2 (@c15t/react) to v3. Covers packages, ConsentProvider and transports, the useConsentManager codemod, callbacks, policies, styles, IAB and stored consent. #### Scripts and embeds - [Scripts](/docs/frameworks/react/scripts.md): Load vendor scripts by consent category in a React app with ConsentProvider, and clear stored data or reload the page when a visitor withdraws consent. - [Embeds](/docs/frameworks/react/embeds.md): Keep YouTube videos, maps and other iframes out of a React page until their consent category is allowed, with ConsentGate or the iframe blocker in ConsentProvider. - [Network blocker](/docs/frameworks/react/network-blocker.md): Hold fetch and XMLHttpRequest calls in a React app until their consent category is allowed, with networkBlocker rules in the ConsentProvider options. - [Vendor consent](/docs/frameworks/react/vendor-consent.md): Let visitors allow a category such as marketing in a React app and still turn off one vendor in it, with the vendors option on ConsentProvider and useVendorAllowed. - [Clear on revocation](/docs/frameworks/react/clear-on-revocation.md): Delete the first-party cookies and Web Storage keys a consent category owns in a React app when that category is denied, with the clearOnRevocation option on ConsentProvider. #### Customization - [Customize](/docs/frameworks/react/customize.md): Change the colors, fonts, layout, button styles and copy of the c15t banner and dialog in a React app with theme tokens, provider options and slots, and load the stylesheet yourself when you need to. - [Banner designs](/docs/customization/recipes.md): Five consent banner designs built with c15t, from one prop to your own markup, with tested code for React, Vue, Svelte, Astro and plain HTML. - [Theme tokens](/docs/customization/tokens.md): Change c15t's colors, type, radius, spacing, shadows and motion with theme tokens, and see every --c15t-* variable with its default. - [Dark mode](/docs/customization/dark-mode.md): Switch c15t's banner and dialog to dark colors with colorScheme, set your own dark tokens, follow your site's theme switch, and paint dark on the first frame in every framework. - [Tailwind CSS](/docs/customization/tailwind.md): Use c15t's styles with Tailwind CSS 4 or 3 in every framework, put utilities on c15t component parts, and use Tailwind's dark variant with c15t. - [Translations](/docs/frameworks/react/translations.md): Where c15t banner and dialog copy comes from in a React app, how the browser picks the visitor's language, and how to override copy and switch languages with the provider's i18n option and hooks. - [Compose your own banner](/docs/frameworks/react/compose.md): Build a React consent banner from the ConsentBanner parts in c15t/react, with your own markup and buttons, while the policy still decides which actions appear. - [Headless](/docs/frameworks/react/headless.md): Build a custom consent banner in React with the c15t/react/headless hooks inside your ConsentProvider. #### Components - [Components](/docs/frameworks/react/components.md): Every c15t component a React app imports from c15t/react, what each renders, where each one mounts, and which to start with. - [ConsentProvider](/docs/frameworks/react/components/consent-provider.md): Mount ConsentProvider in a React app and configure its backend, scripts, storage, blocking and presentation options. - [ConsentBanner](/docs/frameworks/react/components/consent-banner.md): Render the c15t consent banner in a React app, choose its variant and position, and compose its parts. - [ConsentDialog](/docs/frameworks/react/components/consent-dialog.md): Open the c15t preference center as a modal ConsentDialog in a React app, wire its triggers and control blocking, focus and policy gating. - [ConsentWidget](/docs/frameworks/react/components/consent-widget.md): Embed the c15t preference center inline with ConsentWidget on a React privacy page, with draft toggles that record a choice only on Save. - [ConsentDialogLink](/docs/frameworks/react/components/consent-dialog-link.md): Add a ConsentDialogLink to a React footer so visitors reopen the c15t preference center from your own text link, with asChild and rights data. - [ConsentDialogTrigger](/docs/frameworks/react/components/consent-dialog-trigger.md): Add the c15t ConsentDialogTrigger floating button or toolbar inside a React ConsentProvider so visitors can reopen the preference center after the first prompt. - [ConsentGate](/docs/frameworks/react/components/consent-gate.md): Gate a YouTube or map iframe behind consent with ConsentGate in React, showing a placeholder that opens the preference center until the category is allowed. #### Consent API - [Hooks](/docs/frameworks/react/hooks.md): Gate features and save consent choices in React components with the focused hooks exported from c15t/react. - [Callbacks](/docs/frameworks/react/callbacks.md): Run code in a React app when a visitor records a consent choice, when permissions change, when a request fails and before the revocation reload, with the ConsentProvider callbacks option. #### Advanced - [IAB TCF](/docs/frameworks/react/iab.md): Mount the IAB TCF banner and dialog inside a React ConsentProvider and configure the CMP ID, policy and vendor data. - [IAB GPP](/docs/frameworks/react/gpp.md): Add the IAB Global Privacy Platform API (__gpp) to a React app with ConsentGPP from @c15t/react/gpp, so ad tech can read US state opt-outs and the TCF EU consent string. - [Content Security Policy](/docs/frameworks/react/content-security-policy.md): Run c15t in a React app under a Content Security Policy, allow the consent backend and vendor hosts, and pass a nonce to ConsentProvider and ConsentTheme. #### Verify and troubleshoot - [DevTools](/docs/frameworks/react/components/dev-tools.md): Inspect consent state, location, loaded scripts and consent events in a React app during development with the c15t DevTools panel. - [Troubleshooting](/docs/frameworks/react/troubleshooting.md): Fix a missing banner, early vendor requests, unstyled components and theme warnings in a React app that uses c15t/react. - [Verify consent](/docs/guides/verify-consent.md): Check in a production build that vendor requests wait for consent, rejection survives a reload, preferences reopen and privacy signals apply. ### Nuxt - [Quickstart](/docs/frameworks/nuxt/quickstart.md): Add c15t to a server-rendered Nuxt app with the Nuxt module, Inth, consent-gated scripts and a preferences link. - [Nuxt module](/docs/frameworks/nuxt/module.md): What the c15t Nuxt module registers, where each option goes between nuxt.config.ts and app.config.ts, and every module option. - [Rendering and deployment](/docs/frameworks/nuxt/rendering.md): Choose the c15t Nuxt module's mode and routePrefix for server rendering, prerendered and cached routes, nuxt generate on static hosting, and ssr false. #### Scripts and embeds - [Scripts](/docs/frameworks/nuxt/scripts.md): Load vendor scripts by consent category in a Nuxt app with the c15t Nuxt module, what happens when a visitor withdraws consent, and how to move off @nuxt/scripts and nuxt-gtag. - [Embeds](/docs/frameworks/nuxt/embeds.md): Keep YouTube videos, maps and other iframes out of a Nuxt page until their consent category is allowed, with ConsentGate or the iframe blocker. - [Network blocker](/docs/frameworks/nuxt/network-blocker.md): Hold fetch and XMLHttpRequest calls in a Nuxt app until their consent category is allowed, with rules in the c15t module options. - [Vendor consent](/docs/frameworks/nuxt/vendor-consent.md): Let visitors allow a category such as marketing in a Nuxt app and still turn off one vendor in it, with the vendors option of the c15t Nuxt module and useConsentDraft. - [Clear on revocation](/docs/frameworks/nuxt/clear-on-revocation.md): Delete the first-party cookies and Web Storage keys a consent category owns in a Nuxt app when that category is denied, with the clearOnRevocation option of the c15t Nuxt module. #### Customization - [Customize](/docs/frameworks/nuxt/customize.md): Change the c15t banner and dialog in Nuxt with theme tokens, layout presentation, component slots and copy. - [Banner designs](/docs/customization/recipes.md): Five consent banner designs built with c15t, from one prop to your own markup, with tested code for React, Vue, Svelte, Astro and plain HTML. - [Theme tokens](/docs/customization/tokens.md): Change c15t's colors, type, radius, spacing, shadows and motion with theme tokens, and see every --c15t-* variable with its default. - [Dark mode](/docs/customization/dark-mode.md): Switch c15t's banner and dialog to dark colors with colorScheme, set your own dark tokens, follow your site's theme switch, and paint dark on the first frame in every framework. - [Tailwind CSS](/docs/customization/tailwind.md): Use c15t's styles with Tailwind CSS 4 or 3 in every framework, put utilities on c15t component parts, and use Tailwind's dark variant with c15t. - [Translations](/docs/frameworks/nuxt/translations.md): Where the c15t banner and dialog text comes from in Nuxt, how the server picks the visitor's language, and how to switch it at runtime. - [Headless](/docs/frameworks/nuxt/headless.md): Build your own consent banner and preference form in Nuxt with the auto-imported c15t composables instead of ConsentRoot. #### Components - [Components](/docs/frameworks/nuxt/components.md): Every c15t component in Nuxt, which ones the Nuxt module registers globally, which you import, and a page for each one's props and behavior. - [ConsentRoot](/docs/frameworks/nuxt/components/consent-root.md): Mount the c15t banner, preference dialog and floating trigger in Nuxt with the globally registered ConsentRoot, rendered on the server. - [ConsentBanner](/docs/frameworks/nuxt/components/consent-banner.md): Render the c15t consent banner in Nuxt, choose its variant and position, and understand what it shows for each policy. - [ConsentManager](/docs/frameworks/nuxt/components/consent-manager.md): Render the c15t preference dialog in Nuxt, open it from your own code, and understand its actions, focus handling and styling. - [ConsentWidget](/docs/frameworks/nuxt/components/consent-widget.md): Put the c15t category switches and save actions inline on a Nuxt privacy settings page with the globally registered ConsentWidget. - [ConsentDialogLink](/docs/frameworks/nuxt/components/consent-dialog-link.md): Add a Privacy settings button that reopens the c15t preference dialog in Nuxt, and hide it when the policy offers no preferences. - [ConsentDialogTrigger](/docs/frameworks/nuxt/components/consent-dialog-trigger.md): Show a floating, draggable button that reopens the c15t preference dialog in Nuxt, and configure its corner, size, icon and label. - [ConsentGate](/docs/frameworks/nuxt/components/consent-gate.md): Render an iframe or widget in Nuxt only while its consent category is allowed, with the globally registered ConsentGate and a placeholder slot. - [IABConsentBanner](/docs/frameworks/nuxt/components/iab-consent-banner.md): Render the IAB TCF first layer in Nuxt with IABConsentBanner, when to import it instead of relying on ConsentRoot, and its props. - [IABConsentDialog](/docs/frameworks/nuxt/components/iab-consent-dialog.md): Render the IAB TCF preference centre in Nuxt with IABConsentDialog, choose its first tab, and build a custom one with composables. #### Consent API - [Composables](/docs/frameworks/nuxt/composables.md): Every c15t composable the Nuxt module auto-imports, grouped by task, with the difference between a permission and a recorded choice. - [Callbacks](/docs/frameworks/nuxt/callbacks.md): Run code in a Nuxt app when a visitor records a consent choice, when permissions change, before a revocation reload, and when c15t reports an error. #### Advanced - [IAB TCF](/docs/frameworks/nuxt/iab.md): Turn on IAB TCF in Nuxt with the c15t module's iab option, so visitors under an IAB policy get the IAB banner, preference centre and __tcfapi. - [IAB GPP](/docs/frameworks/nuxt/gpp.md): Turn on the IAB Global Privacy Platform API (__gpp) in Nuxt with the c15t Nuxt module's gpp option, so ad tech can read US state opt-outs and the TCF EU consent string. - [Geography headers](/docs/frameworks/nuxt/geography-headers.md): Which request headers the c15t Nuxt module reads for the visitor's country, region, language and Global Privacy Control, and how to trust and test them. - [Content Security Policy](/docs/frameworks/nuxt/content-security-policy.md): Allow c15t in a Nuxt app under a Content Security Policy, including the theme token style tag, same-origin routes, the backend and vendor scripts. #### Verify and troubleshoot - [DevTools](/docs/frameworks/nuxt/components/dev-tools.md): Inspect consent state, the resolved policy, location, scripts and consent events in a Nuxt app during development with ConsentDevTools. - [Troubleshooting](/docs/frameworks/nuxt/troubleshooting.md): Fix common c15t Nuxt module problems, from a missing banner and scripts that never load to returning banners and static hosting. - [Verify consent](/docs/guides/verify-consent.md): Check in a production build that vendor requests wait for consent, rejection survives a reload, preferences reopen and privacy signals apply. ### Vue - [Quickstart](/docs/frameworks/vue/quickstart.md): Add c15t to a Vue 3 app built with Vite, using the Vue plugin, Inth, consent-gated scripts and a preferences link. - [c15tVue plugin](/docs/frameworks/vue/plugin.md): Install c15t in a Vue app with app.use(c15tVue), what the plugin starts when the app mounts, and every option it accepts. - [Rendering and deployment](/docs/frameworks/vue/rendering.md): Pick where a Vue app's consent policy comes from with the plugin's mode option, host it statically, and why server-rendered Vue apps should use Nuxt. #### Scripts and embeds - [Scripts](/docs/frameworks/vue/scripts.md): Load vendor scripts by consent category in a Vue app with the c15t Vue plugin, and what happens when a visitor withdraws consent. - [Embeds](/docs/frameworks/vue/embeds.md): Keep YouTube videos, maps and other iframes out of a Vue page until their consent category is allowed, with ConsentGate or the iframe blocker. - [Network blocker](/docs/frameworks/vue/network-blocker.md): Hold fetch and XMLHttpRequest calls in a Vue app until their consent category is allowed, with rules passed to the c15t Vue plugin. - [Vendor consent](/docs/frameworks/vue/vendor-consent.md): Let visitors allow a category such as marketing in a Vue app and still turn off one vendor in it, with the vendors option on the c15tVue plugin and useConsentDraft. - [Clear on revocation](/docs/frameworks/vue/clear-on-revocation.md): Delete the first-party cookies and Web Storage keys a consent category owns in a Vue app when that category is denied, with the clearOnRevocation option on the c15tVue plugin. #### Customization - [Customize](/docs/frameworks/vue/customize.md): Change the c15t banner and dialog in a Vue app with theme tokens, layout presentation, component slots and copy. - [Banner designs](/docs/customization/recipes.md): Five consent banner designs built with c15t, from one prop to your own markup, with tested code for React, Vue, Svelte, Astro and plain HTML. - [Theme tokens](/docs/customization/tokens.md): Change c15t's colors, type, radius, spacing, shadows and motion with theme tokens, and see every --c15t-* variable with its default. - [Dark mode](/docs/customization/dark-mode.md): Switch c15t's banner and dialog to dark colors with colorScheme, set your own dark tokens, follow your site's theme switch, and paint dark on the first frame in every framework. - [Tailwind CSS](/docs/customization/tailwind.md): Use c15t's styles with Tailwind CSS 4 or 3 in every framework, put utilities on c15t component parts, and use Tailwind's dark variant with c15t. - [Translations](/docs/frameworks/vue/translations.md): Where the c15t banner and dialog text comes from in a Vue app, how c15t picks the visitor's language, and how to switch it at runtime. - [Headless](/docs/frameworks/vue/headless.md): Build your own consent banner and preference form in a Vue app with the c15t composables instead of ConsentRoot. #### Components - [Components](/docs/frameworks/vue/components.md): Every c15t Vue component, its import path and what it renders, with a page for each one's props, behavior, accessibility and styling. - [ConsentRoot](/docs/frameworks/vue/components/consent-root.md): Mount the c15t banner, preference dialog and floating trigger in a Vue app with one ConsentRoot component from c15t/vue/vue-plugin. - [ConsentBanner](/docs/frameworks/vue/components/consent-banner.md): Render the c15t consent banner in a Vue app, choose its variant and position, and understand what it shows for each policy. - [ConsentManager](/docs/frameworks/vue/components/consent-manager.md): Render the c15t preference dialog in a Vue app, open it from your own code, and understand its actions, focus handling and styling. - [ConsentWidget](/docs/frameworks/vue/components/consent-widget.md): Put the c15t category switches and save actions inline on a Vue privacy settings page with ConsentWidget from c15t/vue/vue-plugin. - [ConsentDialogLink](/docs/frameworks/vue/components/consent-dialog-link.md): Add a Privacy settings button that reopens the c15t preference dialog in a Vue app, and hide it when the policy offers no preferences. - [ConsentDialogTrigger](/docs/frameworks/vue/components/consent-dialog-trigger.md): Show a floating, draggable button that reopens the c15t preference dialog in a Vue app, and configure its corner, size, icon and label. - [ConsentGate](/docs/frameworks/vue/components/consent-gate.md): Render an iframe or widget in a Vue app only while its consent category is allowed, with a placeholder slot until then. - [IABConsentBanner](/docs/frameworks/vue/components/iab-consent-banner.md): Render the IAB TCF first layer in a Vue app with IABConsentBanner, when to import it instead of relying on ConsentRoot, and its props. - [IABConsentDialog](/docs/frameworks/vue/components/iab-consent-dialog.md): Render the IAB TCF preference centre in a Vue app with IABConsentDialog, choose its first tab, and build a custom one with composables. #### Consent API - [Composables](/docs/frameworks/vue/composables.md): Every c15t composable for a Vue app, grouped by task, with the difference between a permission and a recorded choice. - [Callbacks](/docs/frameworks/vue/callbacks.md): Run code in a Vue app when a visitor records a consent choice, when permissions change, before a revocation reload, and when c15t reports an error. #### Advanced - [IAB TCF](/docs/frameworks/vue/iab.md): Turn on IAB TCF in a Vue app with the c15t Vue plugin's iab option, so visitors under an IAB policy get the IAB banner, preference centre and __tcfapi. - [IAB GPP](/docs/frameworks/vue/gpp.md): Turn on the IAB Global Privacy Platform API (__gpp) in a Vue app with the c15t Vue plugin's gpp option, so ad tech can read US state opt-outs and the TCF EU consent string. - [Content Security Policy](/docs/frameworks/vue/content-security-policy.md): Allow c15t in a Vue app under a Content Security Policy, with a script nonce, the backend in connect-src, and the styles the components inject. #### Verify and troubleshoot - [DevTools](/docs/frameworks/vue/components/dev-tools.md): Inspect consent state, the resolved policy, location, scripts and consent events in a Vue app during development with ConsentDevTools. - [Troubleshooting](/docs/frameworks/vue/troubleshooting.md): Fix common c15t Vue plugin problems, from unresolved imports and a missing banner to tokens that do not apply and scripts that load twice. - [Verify consent](/docs/guides/verify-consent.md): Check in a production build that vendor requests wait for consent, rejection survives a reload, preferences reopen and privacy signals apply. ### Astro - [Quickstart](/docs/frameworks/astro/quickstart.md): Add a c15t consent banner, preference dialog and consent-gated scripts to an Astro 5, 6 or 7 site with the c15t integration and Inth, on static or server output. - [Rendering and deployment](/docs/frameworks/astro/rendering.md): Choose how c15t resolves consent on an Astro site, from static output with hosted() or browser-resolved manifest() to server output with manifest(), prerendered pages, server islands, ClientRouter and offline development. #### Scripts and embeds - [Scripts](/docs/frameworks/astro/scripts.md): Load vendor scripts and gated inline scripts on an Astro site only after the visitor allows their consent category, and stop them when consent is withdrawn. - [Embeds](/docs/frameworks/astro/embeds.md): Gate YouTube videos, maps, social posts and other iframes on an Astro site so they load only after the visitor allows their consent category, with a custom element or the c15t iframe blocker. - [Network blocker](/docs/frameworks/astro/network-blocker.md): Block fetch and XMLHttpRequest calls to tracking hosts on an Astro site until the visitor allows their consent category, with c15t's network blocker rules and an onRequestBlocked handler. - [Vendor consent](/docs/frameworks/astro/vendor-consent.md): Let visitors allow a category such as marketing on an Astro site and still turn off one vendor in it, with the vendors option on the c15t() integration and the page client from c15t/astro/client. - [Clear on revocation](/docs/frameworks/astro/clear-on-revocation.md): Delete the first-party cookies and Web Storage keys a consent category owns on an Astro site when that category is denied, with the clearOnRevocation option of the c15t integration. #### Customization - [Customize](/docs/frameworks/astro/customize.md): Change the c15t banner and preference dialog on an Astro site with theme tokens, button styles, copy, dark mode, legal links and your own stylesheet order, all from the integration options. - [Banner designs](/docs/customization/recipes.md): Five consent banner designs built with c15t, from one prop to your own markup, with tested code for React, Vue, Svelte, Astro and plain HTML. - [Theme tokens](/docs/customization/tokens.md): Change c15t's colors, type, radius, spacing, shadows and motion with theme tokens, and see every --c15t-* variable with its default. - [Dark mode](/docs/customization/dark-mode.md): Switch c15t's banner and dialog to dark colors with colorScheme, set your own dark tokens, follow your site's theme switch, and paint dark on the first frame in every framework. - [Tailwind CSS](/docs/customization/tailwind.md): Use c15t's styles with Tailwind CSS 4 or 3 in every framework, put utilities on c15t component parts, and use Tailwind's dark variant with c15t. - [Translations](/docs/frameworks/astro/translations.md): Set the language and wording of the c15t banner and preference dialog on an Astro site with the integration's i18n option, from Accept-Language negotiation to per-language message overrides and banner props. #### Components - [Components](/docs/frameworks/astro/components.md): Every c15t Astro component, from ConsentScript and ConsentBanner to the server island banner, the preference dialog, its link and the IAB TCF surfaces, with import paths and links to each reference. - [ConsentScript](/docs/frameworks/astro/components/consent-script.md): Put the c15t ConsentScript component in the head of an Astro layout so the browser starts with the server's consent decision, the right color scheme and your theme tokens. - [ConsentBanner](/docs/frameworks/astro/components/consent-banner.md): Render the c15t consent banner as server HTML on an Astro site, with props for copy, legal links and branding, the policy-driven actions, accessibility behavior and the attributes to style it. - [ConsentBannerDeferred](/docs/frameworks/astro/components/consent-banner-deferred.md): Render the c15t consent banner in an Astro server island, so a cached or prerendered page still shows each visitor the banner for their own location and stored choice. - [ConsentDialog](/docs/frameworks/astro/components/consent-dialog.md): Add the c15t preference dialog to an Astro site as an island that downloads only when a visitor opens it, and control when it loads, which framework renders it, how it opens and which legal links it shows. - [ConsentDialogLink](/docs/frameworks/astro/components/consent-dialog-link.md): Add a footer button or link that reopens the c15t preference dialog or the IAB TCF preference center on an Astro site, with no JavaScript of its own. - [IABConsentBanner](/docs/frameworks/astro/components/iab-consent-banner.md): Render the IAB TCF 2.4 banner as server HTML on an Astro site with c15t, with the purposes, partner count and actions TCF requires, its props, accessibility and styling attributes. - [IABConsentDialog](/docs/frameworks/astro/components/iab-consent-dialog.md): Add the IAB TCF 2.4 preference center to an Astro site with c15t as an island that loads the TCF code only when a visitor opens it. #### Consent API - [Client API](/docs/frameworks/astro/client-api.md): Reference for c15t/astro/client on an Astro site, grouped by task, from reading permissions and recorded choices to opening dialogs, saving consent, gated scripts, the page runtime and analytics events. - [Callbacks](/docs/frameworks/astro/callbacks.md): Run your own code on an Astro site when a visitor records a consent choice, when permissions change, before a revocation reload and on errors, with c15t callbacks in the client entrypoint. #### Advanced - [IAB TCF](/docs/frameworks/astro/iab.md): Render the IAB TCF 2.4 banner and preference center on an Astro site with the c15t integration, and configure the CMP ID, vendor list source and publisher restrictions. - [IAB GPP](/docs/frameworks/astro/gpp.md): Expose the IAB Global Privacy Platform API (__gpp) on an Astro site with the c15t integration's gpp option, so ad tech can read US state opt-outs and the TCF EU consent string. - [Geography headers](/docs/frameworks/astro/geography-headers.md): Which request headers the c15t Astro middleware reads for the visitor's country, region, language and Global Privacy Control, how to check your host sends them, and how to test a region locally. - [Content Security Policy](/docs/frameworks/astro/content-security-policy.md): Run c15t on an Astro site under a strict Content Security Policy, with a per-request nonce from your middleware or with Astro's own hash-based CSP, and allow the consent backend and vendors. - [Islands](/docs/frameworks/astro/islands.md): Choose whether React, Vue or Svelte renders the c15t preference dialog on an Astro site, and read consent from your own framework islands through the page's shared consent runtime. #### Reference - [Integration options](/docs/frameworks/astro/integration.md): Reference for every option of the c15t() Astro integration, the Astro equivalent of a consent provider, from backendURL, mode and routePrefix to ui, theme, i18n, middleware and the client entrypoint. - [Server API](/docs/frameworks/astro/server.md): How the c15t middleware resolves consent for each Astro request, what Astro.locals.c15t holds, the helpers in c15t/astro/server, the injected consent route, and how to cache server-rendered pages safely. #### Verify and troubleshoot - [Troubleshooting](/docs/frameworks/astro/troubleshooting.md): Fix common c15t problems on Astro sites, from build errors about adapters and UI integrations to a missing banner, scripts that run too early, unstyled dialogs and saves that fail. - [Verify consent](/docs/guides/verify-consent.md): Check in a production build that vendor requests wait for consent, rejection survives a reload, preferences reopen and privacy signals apply. ### Svelte - [Quickstart](/docs/frameworks/svelte/quickstart.md): Add a c15t cookie banner, preference dialog and consent-gated scripts to a Svelte 5 app built with Vite, using Inth as the consent backend. #### Scripts and embeds - [Scripts](/docs/frameworks/svelte/scripts.md): Load vendor scripts, iframes and network requests in a Svelte app only after the visitor allows their consent category, and stop them when consent is withdrawn. - [Embeds](/docs/frameworks/svelte/embeds.md): Keep YouTube videos, maps and other iframes out of a Svelte page until their consent category is allowed, with ConsentGate or the iframe blocker. - [Network blocker](/docs/frameworks/svelte/network-blocker.md): Hold fetch and XMLHttpRequest calls to tracking domains in a Svelte app until their consent category is allowed, with the provider's networkBlocker option. - [Vendor consent](/docs/frameworks/svelte/vendor-consent.md): Let visitors allow a category such as marketing in a Svelte app and still turn off one vendor in it, with the vendors prop on ConsentProvider and getConsentManager. - [Clear on revocation](/docs/frameworks/svelte/clear-on-revocation.md): Delete the first-party cookies and Web Storage keys a consent category owns in a Svelte app when that category is denied, with the clearOnRevocation prop on ConsentProvider. #### Customization - [Customize](/docs/frameworks/svelte/customize.md): Change c15t's colors, shape, button styles and copy in a Svelte app with a token stylesheet, theme slots, presentation props and translations. - [Banner designs](/docs/customization/recipes.md): Five consent banner designs built with c15t, from one prop to your own markup, with tested code for React, Vue, Svelte, Astro and plain HTML. - [Theme tokens](/docs/customization/tokens.md): Change c15t's colors, type, radius, spacing, shadows and motion with theme tokens, and see every --c15t-* variable with its default. - [Dark mode](/docs/customization/dark-mode.md): Switch c15t's banner and dialog to dark colors with colorScheme, set your own dark tokens, follow your site's theme switch, and paint dark on the first frame in every framework. - [Tailwind CSS](/docs/customization/tailwind.md): Use c15t's styles with Tailwind CSS 4 or 3 in every framework, put utilities on c15t component parts, and use Tailwind's dark variant with c15t. - [Translations](/docs/frameworks/svelte/translations.md): Change c15t banner and dialog copy in a Svelte app with component text props or the provider's i18n option, and switch languages at runtime. - [Primitives](/docs/frameworks/svelte/components/primitives.md): Build your own accessible consent dialog in Svelte with the Dialog, Switch, Tabs, Accordion and PreferenceItem primitives and the focusTrap, scrollLock and portal actions. - [Headless](/docs/frameworks/svelte/headless.md): Replace the c15t banner or preference dialog with your own Svelte markup while the provider keeps policy, storage and script loading. #### Components - [Components](/docs/frameworks/svelte/components.md): Props and behavior of every @c15t/svelte component in a Svelte app, from ConsentProvider and ConsentBanner to ConsentGate and DevTools. - [ConsentProvider](/docs/frameworks/svelte/components/consent-provider.md): Mount ConsentProvider at the root of a Svelte app to start c15t, with every prop, its default, and which options update after mount. - [ConsentBanner](/docs/frameworks/svelte/components/consent-banner.md): Show the c15t cookie banner in a Svelte app with ConsentBanner, and set its variant, position, button layout, copy, accessibility and styling hooks. - [ConsentDialog](/docs/frameworks/svelte/components/consent-dialog.md): Add the c15t preference dialog to a Svelte app with ConsentDialog, including how it loads on first use, its props, keyboard behavior and theme slots. - [ConsentWidget](/docs/frameworks/svelte/components/consent-widget.md): Put c15t's category switches inline on a Svelte privacy settings page with ConsentWidget, and how its draft, vendors and stale-policy alert behave. - [ConsentDialogLink](/docs/frameworks/svelte/components/consent-dialog-link.md): Let visitors reopen c15t preferences from a Svelte footer with ConsentDialogLink, an unstyled button that renders only when the policy offers preferences. - [ConsentDialogTrigger](/docs/frameworks/svelte/components/consent-dialog-trigger.md): Add a floating, draggable privacy button to a Svelte app with ConsentDialogTrigger, and set its corner, size, saved position, accessible name and callbacks. - [ConsentGate](/docs/frameworks/svelte/components/consent-gate.md): Keep a YouTube video or map out of a Svelte page until its consent category is allowed with ConsentGate, and replace its placeholder. - [ConsentButton](/docs/frameworks/svelte/components/consent-button.md): Accept, reject, save or open preferences from your own Svelte markup with ConsentButton, and what each action records. - [IABConsentBanner](/docs/frameworks/svelte/components/iab-consent-banner.md): Show the IAB TCF 2.4 first-layer banner to visitors under an IAB policy in a Svelte app with IABConsentBanner, its props and behavior. - [IABConsentDialog](/docs/frameworks/svelte/components/iab-consent-dialog.md): Show the IAB TCF 2.4 preference center with purposes, features and vendors in a Svelte app with IABConsentDialog. #### Consent API - [Context getters](/docs/frameworks/svelte/getters.md): Reference for every @c15t/svelte context getter in a Svelte app, from reading permissions and recorded choices to saving, the draft, IAB state and kernel events. - [Callbacks](/docs/frameworks/svelte/callbacks.md): Run your own code in a Svelte app when a visitor records a choice or permissions change, with onChoiceRecorded, onPermissionsChanged and script callbacks. #### Advanced - [IAB TCF](/docs/frameworks/svelte/iab.md): Turn on the IAB TCF 2.4 banner and preference center in a Svelte app with IABConsentBanner, IABConsentDialog and the provider's iab option. - [IAB GPP](/docs/frameworks/svelte/gpp.md): Expose the IAB Global Privacy Platform API (__gpp) from a Svelte app with the provider's gpp option, so ad tech can read US state opt-outs and the TCF EU consent string. - [Content Security Policy](/docs/frameworks/svelte/content-security-policy.md): Write a Content Security Policy for a Svelte app using c15t, with the hosts to allow, the provider's nonce option and what c15t injects. #### Verify and troubleshoot - [DevTools](/docs/frameworks/svelte/components/dev-tools.md): Inspect consent, scripts, location and events in a Svelte app with ConsentDevTools from @c15t/svelte/devtools, loaded only in development. - [Troubleshooting](/docs/frameworks/svelte/troubleshooting.md): Fix a Vite build that cannot fetch the c15t manifest, a missing bundled policy, a missing banner, a wrong backend URL, ignored theme colors and vendors that load before consent in a Svelte app. - [Verify consent](/docs/guides/verify-consent.md): Check in a production build that vendor requests wait for consent, rejection survives a reload, preferences reopen and privacy signals apply. ### SvelteKit - [Quickstart](/docs/frameworks/sveltekit/quickstart.md): Bundle your c15t policy into a SvelteKit server at build time, resolve consent in the root layout load so the banner is in the server HTML, then hydrate ConsentRoot with consent-gated scripts and a preferences link. - [Rendering and deployment](/docs/frameworks/sveltekit/rendering.md): Use the recommended build-time manifest for SvelteKit server rendering, choose runtime fetching for policy updates without a rebuild, and handle prerendered pages, static sites and SPA mode. #### Scripts and embeds - [Scripts](/docs/frameworks/sveltekit/scripts.md): Load vendor scripts, iframes and network requests in a SvelteKit app only after the visitor allows their consent category, and stop them when consent is withdrawn. - [Embeds](/docs/frameworks/sveltekit/embeds.md): Keep YouTube videos, maps and other iframes out of SvelteKit server HTML and the browser until their consent category is allowed. - [Network blocker](/docs/frameworks/sveltekit/network-blocker.md): Hold browser fetch and XMLHttpRequest calls to tracking domains in a SvelteKit app until their consent category is allowed, with the networkBlocker option. - [Vendor consent](/docs/frameworks/sveltekit/vendor-consent.md): Let visitors allow a category such as marketing in a SvelteKit app and still turn off one vendor in it, with the vendors prop on ConsentRoot and getConsentManager. - [Clear on revocation](/docs/frameworks/sveltekit/clear-on-revocation.md): Delete the first-party cookies and Web Storage keys a consent category owns in a SvelteKit app when that category is denied, with the clearOnRevocation prop on ConsentRoot. #### Customization - [Customize](/docs/frameworks/sveltekit/customize.md): Render c15t brand colors on the SvelteKit server with generateThemeCSS, and change slots, button styles, banner shape and copy. - [Banner designs](/docs/customization/recipes.md): Five consent banner designs built with c15t, from one prop to your own markup, with tested code for React, Vue, Svelte, Astro and plain HTML. - [Theme tokens](/docs/customization/tokens.md): Change c15t's colors, type, radius, spacing, shadows and motion with theme tokens, and see every --c15t-* variable with its default. - [Dark mode](/docs/customization/dark-mode.md): Switch c15t's banner and dialog to dark colors with colorScheme, set your own dark tokens, follow your site's theme switch, and paint dark on the first frame in every framework. - [Tailwind CSS](/docs/customization/tailwind.md): Use c15t's styles with Tailwind CSS 4 or 3 in every framework, put utilities on c15t component parts, and use Tailwind's dark variant with c15t. - [Translations](/docs/frameworks/sveltekit/translations.md): Change c15t banner and dialog copy in a SvelteKit app, where the server-resolved consent carries the translations for the request's language. - [Primitives](/docs/frameworks/sveltekit/components/primitives.md): Build your own accessible consent dialog in SvelteKit with the Dialog, Switch, Tabs, Accordion and PreferenceItem primitives and the focusTrap, scrollLock and portal actions. - [Headless](/docs/frameworks/sveltekit/headless.md): Replace the c15t banner or preference dialog with your own markup in a SvelteKit app while the provider keeps policy, storage and script loading. #### Components - [Components](/docs/frameworks/sveltekit/components.md): Props and behavior of every @c15t/svelte component in a SvelteKit app, from ConsentRoot and ConsentBanner to ConsentGate and DevTools. - [ConsentRoot](/docs/frameworks/sveltekit/components/consent-root.md): Mount ConsentRoot in a SvelteKit root layout with the state loadConsent returns, so the banner is in the first HTML, with every prop and its default. - [ConsentBanner](/docs/frameworks/sveltekit/components/consent-banner.md): Show the c15t cookie banner in SvelteKit server HTML with ConsentBanner, and set its variant, position, button layout, copy, accessibility and styling hooks. - [ConsentDialog](/docs/frameworks/sveltekit/components/consent-dialog.md): Add the c15t preference dialog to a SvelteKit root layout with ConsentDialog, including how it loads after hydration, its props, keyboard behavior and theme slots. - [ConsentWidget](/docs/frameworks/sveltekit/components/consent-widget.md): Put c15t's category switches inline on a SvelteKit privacy settings route with ConsentWidget, and how its draft, vendors and stale-policy alert behave. - [ConsentDialogLink](/docs/frameworks/sveltekit/components/consent-dialog-link.md): Let visitors reopen c15t preferences from a SvelteKit layout footer with ConsentDialogLink, rendered in server HTML when the policy offers preferences. - [ConsentDialogTrigger](/docs/frameworks/sveltekit/components/consent-dialog-trigger.md): Add a floating, draggable privacy button to a SvelteKit layout with ConsentDialogTrigger, and set its corner, size, saved position, accessible name and callbacks. - [ConsentGate](/docs/frameworks/sveltekit/components/consent-gate.md): Keep a YouTube video or map out of SvelteKit server HTML until its consent category is allowed with ConsentGate, and replace its placeholder. - [ConsentButton](/docs/frameworks/sveltekit/components/consent-button.md): Accept, reject, save or open preferences from SvelteKit pages with ConsentButton, and what each action records. - [IABConsentBanner](/docs/frameworks/sveltekit/components/iab-consent-banner.md): Show the IAB TCF 2.4 first-layer banner to visitors under an IAB policy in a SvelteKit app with IABConsentBanner, its props and behavior. - [IABConsentDialog](/docs/frameworks/sveltekit/components/iab-consent-dialog.md): Show the IAB TCF 2.4 preference center with purposes, features and vendors in a SvelteKit app with IABConsentDialog. #### Consent API - [Context getters](/docs/frameworks/sveltekit/getters.md): Reference for every @c15t/svelte context getter in SvelteKit components, from reading permissions and recorded choices to saving, the draft, IAB state and events. - [Callbacks](/docs/frameworks/sveltekit/callbacks.md): Run your own code in a SvelteKit app when a visitor records a choice or permissions change, with onChoiceRecorded, onPermissionsChanged and script callbacks. #### Advanced - [IAB TCF](/docs/frameworks/sveltekit/iab.md): Turn on the IAB TCF 2.4 banner and preference center in a SvelteKit app with IABConsentBanner, IABConsentDialog and the provider's iab option. - [IAB GPP](/docs/frameworks/sveltekit/gpp.md): Expose the IAB Global Privacy Platform API (__gpp) from a SvelteKit app with the provider's gpp option, so ad tech can read US state opt-outs and the TCF EU consent string. - [Geography headers](/docs/frameworks/sveltekit/geography-headers.md): Which request headers SvelteKit's c15t helpers read for country, region, language and Global Privacy Control, how to trust them, and how to test another location. - [Content Security Policy](/docs/frameworks/sveltekit/content-security-policy.md): Write a Content Security Policy for a SvelteKit app using c15t with SvelteKit's csp option, covering vendor hosts, c15t's style elements, the server-rendered theme style and style attributes. - [Server API](/docs/frameworks/sveltekit/server-api.md): Reference for c15tHandle, loadConsent, createConsentRoute and resolveConsent from @c15t/svelte/kit and @c15t/svelte/server, with every option and default. #### Verify and troubleshoot - [DevTools](/docs/frameworks/sveltekit/components/dev-tools.md): Inspect consent, scripts, location and events in a SvelteKit app with ConsentDevTools, imported only when $app/env reports development. - [Troubleshooting](/docs/frameworks/sveltekit/troubleshooting.md): Fix a SvelteKit build that cannot fetch the c15t manifest, a missing bundled policy, a banner missing from server HTML, failed saves through the consent route, a wrong backend URL and ignored theme colors. - [Verify consent](/docs/guides/verify-consent.md): Check in a production build that vendor requests wait for consent, rejection survives a reload, preferences reopen and privacy signals apply. ### HTML - [Quickstart](/docs/frameworks/html/quickstart.md): Add the c15t banner, preferences and script gating to a plain HTML site, CMS theme, page builder or static site generator with one script tag and no build step. - [Install on your platform](/docs/frameworks/html/platforms.md): Where to paste the c15t script tag, gated vendor snippets and the privacy settings link in WordPress, Webflow, Shopify, Squarespace, Wix, Framer, Ghost, Hugo, Eleventy and Jekyll. #### Scripts and embeds - [Scripts](/docs/frameworks/html/scripts.md): Hold vendor scripts on a plain HTML page until the visitor allows their category, load scripts with callbacks, handle withdrawal and clear vendor cookies with the c15t script tag and no build step. - [Embeds](/docs/frameworks/html/embeds.md): Hold YouTube videos, maps and other iframes on a plain HTML page until their consent category is allowed with data-src and data-category, show a placeholder, and configure the c15t iframe blocker. - [Network blocker](/docs/frameworks/html/network-blocker.md): Hold fetch and XMLHttpRequest calls from a plain HTML page until their consent category is allowed, with network blocker rules queued on the c15t script tag. - [Vendor consent](/docs/frameworks/html/vendor-consent.md): Let visitors allow a category such as marketing on a plain HTML page and still turn off one vendor in it, with the vendors option, data-c15t-vendor on gated tags and the vendor switches in the c15t script tag's preference dialog. - [Clear on revocation](/docs/frameworks/html/clear-on-revocation.md): Delete the first-party cookies and Web Storage keys a consent category owns on a plain HTML page when that category is denied, with the clearOnRevocation option of the c15t script tag. #### Customization - [Customize](/docs/frameworks/html/customize.md): Change the c15t script tag banner on a plain HTML site with theme tokens, extra CSS, layout, copy and legal links, or replace it with your own HTML. - [Banner designs](/docs/customization/recipes.md): Five consent banner designs built with c15t, from one prop to your own markup, with tested code for React, Vue, Svelte, Astro and plain HTML. - [Theme tokens](/docs/customization/tokens.md): Change c15t's colors, type, radius, spacing, shadows and motion with theme tokens, and see every --c15t-* variable with its default. - [Dark mode](/docs/customization/dark-mode.md): Switch c15t's banner and dialog to dark colors with colorScheme, set your own dark tokens, follow your site's theme switch, and paint dark on the first frame in every framework. - [Tailwind CSS](/docs/customization/tailwind.md): Use c15t's styles with Tailwind CSS 4 or 3 in every framework, put utilities on c15t component parts, and use Tailwind's dark variant with c15t. - [Translations](/docs/frameworks/html/translations.md): Choose the language of the c15t banner and preference dialog on a plain HTML site, change its wording, and add languages in hosted and offline mode with the script tag. - [Headless](/docs/frameworks/html/headless.md): Render your own consent banner and preferences in plain HTML with c15t.headless.js, the ui event and data-c15t-action buttons, while c15t keeps resolving the policy, storing choices and gating scripts. #### Components - [Components](/docs/frameworks/html/components.md): Every consent surface and page hook the c15t script tag gives a plain HTML site, from the stock banner and preference dialog to data-c15t-action buttons and gated scripts and iframes. - [Banner](/docs/frameworks/html/components/banner.md): The stock consent banner the c15t script tag shows on a plain HTML site, with its options, layouts, policy-driven buttons, keyboard behavior and data-testid styling hooks. - [Preference dialog](/docs/frameworks/html/components/dialog.md): The stock c15t preference dialog on a plain HTML site, where visitors change each consent category, with how it opens, which categories it lists, its options, keyboard behavior and styling hooks. - [Floating trigger](/docs/frameworks/html/components/trigger.md): Add the c15t floating button that reopens the preference dialog on a plain HTML site, and set its corner, size, visibility and accessible name. - [Action buttons](/docs/frameworks/html/components/action-buttons.md): Make your own HTML buttons accept, reject, open preferences, dismiss a notice or reopen the banner with the data-c15t-action attribute and the c15t script tag, with no JavaScript. - [Preferences link](/docs/frameworks/html/components/preferences-link.md): Let visitors reopen c15t privacy settings on a plain HTML site from a footer link, a CMS menu item or a page builder link to the c15t-preferences fragment, with no JavaScript. - [Gated scripts](/docs/frameworks/html/components/gated-script.md): Hold a vendor's script tag on a plain HTML page until its consent category is allowed with type="text/plain" and data-c15t-category, including load order, copied attributes and what happens on withdrawal. #### Consent API - [window.c15t API](/docs/frameworks/html/api.md): Reference for window.c15t on a plain HTML page, covering the call queue, manual start, reading permissions and recorded choices, saving choices, opening the banner and dialog, and properties. - [Callbacks](/docs/frameworks/html/callbacks.md): Run code on a plain HTML page when c15t resolves the policy, when a visitor records a choice, when permissions change or when a request fails, with window.c15t events, DOM events and config callbacks. #### Advanced - [IAB TCF](/docs/frameworks/html/iab.md): Load the c15t IAB TCF build on a plain HTML page with one script tag, configure the CMP ID and vendors, and confirm TC strings from your own code. - [IAB GPP](/docs/frameworks/html/gpp.md): Add the IAB Global Privacy Platform API (__gpp) to a plain HTML page with the c15t.gpp.js script tag, so ad tech can read US state opt-outs and the TCF EU consent string. - [Content Security Policy](/docs/frameworks/html/content-security-policy.md): Allow the c15t script tag, its stylesheet, backend requests, gated scripts and embeds under a Content Security Policy on a plain HTML site, with nonces or allowed origins. #### Reference - [Script tag attributes](/docs/frameworks/html/attributes-and-api.md): Reference for the c15t script tag on plain HTML pages, covering the bundle files, every data attribute on the script tag, the DevTools tag and your own markup, and the modes the attributes select. - [Configuration](/docs/frameworks/html/configuration.md): Every option you can pass to the c15t script tag on a plain HTML page through a queued config call, including scripts with callbacks, the network blocker, theme tokens, presentation, translations and storage. #### Verify and troubleshoot - [DevTools](/docs/frameworks/html/dev-tools.md): Add the c15t DevTools panel to a plain HTML page with a second script tag to inspect consent, gated scripts, the resolved policy and events, and to test other countries. - [Troubleshooting](/docs/frameworks/html/troubleshooting.md): Fix a missing banner, vendor scripts that run before consent, script tag errors and blocked requests on a plain HTML site that uses the c15t script tag. - [Verify consent](/docs/guides/verify-consent.md): Check in a production build that vendor requests wait for consent, rejection survives a reload, preferences reopen and privacy signals apply. ### JavaScript - [Quickstart](/docs/frameworks/javascript/quickstart.md): Add the stock c15t banner, preferences and script gating to a JavaScript app built with Vite or another bundler, with no UI framework, using @c15t/browser. - [Upgrade from v2](/docs/frameworks/javascript/upgrade-v3.md): Upgrade a JavaScript app from the c15t v2 store and getOrCreateConsentRuntime to v3. Covers @c15t/browser, createConsentRuntime, the consent kernel, moved exports, callbacks, policies and stored consent. #### Scripts and embeds - [Scripts](/docs/frameworks/javascript/scripts.md): Register vendor scripts with @c15t/browser, createConsentRuntime or a consent kernel in JavaScript, and control what happens when a visitor withdraws permission. - [Iframe blocker](/docs/frameworks/javascript/modules/iframe-blocker.md): Hold YouTube videos, maps and other embeds in a JavaScript app until their consent category is allowed, with data-src iframes and the c15t iframe blocker in @c15t/browser, createConsentRuntime or your own kernel. - [Network blocker](/docs/frameworks/javascript/modules/network-blocker.md): Hold fetch and XMLHttpRequest calls in a JavaScript app until their consent category is allowed, with networkBlocker rules in @c15t/browser or createConsentRuntime, or createNetworkBlocker on your own kernel. - [Vendor consent](/docs/frameworks/javascript/vendor-consent.md): Let visitors allow a category such as marketing in a JavaScript app and still turn off one vendor in it, with the vendors option on createConsentRuntime and a vendor switch you render yourself. - [Clear on revocation](/docs/frameworks/javascript/clear-on-revocation.md): Delete the first-party cookies and Web Storage keys a consent category owns in a JavaScript app when that category is denied, with clearOnRevocation on init() or createConsentRuntime, or createClearOnRevocation on your own kernel. #### Customization - [Customize](/docs/frameworks/javascript/customize.md): Change the stock @c15t/browser banner, preference dialog and floating trigger in a bundled JavaScript app with theme tokens, CSS, layout, copy, legal links and UI options. - [Banner designs](/docs/customization/recipes.md): Five consent banner designs built with c15t, from one prop to your own markup, with tested code for React, Vue, Svelte, Astro and plain HTML. - [Theme tokens](/docs/customization/tokens.md): Change c15t's colors, type, radius, spacing, shadows and motion with theme tokens, and see every --c15t-* variable with its default. - [Dark mode](/docs/customization/dark-mode.md): Switch c15t's banner and dialog to dark colors with colorScheme, set your own dark tokens, follow your site's theme switch, and paint dark on the first frame in every framework. - [Tailwind CSS](/docs/customization/tailwind.md): Use c15t's styles with Tailwind CSS 4 or 3 in every framework, put utilities on c15t component parts, and use Tailwind's dark variant with c15t. - [Translations](/docs/frameworks/javascript/translations.md): Choose the language of the c15t banner and preference dialog in a JavaScript app, change its wording with i18n, and add languages with @c15t/browser or createConsentRuntime. - [Headless](/docs/frameworks/javascript/headless.md): Render your own consent banner and preferences in JavaScript, or connect a framework without a c15t adapter such as Solid, with createConsentRuntime from c15t/runtime. #### Consent API - [@c15t/browser API](/docs/frameworks/javascript/api/browser.md): Reference for the @c15t/browser ES module in a bundled JavaScript app, covering its entry points, init and createConsentClient, the client's methods and properties, events, page hooks and helper exports. - [Callbacks](/docs/frameworks/javascript/callbacks.md): Run code in a JavaScript app when a visitor records a consent choice, when permissions change, when a request fails or before the withdrawal reload, with c15t callbacks, client events and kernel events. #### Advanced - [IAB TCF](/docs/frameworks/javascript/iab.md): Add IAB TCF to a JavaScript app with the @c15t/browser IAB build, or attach the IAB module to a consent runtime or kernel you own. - [IAB GPP](/docs/frameworks/javascript/gpp.md): Add the IAB Global Privacy Platform API (__gpp) to a JavaScript app with mountGPP from @c15t/browser/gpp, so ad tech can read US state opt-outs and the TCF EU consent string. - [Transports](/docs/frameworks/javascript/transports.md): Choose where a JavaScript app's c15t policy comes from and where choices go, with the hosted, manifest, offline and custom transports for @c15t/browser, createConsentRuntime and your own kernel. - [Content Security Policy](/docs/frameworks/javascript/content-security-policy.md): Allow c15t in a JavaScript app under a Content Security Policy, covering backend requests, the stock UI's styles, nonces for vendor scripts and gated snippets, and embeds. #### Reference - [@c15t/browser options](/docs/frameworks/javascript/api/browser-options.md): Every option init() and createConsentClient() from @c15t/browser accept in a bundled JavaScript app, from the mode to scripts, blockers, callbacks, storage, presentation and the stock UI. - [createConsentRuntime](/docs/frameworks/javascript/api/runtime.md): Reference for createConsentRuntime from c15t/runtime, the framework-agnostic consent runtime behind every c15t adapter, with every option, what start and dispose do, and the runtime handle's methods. - [Kernel API](/docs/frameworks/javascript/api/kernel.md): Reference for the c15t consent kernel in JavaScript, covering how to get or create one, its snapshot and subscriptions, commands, setters, hydration, events and listener ordering. - [Consent snapshot](/docs/frameworks/javascript/api/snapshot.md): Reference for every field of the c15t consent snapshot a JavaScript app reads from the kernel, @c15t/browser or createConsentRuntime, grouped by the question each field answers. - [Script loader](/docs/frameworks/javascript/modules/script-loader.md): Reference for the c15t script loader in JavaScript, covering every Script field, lifecycle callbacks, updateScripts, disposal and createScriptLoader for a kernel you own. - [Persistence](/docs/frameworks/javascript/modules/persistence.md): How c15t stores consent choices in a JavaScript app, with the storage key, cookie domain and lifetime options, multi-tab sync, reconcile and clear, and createPersistence for your own kernel. #### Verify and troubleshoot - [DevTools](/docs/frameworks/javascript/dev-tools.md): Mount the c15t DevTools panel in a JavaScript app to inspect consent, scripts, policy and events for @c15t/browser, a consent runtime or a kernel. - [Troubleshooting](/docs/frameworks/javascript/troubleshooting.md): Diagnose vendor scripts that run early, unexpected reloads, empty custom banners, CORS errors, duplicate consent owners and policy resolution in a JavaScript app that uses @c15t/browser or c15t/runtime. - [Verify consent](/docs/guides/verify-consent.md): Check in a production build that vendor requests wait for consent, rejection survives a reload, preferences reopen and privacy signals apply. ## Integrations - [Integrations](/docs/integrations/overview.md): Find all c15t integrations for analytics, tag managers, advertising, email and SMS, chat and embedded content. - [Custom integrations](/docs/integrations/building-integrations.md): Gate a vendor that has no @c15t/integrations helper, or sync consent with an SDK your app already loads, using a c15t script configuration. ### Embeds - [Google Maps](/docs/integrations/google-maps.md): Gate a Google Maps iframe embed with c15t v3 so the map loads only after the visitor allows its consent category, in Next.js, TanStack Start, React, Nuxt, Vue, Astro, Svelte, SvelteKit, HTML or JavaScript. - [YouTube](/docs/integrations/youtube.md): Gate YouTube embeds with c15t v3 in Next.js, TanStack Start, React, Nuxt, Vue, Astro, Svelte, SvelteKit or JavaScript. ### Tag managers - [Google Tag Manager](/docs/integrations/google-tag-manager.md): Load a Google Tag Manager container before or after consent with c15t Consent Mode v2 signals, configure consent checks inside the container, and verify both in DevTools. - [Cloudflare Zaraz](/docs/integrations/cloudflare-zaraz.md): Sync c15t permissions to Cloudflare Zaraz purposes with the c15t cloudflareZaraz bridge, which runs on every page without loading a script, and check the tools it controls. ### Analytics - [Google Tag](/docs/integrations/google-tag.md): Load gtag.js for Google Analytics or Google Ads before or after consent with c15t Consent Mode v2 signals, and verify the consent commands in DevTools. - [Ahrefs Analytics](/docs/integrations/ahrefs-analytics.md): Load Ahrefs Web Analytics only after measurement consent with the c15t ahrefsAnalytics helper, and check it in DevTools. - [Adobe Analytics](/docs/integrations/adobe-analytics.md): Load an Adobe Data Collection Tags property only after measurement consent with the c15t adobeAnalytics helper, and check its extensions in DevTools. - [Amplitude](/docs/integrations/amplitude.md): Load the Amplitude Browser SDK 2 only after measurement consent with the c15t amplitude helper, which opts the SDK out on revocation and back in on a new grant. - [Cloudflare Web Analytics](/docs/integrations/cloudflare-web-analytics.md): Load the Cloudflare Web Analytics beacon only after measurement consent with the c15t cloudflareWebAnalytics helper, and check it in DevTools. - [Clearbit](/docs/integrations/clearbit.md): Load the Clearbit enrichment tag only after marketing consent with the c15t clearbit helper, and check it in DevTools. - [Microsoft Clarity](/docs/integrations/microsoft-clarity.md): Load Microsoft Clarity only after measurement consent with the c15t clarity helper, send Consent V2 storage signals and check them in DevTools. - [Databuddy](/docs/integrations/databuddy.md): Load the Databuddy SDK on every page with the c15t databuddy helper, switch its disabled flag and config from measurement consent, and check both in DevTools. - [Fathom Analytics](/docs/integrations/fathom-analytics.md): Load Fathom Analytics only after measurement consent with the c15t fathomAnalytics helper, set its SPA mode, and check it in DevTools. - [Heap](/docs/integrations/heap.md): Load the Heap config script and heap.js only after measurement consent with the c15t heap helper, and check it in DevTools. - [Matomo Analytics](/docs/integrations/matomo-analytics.md): Load Matomo after measurement consent with the c15t matomoAnalytics helper, or use Matomo's own consent mode, and check each mode in DevTools. - [Mixpanel](/docs/integrations/mixpanel-analytics.md): Load the Mixpanel SDK on every page with the c15t mixpanelAnalytics helper, which switches Mixpanel tracking on and off with measurement consent, and check it in DevTools. - [OneDollarStats](/docs/integrations/one-dollar-stats.md): Load the OneDollarStats tracker only after measurement consent with the c15t oneDollarStats helper, forward its data-attribute settings, and check it in DevTools. - [Hotjar](/docs/integrations/hotjar.md): Load Hotjar only after measurement consent with the c15t hotjar helper, and check its loader and recordings in DevTools. - [Hightouch](/docs/integrations/hightouch.md): Load the Hightouch Events browser SDK only after measurement consent with the c15t hightouch helper, and check page events in DevTools. - [LogRocket](/docs/integrations/logrocket.md): Load LogRocket session replay only after measurement consent with the c15t logRocket helper, including proxied setups, and check it in DevTools. - [Plausible Analytics](/docs/integrations/plausible-analytics.md): Load the Plausible Analytics tracker only after measurement consent with the c15t plausibleAnalytics helper, and check it in DevTools. - [PostHog](/docs/integrations/posthog.md): Load PostHog before or after measurement consent with the c15t posthog helper, choose its cookieless behavior, turn off PostHog modules you do not use, and sync consent with an SDK you already initialize. - [Promptwatch](/docs/integrations/promptwatch.md): Load the Promptwatch attribution client only after measurement consent with the c15t promptwatch helper, and check it in DevTools. - [Pirsch](/docs/integrations/pirsch.md): Load Pirsch Analytics only after measurement consent with the c15t pirsch helper, keep custom event bindings working, and check it in DevTools. - [RudderStack](/docs/integrations/rudderstack.md): Load the RudderStack JavaScript SDK after measurement consent with the c15t rudderstack helper, or map c15t categories to destination consent IDs, and check each mode. - [Segment](/docs/integrations/segment.md): Load Segment Analytics.js only after measurement consent with the c15t segment helper, guard your own track and identify calls, and check it in DevTools. - [Sentry](/docs/integrations/sentry.md): Configure Sentry's CDN or your own SDK with consent for error monitoring, Session Replay and user data. - [Rybbit Analytics](/docs/integrations/rybbit-analytics.md): Load Rybbit Analytics only after measurement consent with the c15t rybbitAnalytics helper, map its tracking options to data attributes, and check it in DevTools. - [Umami Analytics](/docs/integrations/umami-analytics.md): Load the Umami Analytics tracker only after measurement consent with the c15t umamiAnalytics helper, point it at a self-hosted instance, and check it in DevTools. - [Vercel Analytics](/docs/integrations/vercel-analytics.md): Load the Vercel Web Analytics script only after measurement consent with the c15t vercelAnalytics helper, choose the debug script, and check it in DevTools. - [Vercel Speed Insights](/docs/integrations/vercel-speed-insights.md): Load the Vercel Speed Insights collector only after measurement consent with the c15t vercelSpeedInsights helper, drop Web Vitals reports on revocation, and check it in DevTools. ### Chat and support - [Crisp](/docs/integrations/crisp.md): Load the Crisp chat widget only after functionality consent with the c15t crisp helper, pass its runtime settings and check it in DevTools. - [Front Chat](/docs/integrations/front-chat.md): Load the Front Chat widget only after functionality consent with the c15t frontChat helper, forward CSP nonces, clear the session on revocation and check it in DevTools. - [Intercom](/docs/integrations/intercom.md): Load the Intercom messenger only after functionality consent with the c15t intercom helper, set its region and check it in DevTools. ### Email and SMS - [Klaviyo](/docs/integrations/klaviyo.md): Load Klaviyo signup forms and onsite tracking only after marketing and measurement consent with the c15t klaviyo helper, gate your own events, and check it in DevTools. ### Ads and pixels - [Meta Pixel](/docs/integrations/meta-pixel.md): Load the Meta Pixel only after marketing consent with the c15t metaPixel helper, guard fbq event calls, and check it in DevTools. - [OpenAI Pixel](/docs/integrations/openai-pixel.md): Load the ChatGPT Ads Measurement Pixel only after marketing consent with the c15t openaiPixel helper, guard oaiq conversion calls, and check it in DevTools. - [Pinterest Tag](/docs/integrations/pinterest-tag.md): Load the Pinterest Tag only after marketing consent with the c15t pinterestTag helper, guard pintrk event calls, and check it in DevTools. - [Reddit Pixel](/docs/integrations/reddit-pixel.md): Load the Reddit Pixel only after marketing consent with the c15t redditPixel helper, guard rdt conversion calls, and check it in DevTools. - [TikTok Pixel](/docs/integrations/tiktok-pixel.md): Load the TikTok Pixel only after marketing consent with the c15t tiktokPixel helper, guard ttq event calls, and check it in DevTools. - [LinkedIn Insight Tag](/docs/integrations/linkedin-insights.md): Load the LinkedIn Insight Tag only after marketing consent with the c15t linkedinInsights helper, guard lintrk conversion calls, and check it in DevTools. - [Microsoft UET](/docs/integrations/microsoft-uet.md): Load Microsoft Advertising UET on every page with the c15t microsoftUet helper, send ad_storage consent defaults and updates, and verify both in DevTools. - [Snapchat Pixel](/docs/integrations/snapchat-pixel.md): Load the Snapchat Pixel only after marketing consent with the c15t snapchatPixel helper, guard snaptr event calls, and check it in DevTools. - [X Pixel](/docs/integrations/x-pixel.md): Load the X Pixel only after marketing consent with the c15t xPixel helper, guard twq conversion events, and check it in DevTools. ## Backend - [Backend overview](/docs/self-host/overview.md): What the c15t consent backend does, and when to use Inth or run @c15t/backend yourself with your own SQL database. - [Self-host the backend](/docs/self-host/quickstart.md): Run the c15t consent backend yourself with @c15t/backend, create its database schema with the CLI, mount it in Next.js, TanStack Start, Nuxt, SvelteKit or another server, and point your app at it. - [Upgrade from v2](/docs/self-host/upgrade-v3.md): Upgrade a self-hosted c15t backend (@c15t/backend) and the Node.js SDK (@c15t/node-sdk) from v2 to v3. Covers the database config, the schema migration, moved backend options, policy rules and the new createC15tClient() client. ### Guides - [Backend database setup](/docs/self-host/guides/database-setup.md): Connect a self-hosted c15t backend to PostgreSQL, MySQL or SQLite, apply migrations, and upgrade a v2 backend database. - [Policy configuration](/docs/self-host/guides/policy-packs.md): Author and validate the policy rules published by a self-hosted backend manifest. - [Caching](/docs/self-host/guides/caching.md): Cache public manifests and vendor lists while keeping request-specific initialization and subject state private. - [Deployment runtimes](/docs/self-host/guides/edge-deployment.md): Choose a backend runtime that supports your SQL driver and deploy static or edge-rendered clients against its HTTP endpoint. - [IAB backend configuration](/docs/self-host/guides/iab-tcf.md): Publish an IAB TCF policy and serve a cached Global Vendor List from a self-hosted c15t backend. - [Legal-document snapshots](/docs/self-host/guides/legal-document-snapshot-integration.md): Publish legal-document versions and sign evidence of the exact document shown by your application. - [Request logging](/docs/self-host/guides/observability.md): Inspect failed backend requests, enable request logs and send events to your existing logging pipeline. ### Reference - [Backend configuration](/docs/self-host/api/configuration.md): Options for a self-hosted c15t backend in c15t-backend.config.ts and c15tInstance, covering SQL storage, trusted origins, policies, signing, script routes and request logging. - [HTTP endpoints](/docs/self-host/api/endpoints.md): HTTP endpoints of a self-hosted c15t v3 backend for the manifest, /init, session reports, consent saves, identity links, the script tag and legal-document releases. - [Node.js SDK](/docs/self-host/api/node-sdk.md): Call the c15t consent API from server code with @c15t/node-sdk. Check consent before sending email, link users after sign-in, export a user's records, publish legal documents from CI and read experiment results. ## CLI - [CLI overview](/docs/cli/overview.md): Run the c15t CLI from @c15t/cli to add c15t to an app, migrate v2 code, manage Inth projects and migrate a self-hosted database. - [CLI quickstart](/docs/cli/quickstart.md): Use the c15t CLI to plan, review and apply c15t setup in an existing Next.js or React app, connected to an Inth backend. - [Agents and automation](/docs/cli/automation.md): Read JSON results from the c15t CLI, call it from another program with runCli, and give a coding agent a v3 setup or migration task. ### Commands - [setup](/docs/cli/commands/setup.md): Flags and file handling for c15t setup, which plans and applies c15t integration files in Next.js, React and JavaScript apps. - [Framework boilerplate](/docs/cli/commands/boilerplate.md): Generate the c15t quickstart files for Next.js, Nuxt, TanStack Start, Astro, React, JavaScript, a script tag, Vue, Svelte, SvelteKit or Solid with the c15t CLI. - [Codemods](/docs/cli/commands/codemods.md): Migrate source from c15t v2 to v3 with the c15t CLI codemods command, covering package imports, the provider, transports, moved exports, dev tools, policy presets, CSS variables, Tailwind CSS 3, callbacks, the Node.js SDK and backend config, and run the v1 to v2 source transforms. - [Hosted projects and authentication](/docs/cli/commands/hosted.md): Use Inth authentication and provisioning from the c15t setup workflow. - [Self-hosted migrations](/docs/cli/commands/self-host.md): Plan and apply database migrations for a self-hosted c15t backend with the c15t CLI self-host migrate command. - [Global flags](/docs/cli/global-flags.md): Flags every c15t CLI command accepts, for JSON output, the project directory, prompts and telemetry, plus exit codes. ## Comparisons - [Compare c15t with consent tools and custom code](/docs/comparisons.md): Compare c15t with consent platforms, browser libraries and custom code. See its strengths, setup requirements and the features its packages do not include. - [c15t vs building consent yourself](/docs/comparisons/build-your-own.md): Keep your own consent design without building every layer from scratch. Compare c15t with a custom implementation, including AI-assisted code. - [c15t vs Axeptio](/docs/comparisons/axeptio.md): Choose c15t to own your consent interface, application behaviour and backend. Compare Axeptio's visual editor, vendor APIs, scans and banner experiments. - [c15t vs Borlabs Cookie](/docs/comparisons/borlabs-cookie.md): Choose c15t for consent beyond WordPress, with native web components and a separate backend. Compare Borlabs Cookie's local records, service controls and scanner. - [c15t vs Complianz](/docs/comparisons/complianz.md): Choose c15t for consent across custom web applications. Compare Complianz's WordPress plugin and Shopify app, with clear differences in scans, records and legal tools. - [c15t vs consentmanager](/docs/comparisons/consentmanager.md): Choose c15t to own consent inside your web application. Compare consentmanager's site operations, custom interfaces, scans, experiments and connected-TV tools. - [c15t vs Cookie Control](/docs/comparisons/cookie-control.md): Choose c15t for native web components, individual vendor choices and backend ownership. Compare CIVIC's Cookie Control Premium and v9 accurately. - [c15t vs Cookiebot](/docs/comparisons/cookiebot.md): Choose c15t for native application components, explicit vendor controls and backend ownership. Compare Cookiebot's scan-based setup and the gaps c15t leaves. - [c15t vs CookieConsent v3](/docs/comparisons/cookieconsent-v3.md): Choose c15t when your application needs native consent state and a record backend. Compare CookieConsent's browser controls and the extra setup each approach needs. - [c15t vs CookieFirst](/docs/comparisons/cookiefirst.md): Choose c15t for native web framework coverage and a backend you can run. Compare CookieFirst's React support, service choices, scans and cookie-policy tools. - [c15t vs CookieHub](/docs/comparisons/cookiehub.md): Choose c15t for native web framework coverage and backend ownership. Compare CookieHub's React components, consent APIs, automatic scans and hosted logs. - [c15t vs CookieScript](/docs/comparisons/cookiescript.md): Choose c15t to own the consent engine, framework components and backend. Compare CookieScript's scans, developer controls and self-hosted banner option. - [c15t vs CookieYes](/docs/comparisons/cookieyes.md): Choose c15t for broader framework support, individual vendor choices and a supplied consent backend. Compare CookieYes SDKs and hosted services fairly. - [c15t vs Didomi](/docs/comparisons/didomi.md): Choose c15t for native framework components, open-source consent logic and backend ownership. Compare Didomi's SDKs, notice console and experiments. - [c15t vs Enzuzo](/docs/comparisons/enzuzo.md): Choose c15t for native consent components, custom product interfaces and backend ownership. Compare Enzuzo's hosted scans, legal policies and privacy operations. - [c15t vs Ethyca](/docs/comparisons/ethyca.md): Choose c15t for native web consent components and a deployable backend. Compare Ethyca's Fides code and Janus platform without confusing their scope. - [c15t vs iubenda](/docs/comparisons/iubenda.md): Compare c15t and iubenda to choose how much control you need over consent, your application, and your records. - [c15t vs Ketch](/docs/comparisons/ketch.md): Choose c15t to own consent components, vendor rules and the backend. Compare Ketch's connected privacy platform and the services c15t does not supply. - [c15t vs Klaro](/docs/comparisons/klaro.md): Choose c15t for native framework state and a backend you can run. Compare Klaro's open-source service controls, hosted records and scanning. - [c15t vs OneTrust](/docs/comparisons/onetrust.md): Choose c15t to own the consent engine, framework components and backend. Compare OneTrust's headless API, cookie scans and broader privacy operations. - [c15t vs Osano](/docs/comparisons/osano.md): Choose c15t for native consent components and control of vendor code and records. Compare Osano's classification, managed operations and service guarantees. - [c15t vs react-cookie-consent](/docs/comparisons/react-cookie-consent.md): Choose c15t when a React application needs consent rules, vendor controls and backend records beyond an accept-and-decline banner. - [c15t vs Silktide Consent Manager](/docs/comparisons/silktide-consent-manager.md): Choose c15t for native application state, regional policy and backend records. Compare Silktide's free browser manager and the setup c15t adds. - [c15t vs Sourcepoint](/docs/comparisons/sourcepoint.md): Choose c15t for consent inside a web product that your team owns. Compare Sourcepoint by Didomi's publisher campaigns, vendor controls, records and TV support. - [c15t vs tarteaucitron.js](/docs/comparisons/tarteaucitron.md): Choose c15t for native framework state and a deployable record backend. Compare tarteaucitron.js service controls and its separate Pro service. - [c15t vs Termly](/docs/comparisons/termly.md): Choose c15t for native application consent and control of your backend. Compare Termly's policy generators, site scans, hosted records and consent APIs. - [c15t vs TrustArc](/docs/comparisons/trustarc.md): Choose c15t for consent that your product team can change and host. Compare TrustArc's React integration, tracker scans, managed records and privacy operations. - [c15t vs Usercentrics](/docs/comparisons/usercentrics.md): Choose c15t for native framework components and control of the consent engine. Compare Usercentrics Web CMP features, service scope and costs. ## Project - [Contribute to c15t documentation](/docs/contributing.md): Edit the MDX source, validate both rendered and agent-readable outputs, and submit a focused change. - [Open source](/docs/oss/why-open-source.md): Which parts of c15t are open source, the Apache-2.0 license, where the code lives, and how the hosted Inth backend relates to the self-hostable c15t backend. - [Contribute to c15t](/docs/oss/contributing.md): Open an issue, set up the c15t monorepo with Bun, branch from canary, run the checks and add a Tegami release note for package changes. - [c15t Community Code of Conduct](/docs/oss/code-of-conduct.md): Guidelines for fostering an inclusive, respectful, and collaborative open-source community - [License](/docs/oss/license.md): Apache License 2.0 applies to c15t open source packages and this repository. ## Other - [v1.1.1 — Bundle Reduction Update](/changelog/1.1.1.md): Performance-focused release achieving a massive 58.9% bundle size reduction while introducing a new headless package for custom implementations. Removed framer-motion and Tailwind variants for faster load times with zero UX compromise. - [v1.1.2 — Optimistic UI & Bundle Optimization](/changelog/1.1.2.md): Performance-focused release introducing optimistic UI updates for instant user feedback, massive 58.9% bundle size reduction, and a new headless package for custom implementations with improved event handling. - [v1.1.3 — Enhanced Theming & Callback Improvements](/changelog/1.1.3.md): Major release introducing comprehensive theming support with dark/light/system detection, improved consent callbacks with structured data, and enhanced color scheme integration. Includes breaking changes for theme system and callback data structure. - [v1.1.4 — Translation System Fixes & Core Improvements](/changelog/1.1.4.md): Patch release addressing critical translation functionality issues across core and react packages. Introduces better modularity, improved fallback behavior, comprehensive test coverage, and enhanced translation utility functions. - [v1.1.5 — Tailwind CSS v3 Compatibility & Style Fixes](/changelog/1.1.5.md): Patch release fixing critical Tailwind CSS v3 compatibility issues by removing CSS layers and improving noStyle theme handling. Ensures proper style application and prevents conflicts with modern Tailwind configurations. - [v1.2.0 — Backend Architecture Overhaul & Translation System Refactor](/changelog/1.2.0.md): Major release introducing a complete backend refactor to oRPC client/server architecture with OpenAPI support, CORS middleware, and streamlined translation system with common strings consolidation. Includes breaking changes for translation structure. - [v1.2.1 — API Architecture Hardening, Translations Cleanup, and Tailwind v3 Fix](/changelog/1.2.1.md): Patch release refining the new API architecture with oRPC + OpenAPI, consolidating translations into common keys, fixing Tailwind v3 layer collision, and improving schema validation and configuration defaults. Introduces a type-safe Node.js SDK and centralized routing. - [v1.3.0 — Translations Package, SSR Consent, CLI Telemetry, and Next.js Restructure](/changelog/1.3.0.md): Minor release introducing the new @c15t/translations package with 8 languages, server-side consent initialization, CLI telemetry and onboarding upgrades, and a Next.js package restructuring that removes middleware exports. Includes backend translation support, improved schemas, and infrastructure/tooling updates. - [v1.3.1 — Next.js Data Fetching Refinements, Docs Fixes, and zh Translations](/changelog/1.3.1.md): Patch release refining Next.js initial data fetching in c15t mode, fixing quickstart links, improving core fallbacks, and adding Chinese (zh) translations. Includes dependency updates across packages. - [v1.3.2 — Next.js Relative URL Fix](/changelog/1.3.2.md): Patch release fixing a relative URL error in the Next.js integration. - [v1.3.3 — GTM Support, CookieBanner Focus Toggle, Next.js URL Validation](/changelog/1.3.3.md): Patch release adding Google Tag Manager support in core, allowing trapFocus={false} in CookieBanner, improving URL validation in Next.js, and updating React dependency. - [v1.4.0 — Ignore Geo, Provider DX, Store Config, A11y, CLI Fixes](/changelog/1.4.0.md): Minor release improving developer experience with ignoreGeoLocation and consentCategories, adding a debug-friendly store config prop, enhancing accessibility, and fixing CLI onboarding issues. - [v1.4.1 — Next.js: Custom c15t Headers for Initial Fetch](/changelog/1.4.1.md): Patch release adding custom c15t headers to Next.js initial data fetch, enabling backend provider overrides and more reliable initialization. - [v1.4.2 — Indonesian Translations, Provider Render Fixes, URL Normalization](/changelog/1.4.2.md): Patch release adding Bahasa Indonesia translations, improving provider rendering to prevent duplicate requests, normalizing URLs to remove trailing slashes, correcting consent logic, and refining banner animations. Includes dependency updates, caching improvements, and expanded tests. - [v1.4.3 — Theme Inheritance Fixes for Provider-Scoped Themes](/changelog/1.4.3.md): Patch release ensuring provider-level themes set in ConsentManagerProvider are correctly inherited by CookieBanner, ConsentManagerDialog, and ConsentManagerWidget for consistent styling. - [v1.4.4 — Theme Inheritance Stability and Maintenance Updates](/changelog/1.4.4.md): Patch release fixing theme inheritance in ConsentManager and related components, plus dependency updates and stronger tests to prevent regressions. - [v1.5.0 — Next.js Pages Support, GDPR Button Order, Backend Enhancements](/changelog/1.5.0.md): Minor release adding Next.js Pages Directory support and updating cookie banner button order for GDPR guidance, alongside backend and integration improvements. - [v1.6.0 – New Docs, Rebuilt Self-Hosting Backend, Better Callbacks, and More](/changelog/1.6.0.md): Minor release with a rebuilt self-hosting backend, a brand new docs site, improved consent checking, and callback improvements. - [v1.6.1 - React Scroll Lock Fix](/changelog/1.6.1.md): Patch release fixing a bug where the scroll lock persisted after the dialog has been dismissed. - [v1.7.0 - Script Loader & iFrame Blocking](/changelog/1.7.0.md): Minor release with a new approach to script loader and iFrame blocking. - [v1.7.1 - CLI Improvements & Bug Fixes](/changelog/1.7.1.md): Patch release with CLI improvements including bun support and bug fixes. - [v1.8.0 - Cross-Subdomain Consent, Legal Links, User Identification & EU Languages](/changelog/1.8.0.md): Feature release adding cross-subdomain consent persistence via cookies, configurable legal links in components, user identification tracking, and comprehensive language support with all 24 EU official languages. - [v1.8.2 - React Bug Fixes](/changelog/1.8.2.md): Patch release with bug fixes and improvements. - [v1.8.3 - Experimental Global Privacy Control Support & Bug Fixes](/changelog/1.8.3.md): Patch release with experimental Global Privacy Control support and bug fixes. - [v2.0.0-rc.0 — New Styling System, IAB TCF, Dev Tools, Backend v2 & More](/changelog/2.0.0-rc.0.md): Release candidate introducing a token-based styling system, IAB TCF 2.3 support, dev tools, backend v2, network blocker, GPC support and a complete documentation overhaul. - [v2.0.0-rc.5 — Policy Packs, Per-Policy GPC, Fallback Policies & Dev-Tools Improvements](/changelog/2.0.0-rc.5.md): Release candidate introducing policy packs for regional consent resolution, per-policy GPC support, fallback policies, policy inspection, and developer-experience improvements. - [v2.0.0-rc.6 — Smaller Client Bundles, Modular IAB, UI Primitives, and Flexible Policy Actions](/changelog/2.0.0-rc.6.md): Release candidate focused on smaller client bundles, extracted IAB support, shared UI primitives with framework adapters, flexible policy action layouts, and cleaner package styling/toolchain boundaries. - [v2.0.0-rc.7 — Theming Fixes, Simpler Tailwind Setup, and Clearer Customization Guidance](/changelog/2.0.0-rc.7.md): Release candidate focused on fixing theming regressions in the prebuilt UI, simplifying the Tailwind setup contract, clarifying the recommended customization ladder, and adding better manual coverage for CSS behavior across Tailwind 3, Tailwind 4, and plain CSS. - [v2.0.0 - New Styling System, Policy Packs, Backend v2 & More](/changelog/2.0.0.md): Stable release notes for c15t 2.0, covering the token-based styling system, policy packs, GPC, IAB TCF 2.3, bundled docs, c15t/skills, dev tools, backend v2, migration tooling, and the prebuilt UI. - [v2.0.1 - TanStack Devtools Support & Tailwind Import Ordering](/changelog/2.0.1.md): Patch release adding official TanStack Devtools support for @c15t/dev-tools and improving Tailwind v4 stylesheet import ordering in the c15t CLI. - [v2.1.0 Draft - v3 API Preview and Faster React Runtime](/changelog/2.1.0-v3-api-preview.md): Draft release notes for the opt-in v3 API preview, covering the kernel contract, React render isolation, v3 hosted transport alignment, and benchmark results from the @c15t/react v3 examples. - [v2.1.0 - Expanded Script Integrations and Provider Registry](/changelog/2.1.0.md): Minor release expanding the consent-aware script loader with a registry-backed provider system, more prebuilt integrations, stronger lifecycle utilities, CLI discovery updates, and German translation refinements. - [v2.2.0 - Consent-Aware Embeds, Configurable Controls, and More Integrations](/changelog/2.2.0.md): Minor release adding consent-aware Google Maps and YouTube components, a configurable consent controls toolbar, eight script integrations, a reusable SDK hook, policy-aware action styling, CSP nonce support, reliability fixes, and new translations. - [v2.3.0 - IAB TCF 2.4, New Integrations, and Netlify Geolocation](/changelog/2.3.0.md): Minor release adding IAB TCF 2.4 and Policies v5.0.b support, Front Chat, OneDollarStats, and Pinterest Tag integrations, and Netlify geolocation for the self-hosted backend. - [v3.0.0 - The Open Standard for Cookie Banners](/changelog/3.0.0.md): Major release notes for c15t v3. One consent engine for Next.js, TanStack Start, React, Nuxt, Vue, Astro, Svelte, SvelteKit and plain HTML, banners in the server HTML, the consent manifest, policy rules, GPP, publisher restrictions, new integrations and a rewritten self-hosted backend. - [v3.1.0 - Event Dispatchers, Google Additional Consent and TanStack Start 1.0](/changelog/3.1.0.md): Minor release adding an event dispatcher to every framework, Google Additional Consent for IAB TCF, and TanStack Start 1.0 support, with fixes for vendor switches, dialog scrolling, legal links, PostHog and the CLI. ## Optional Lower-priority pages — safe to skip for a shorter context. - [Cookie Policy](/docs/legals/cookie-policy.md): Which cookies and similar technologies c15t.com uses, why, and how to manage them. - [Privacy Policy](/docs/legals/privacy-policy.md): How Consent Management Inc collects, uses, shares and protects personal information on c15t.com, and how to contact us about it.