Profile
A profile defines everything the Consenti widget renders: which cookies / purposes it manages, the banner and modal layout, all button labels and actions, and the text copy for every supported locale. It is the single source of truth for the UI — not the widget config itself.
Get a working banner fast
You don't need to define a profile to get started. The widget ships 8 pre-built profiles (one per compliance group) that load automatically.
ts
import { ConsentiSetup } from '@consenti/ui'
// Pre-built GDPR profile loads automatically — no extra code needed.
new ConsentiSetup({ compliance: { type: 'opt-in' } })To tweak copy, buttons, or position without defining a full profile, use profileOverride:
ts
new ConsentiSetup({
compliance: { type: 'opt-in' },
profileOverride: {
mainBanner: {
heading: 'We value your privacy',
htmlText: 'We use cookies to improve your experience.',
buttons: {
'accept-all': { text: 'Accept All', style: 'primary', action: 'custom', cookies: '*' },
'reject-optional': { text: 'Reject Optional',style: 'primary', action: 'custom', cookies: '!' },
'customize': { text: 'Customize', style: 'secondary', action: 'manage' },
},
},
},
})Setting a cookie, category, or button to null instead of an object removes it from the resolved profile — e.g. cookies: { marketing: null }drops the "marketing" cookie entirely. See Removing a key for the full rules.
Three ways to get a profile
| Option | When to use it |
|---|---|
| Built-in default | Omit everything — a fully working English GDPR-model profile ships with the package. |
ConsentiProfile | Define your own cookies, copy, and categories in code for frontend-only installations. |
| API profile | Create profiles in the admin dashboard; the widget fetches them at runtime when api.enabled: true. |
ℹ️This page covers the common cases. For resolution order, every
ConsentiProfile field, multi-locale profiles, the GPC banner variant, and overriding a built-in compliance group, see the Advanced Profile reference.