Skip to content

Documentation

HTTP Consent Cookies

HTTP Consent Cookies

Agency Plan

Last updated Apr 4, 2026

Agency Plan Feature

This feature is available on the Agency plan and above. View pricing →

HTTP Consent Cookies bypass Intelligent Tracking Prevention (ITP) in Safari and Firefox by setting consent state via HTTP response headers from your own domain. This extends consent persistence from 7 days to up to 365 days.

Agency plan feature: HTTP Consent Cookies are available on the Agency plan and above. View pricing

Safari's ITP and Firefox's tracking protection limit JavaScript-set cookies to 7 days. This means visitors who accepted cookies a week ago are treated as new visitors, and the consent banner reappears. For sites with returning visitors, this creates a poor experience and reduces consent persistence rates.

HTTP Consent Cookies solve this by using a CNAME record on your domain (e.g. consent.example.com) that points to Kukie's cookie server. When a visitor gives consent, the banner script sends the consent state to your subdomain, and the server responds with a Set-Cookie header. Because the cookie is set via HTTP from your own domain, browsers treat it as a true first-party cookie with a full 365-day expiry.

How It Works

  1. You add a CNAME record to your DNS: consent.yourdomain.com pointing to cookies.kukie.io
  2. You verify the CNAME in the Kukie dashboard
  3. You enable HTTP Consent Cookies
  4. When a visitor gives or changes consent, the banner script sends the consent state to your subdomain
  5. The server responds with a Set-Cookie header (first-party, 365-day expiry)
  6. On the next visit, the banner reads the HTTP cookie to restore the visitor's consent choice

The JavaScript consent cookie is still set as a fallback. If the HTTP cookie is unavailable for any reason, the banner falls back to the JS cookie. This dual-write approach ensures consent is never lost.

Setup

Step 1: Add a CNAME Record

In your DNS provider, add a CNAME record:

  • Type: CNAME
  • Name: consent (or any subdomain you prefer)
  • Target: cookies.kukie.io
  • TTL: Auto

DNS changes can take up to 48 hours to propagate, though most providers update within minutes.

Step 2: Configure in Kukie

  1. Open your site in the Kukie dashboard
  2. Go to Banner Editor > Integrations tab
  3. Scroll to the HTTP Consent Cookies card
  4. Enter your consent subdomain (e.g. consent.example.com)
  5. Click Verify CNAME and wait for confirmation
  6. Toggle Enable HTTP Consent Cookies on
  7. Click Save

After saving, Kukie regenerates your site's banner bundle to include the HTTP cookie endpoint.

Step 3: Verify

  1. Open your website in an incognito/private window
  2. Accept cookies via the banner
  3. Open Developer Tools > Application > Cookies
  4. You should see a kk_consent cookie set on your root domain (e.g. .example.com) with a ~365-day expiry
  5. The cookie contains a JSON object with your consent categories, a consent ID, and a timestamp

Technical Details

Aspect JS Cookie (fallback) HTTP Cookie
Set by Banner script (JavaScript) Server (Set-Cookie header)
Name _cc_consent kk_consent
Expiry (Chrome) 180 days 365 days
Expiry (Safari/ITP) 7 days 365 days
Expiry (Firefox) 7 days 365 days
HttpOnly No No (readable by banner script)
SameSite Lax Lax
Secure Yes Yes

The banner script checks for the HTTP cookie first on page load. If found, it uses that consent state. If not, it falls back to the JS cookie.

Privacy and Compliance

HTTP Consent Cookies store only the visitor's consent preferences - not tracking data. The cookie contains:

  • The consent state per category (e.g. analytics: true, marketing: false)
  • A consent ID (UUID for audit trail)
  • A timestamp

This data is the same information stored in the regular JS consent cookie. Using HTTP cookies for consent state is not only compliant but actually improves compliance by ensuring the visitor's explicit choice is remembered reliably.

Troubleshooting

CNAME verification fails

DNS changes can take up to 48 hours. Wait and try again. Ensure the CNAME target is exactly cookies.kukie.io (not a different subdomain).

Check your browser's Developer Tools > Network tab. Look for a POST request to your consent subdomain (e.g. https://consent.example.com/api/v1/consent/http). The response should include a Set-Cookie header.

Ensure the toggle is enabled and the CNAME is verified (green checkmark in the Integrations tab). Clear your cookies and test again.

Was this helpful?

Listed On