Skip to main content

FOR DEVELOPERS

Consent that lives in your codebase

Inth Consent runs on c15t, our open-source consent library. The banner ships in your bundle as React components and hooks, so it needs no extra request, you can style it like the rest of your product and you can debug it without leaving your app.

Ask your coding agent
Add inth to my app: inth.com/SKILL.md
Read the docs

Quickstart

One command adds a consent banner inside your codebase

One command adds the provider, banner and preference centre to your codebase. Review the generated code, change it and ship it through your normal workflow.

terminal

npx @c15t/cli generate

✔ Detected Next.js (App Router)

✔ Added ConsentManagerProvider

✔ Scaffolded cookie banner + preferences

✔ Done in 9s. Ready to review.

Fast because it’s bundled.

c15t is part of your app, not a script from someone else’s server. The banner needs no extra request and doesn’t shift the page when it appears, and in Next.js the consent check can start on the server. These are its numbers on Cookiebench’s Next.js test page.

Cookiebench score
95/100
Banner on screen
89 ms
Extra network for the banner
0 bytes

Change the code. Watch the banner follow.

Start with theme tokens and props. When that isn’t enough, rearrange the banner’s parts or build your own UI on the same consent state. Click a value in the snippet to change it.

app/layout.tsx
<ConsentManagerProvider
  options={{
    theme: { colors: { primary: '' } },
    colorScheme: '',
    i18n: {
      locale: 'en',
      messages: {
        en: {
          cookieBanner: { title: '' },
        },
      },
    },
  }}
>
  <ConsentBanner primaryButton="" />
</ConsentManagerProvider>

We value your privacy
We use cookies to improve your experience and measure traffic. Choose what to allow.

Swap the banner for your own UI. The consent state stays the same.

The stock banner and the inline widget are c15t components. Your own UI reads the same consent state through a hook, so a choice made in any of them shows up in the others.

consent-manager.tsx
import {
  ConsentBanner,
  ConsentDialog,
  ConsentManagerProvider,
} from '@c15t/react';

<ConsentManagerProvider
  options={{
    mode: 'hosted',
    backendURL: 'https://your-instance.c15t.dev',
    consentCategories: ['necessary', 'measurement', 'marketing'],
  }}
>
  <ConsentBanner />
  <ConsentDialog />
</ConsentManagerProvider>
We value your privacy
We use cookies to measure traffic and show relevant ads. Choose what to allow.
Shared consent state{ necessary: true, measurement: false, marketing: false }

Open-source foundation

Built on open-source c15t

c15t runs in your application. You own the interface, consent state and script gating while Inth handles the hosted infrastructure around it.

Star on GitHub

Style with your own CSS

Your banner looks like the rest of your product with your own components, tokens and themes.

<ConsentManagerProvider
  options={{ theme: { colors: {
    primary: '#ffc803'
  } } }}
/>
We value your privacyCustomize

i18n support

Keep banner copy and regional variants in the same translation system as your application.

English

We value your privacy

This site uses cookies to improve your browsing experience and analyze site traffic.

Reject AllAccept AllCustomize

Geo location

Serve the right banner, language and policy config for each region, or show no banner.

Regional rules
  • European UnionGDPR · opt-in banner
  • CaliforniaCCPA · GPC honored
  • BrazilLGPD · opt-in banner
  • QuebecLaw 25 · opt-in banner
  • Rest of worldNo banner shown

Let visitors change their mind from any page.

ConsentDialogTrigger is a small floating button that opens the privacy settings. Visitors can drag it to any corner and it stays where they left it. You choose when it shows.

shop.example

Drag the button to another corner, or use the arrow keys.

When the button shows

<ConsentDialogTrigger
  icon="fingerprint"
  showWhen="always"
/>

Videos and maps wait until the visitor allows them.

c15t puts a placeholder where each YouTube video or Google map goes. Nothing is requested from YouTube or Google until the visitor allows the category that embed needs.

  • Product tourBlocked
    This {provider} embed loads once you allow Marketing consent.
  • Our officeBlocked
    This {provider} embed loads once you allow Analytics consent.

With c15t

  • <YouTubeEmbed
      consentCategory="marketing"
      title="Product tour"
      videoId={videoId}
    />
  • <GoogleMap
      consentCategory="measurement"
      apiKey={apiKey}
      center={center}
    />

See every consent decision while you build.

The c15t dev tools dock a panel on your page in development. It shows where the visitor is, which policy matched, what each category is set to and which scripts were allowed to load. Accept or reject on the example page and watch the panel follow.

localhost:3000

We value your privacy

c15t DevTools

Connected

  • NecessaryOn
  • FunctionalityOff
  • MeasurementOff
  • MarketingOff

Run a free scan and find your privacy gaps

Find the change, get it reviewed and keep the decision with the code or production event that caused it.