Cookie policy
Last updated 26 September 2026
We use cookies and similar storage (like localStorage) for three things: keeping your game state, understanding how the puzzle is played, and measuring whether our ads work. You control most of this.
Categories
Strictly necessary
Always on. Without these the game can't function. We store your preferences (theme, locale), your puzzle progress, your streak, and your cookie choices.
Analytics (opt-in upgrade)
Anonymous stats run by default and never require consent. If you opt in, we upgrade analytics to include a persistent anonymous ID so we can understand retention, cohorts, and longer-term funnels. Provided by PostHog, hosted in the EU.
Marketing
Off by default. If you opt in, we load tags from Meta (Facebook and Instagram), TikTok and X so we can measure whether our ads on those platforms led to you visiting and getting the app.
Specific cookies and storage
| Name | Where | Purpose | Expiry | Category |
|---|---|---|---|---|
| tessera_consent | First-party cookie | Your cookie choices | 12 months | Necessary |
| tessera:locale | First-party cookie | Remembers English or Spanish | 12 months | Necessary |
| sb-* | First-party cookies (Supabase) | Keeps you signed in, if you have an account | Until you sign out | Necessary |
| tessera:result:*, tessera:progress:* (and tessera:hard:*) | localStorage | Your results and any puzzle in progress | Until cleared | Necessary |
| tessera_played, tessera:web-game | First-party cookie and localStorage | Which puzzle was your free web game, so the site can send you to the app after it | 13 months | Necessary |
| tessera:streak | localStorage | Your current and best streak | Until cleared | Necessary |
| tessera:theme | localStorage | Light / dark / system | Until cleared | Necessary |
| tessera:email-subscribed | localStorage | Hides the email signup form once you've subscribed | Until cleared | Necessary |
| tessera:email-dismissed | localStorage | Hides the email signup form if you've dismissed it | Until cleared | Necessary |
| ph_* | localStorage (PostHog) | Persistent anonymous ID for retention analytics | 12 months | Analytics (only if opted in) |
| tessera_attr | First-party cookie | The campaign that brought you (for example an ad on X), so a later visit is still credited to it | 30 days | Analytics or marketing (only if opted in) |
| _fbp, _fbc | Meta cookies | Ad attribution for Meta (Facebook and Instagram) campaigns | Up to 90 days | Marketing (only if opted in) |
| _ttp, _tt_enable_cookie, ttcsid* | TikTok cookies | Ad attribution for TikTok campaigns | Up to 13 months | Marketing (only if opted in) |
| _twq_*, muc_ads, personalization_id | X cookies | Ad attribution for X campaigns | Up to 2 years | Marketing (only if opted in) |
Changing your mind
Use the "Cookie preferences" link in the footer at any time. Withdrawing consent clears the relevant cookies and stops the associated scripts loading on future visits.
Other browser storage
We use localStorage for things the cookie law treats as cookies even though they technically aren't. Same rules apply.
Questions
See the privacy policy for the full picture, or email support@tesserapuzzle.com.