CCPA / US State Privacy Laws Guide
opt-out — consent written silently; no banner unless the user visits a "Do Not Sell" page. Use compliance: { type: 'opt-out' } in your ConsentiSetup config.Consenti supports opt-out Compliance Groups required by CCPA, VCDPA, CPA, CTDPA, TDPSA, and similar US state laws.
Official references
- California Attorney General — CCPA page
- Cal. Civ. Code § 1798.100 — CCPA statute text
- Global Privacy Control (GPC) specification
Opt-out model vs. GDPR opt-in
| GDPR | CCPA / US States | |
|---|---|---|
| Default | All non-mandatory cookies denied | All non-mandatory cookies granted |
| Trigger | Banner on first visit | Silent auto-consent; provide opt-out UI |
| GPC | Optional honour | Required to honour |
Enabling CCPA mode
createConsenti({
compliance: { type: 'opt-out' },
})In your frontend widget:
new ConsentiSetup({
compliance: { type: 'opt-out' }, // sets all cookies to 'granted' on first load, GPC denies sale/sharing
})GPC — Global Privacy Control
The GPC signal (navigator.globalPrivacyControl === true) is treated as an opt-out under CCPA (required by California AG guidance). The opt-out and opt-out-strict compliance groups already default to gpcMode: 'honor' — set the profile's gpcMode to 'strict' (via profileOverride or the dashboard) for silent denial instead of showing the GPC banner variant:
- Widget detects GPC signal
- Automatically denies all
listenGpc: truecookies - Writes consent record immediately without showing banner
gpc_detected: trueis stored on the consent record
"Do Not Sell" / Opt-out button
Add a '!' button to let users opt out at any time:
{
"text": "Do Not Sell My Data",
"style": "secondary",
"action": "custom",
"cookies": "!"
}The '!' action sets all non-mandatory cookies to 'denied' and writes the consent record.
State-by-state coverage
| Law | Jurisdiction | Opt-out mechanism |
|---|---|---|
| CCPA / CPRA | California | GPC + '!' button |
| VCDPA | Virginia | Same as CCPA |
| CPA | Colorado | GPC required + opt-out UI |
| CTDPA | Connecticut | Same as CCPA |
| TDPSA | Texas | Same as CCPA |
| MHMDA | Washington (health data) | Requires explicit consent for health data |
compliance: { type: 'opt-out' } in the frontend widget.Colorado's sensitive-data carve-out
Colorado's CPA requires opt-in consent for sensitive data specifically, even though the rest of the opt-out group defaults to granted. Consenti models this as a per-region override — Colorado stays in the opt-out group (same banner behavior, same GPC handling as every other state above), but any cookie tagged cpraCategory: 'sensitive' defaults to denied specifically for visitors resolved to Colorado.
geoDataProvider that returns a US state ('geoip', 'maxmind', or 'hosted-geoip-lite') — the default timezone/language heuristic can't distinguish US states from each other, so it never knows a visitor is specifically in Colorado. Tag the cookie itself with cpraCategory: 'sensitive' (e.g. biometric or precise-geolocation data) for this to matter — it's a no-op for cookies without that tag.