Consent Categories
How c15t organizes tracking technologies into five consent categories.
c15t organizes tracking technologies into five consent categories that align with GDPR and ePrivacy Directive requirements. Rather than asking users to approve or deny individual cookies or scripts, each category groups related tracking purposes together so users can make meaningful, informed choices about how their data is used.
Info
Why categories, not cookie lists? Many consent banners list individual cookie names like _ga, _gid, or _fbp. This is counterproductive:
- Technical names are meaningless to users — nobody knows what
_giddoes by reading its name. - Information overload drives "accept all" — a wall of cookie names pushes users toward dismissing the banner as fast as possible, which is the opposite of informed consent.
- Purpose is what matters — privacy regulations (GDPR, ePrivacy) require clear information about the purposes of data processing, not a cookie-by-cookie inventory.
- Cookie lists go stale — third-party scripts change their cookie names across versions, creating a maintenance burden that provides no real transparency.
c15t's category-based approach — "measurement", "marketing", "experience" — communicates purpose directly. Users understand why data is collected, not how it is stored.
Configure which categories your app supports in the provider:
The Five Categories
| Category | Default | Toggleable | Description |
|---|---|---|---|
necessary | true | No | Strictly necessary to operate or deliver the service |
functionality | false | Yes | Basic interactions and functionalities |
experience | false | Yes | Improve quality of user experience |
measurement | false | Yes | Measure traffic and analyze behavior |
marketing | false | Yes | Deliver personalized ads or marketing content |
The necessary category has disabled: true set internally, which prevents the user from toggling it off in the consent UI. All other categories can be freely toggled by the user.
Note that all categories except necessary have display: false by default. A category appears in the consent UI only if you include it in consentCategories. Categories not listed are hidden from the UI, but they still exist in consent state and may be affected by model-level behavior (for example, auto-grant in opt-out or null model flows).
Check if a specific category has consent using the has() method:
Configuring Categories
The consentCategories array controls which consent categories are presented to the user in the consent UI. Only categories you list in this array will appear as toggleable options in the consent banner or modal.
The necessary category is always implicitly included even if you do not add it to the array. You never need to worry about accidentally omitting it -- c15t ensures it is always present and always enabled.
For example, if you set:
then only those three categories will show toggles in the consent UI. The functionality and experience categories will not appear as user-configurable toggles.
In opt-in/iab flows, hidden categories usually remain false unless you explicitly set them. In opt-out/null flows, categories may be auto-granted even when hidden.
This gives you precise control over which consent choices to present to your users. A simple blog that only runs an analytics script might only need measurement. A media site with ad integrations would include marketing. A SaaS application with personalization features might add experience and functionality as well. You choose what is relevant to your site and c15t handles the rest - storing consent state, exposing it through hooks, and ensuring the right categories are active based on the user's choices.
You can dynamically update which categories are active: