How CCPA mode differs from GDPR
| Behavior | GDPR (default) | CCPA |
|---|---|---|
| Cookies before consent | Blocked (opt-in) | Allowed (opt-out) |
| Cookie guard | Installed immediately | Not installed |
| Banner purpose | Ask for permission | Inform and offer opt-out |
| Primary action | ”Accept All" | "Do Not Sell or Share” |
| GPC signal | Ignored | Honored as opt-out |
Configuration
Setregulation to 'ccpa' in your widget settings, or use 'auto' for client-side detection:
regulation is 'auto' (the default), the script detects the visitor’s region at runtime:
- GPC signal — If
navigator.globalPrivacyControlistrue, CCPA mode is used - Timezone — US timezones (
America/*) default to CCPA; all others default to GDPR
regulation: 'ccpa' in your site’s widget settings.
Global Privacy Control (GPC)
GPC is a browser-level signal that tells websites the user does not want their data sold or shared. Under CCPA, businesses must honor this signal. When Katla detects GPC in CCPA mode:- An opt-out is automatically recorded
- The consent API receives
consentType: 'optedOut' - The widget shows a confirmation: “Your Global Privacy Control signal has been honored”
- The settings button (gear icon) appears instead of the full banner
Checking GPC programmatically
.well-known/gpc.json
To fully comply with GPC, deploy a .well-known/gpc.json file on your domain:
”Do Not Sell or Share” UI
In CCPA mode, the consent banner shows:- Title: “Your Privacy Choices”
- Description: Informs visitors about data collection and their opt-out rights
- “Do Not Sell or Share My Personal Information” — Primary button that triggers opt-out
- “Cookie Preferences” — Opens the category customization modal
- “Close” — Dismisses the banner without action (cookies continue)
Consent records
CCPA opt-outs are recorded with:consentType: 'optedOut'(distinct from GDPR’s'rejected')regulation: 'ccpa'in the consent record- Categories set to
['functional']only
Google Consent Mode interaction
When a visitor opts out under CCPA, Google Consent Mode parameters are updated:| Parameter | Value |
|---|---|
ad_storage | denied |
ad_user_data | denied |
ad_personalization | denied |
analytics_storage | granted |
Privacy policy link
SetprivacyPolicyUrl in your widget settings to display a “Privacy Policy” link in the consent banner and preferences modal: