Cookies on Keelify

Last updated: April 28, 2026.

The short version

We split cookies into three categories. Necessary cookies are always on because the app would not work without them. Analytics and Marketing are off by default and only set if you accept them in the banner.

  • Necessary — sign-in, your cookie choice, and your theme.
  • Analytics — anonymous page-view counts and Google Analytics.
  • Marketing — credits a friend or creator who shared Keelify with you, if you sign up for a paid plan.
Privacy policy

The full inventory

Every cookie and persistent browser-storage key Keelify uses, listed in plain language. We update this table when anything changes; the "Last updated" date above is the proof.

Necessary

sb-<project-ref>-auth-token

Cookie · HTTP-only

Keeps you signed in.Set by Supabase SSR (@supabase/ssr).
Session + sliding refresh

sb-<project-ref>-auth-token-code-verifier

Cookie · HTTP-only

Holds the OAuth PKCE verifier during sign-in.Set by Supabase SSR.
~1 minute

tm-theme

localStorage

Remembers your theme preference (light / dark / auto) on this device.Set by Client (src/lib/theme.ts).
Persistent

keelify:cookie-consent

localStorage

Remembers your cookie choice so we don't ask on every page.Set by Client (src/lib/cookie-consent/state.ts).
12 months

keelify_consent

Cookie

A short server-readable copy of your cookie choice so our middleware knows whether to set the marketing cookies before the page loads.Set by Client mirror of the consent decision.
12 months

Analytics

keelify_anon_id

Cookie · HTTP-only

Counts your visits to public pages anonymously so we can see which content people land on. Not joined to any account.Set by /api/public/page-view route.
12 months

_ga, _ga_<container_id>

Cookie

Site-usage analytics.Set by Google Analytics 4.
24 months

Marketing

keelify_ref

Cookie · HTTP-only

Credits a friend who shared Keelify with you if you sign up for a paid plan within 90 days.Set by captureRefIntoResponse middleware hook.
90 days

keelify_aff

Cookie · HTTP-only

Credits a creator who recommended Keelify if you sign up for a paid plan within 90 days.Set by captureAffIntoResponse middleware hook.
90 days

Updates to this policy

When we materially change which cookies we set, we bump an internal version on the consent record. Returning visitors see the banner again so the choice is freshly made. Cosmetic edits to this page (typos, clearer wording) do not trigger a re-prompt — only changes that affect the underlying cookies do.

Withdrawing consent

You can change your decision at any time using the "Manage cookies" link in the footer (or the button above). When you opt out of a category, we stop setting new cookies in that category immediately. Cookies already on your device — for example, a Google Analytics cookie set during a prior visit — remain until they naturally expire; you can clear them through your browser's cookie settings.