How consent works
Optional categories are off by default. Accept all, Reject all and Customise are presented together. Rejecting optional storage does not block the site. You can reopen Cookie settings from every page footer. Withdrawing Preferences consent immediately removes the accessible watched-player and pinned-match storage. With Analytics consent, TennisDollar records anonymous daily event counts and load-time buckets. No user identifier, search text, page query, email or raw client error is stored in these totals. Aggregates are retained for up to 90 days and do not identify individual users. Allowlisted social sources and campaign labels can be counted; full UTM strings are not stored. Activation counts are browser-session measurements, not cross-device account tracking. No advertising trackers are installed.
Cookie and storage inventory
| Technology | Provider | Category | Purpose | Retention |
|---|---|---|---|---|
| td:social-source / td:analysis-activation | TennisDollar session storage | Analytics | Stores an allowlisted Instagram/TikTok source and up to two public match identifiers to count first/second analysis openings. Only with Analytics consent; no account identifier. | This browser tab’s session, or earlier consent withdrawal. |
| td:first-match-hint | TennisDollar local storage | Essential functional preference | Remembers dismissal of the one-time free-match hint. | Until browser storage is cleared. |
| td_access_token | Supabase / TennisDollar | Essential | Keeps a signed-in account authenticated. HttpOnly, Secure and SameSite=Lax. | Browser session when Remember me is unchecked; otherwise the access-token lifetime, normally about 1 hour. |
| td_session_mode | TennisDollar | Essential | Preserves your Remember me choice during secure session renewal. HttpOnly, Secure and SameSite=Lax. | Browser session, or 30 days renewed alongside a remembered session. |
| td_refresh_token | Supabase / TennisDollar | Essential | Renews an authenticated session without requiring another login. HttpOnly, Secure and SameSite=Lax. | Browser session when Remember me is unchecked; otherwise 30 days, renewed while active, subject to logout and provider expiry/revocation. |
| tennisdollar:consent:v1 | TennisDollar local storage | Essential | Records consent categories, policy version and choice timestamp so the banner respects your decision. | 180 days, then consent is requested again. |
| td_analytics_consent | TennisDollar | Analytics | Remembers optional analytics permission without a user identifier. | 180 days, or until consent is withdrawn. |
| tennisdollar:navigation:v1 | TennisDollar local storage | Essential functional preference | Remembers the navigation layout you explicitly select using the collapse or expand button. | Until you change the setting or clear browser storage. |
| tennisdollar:match-pins:v1 | TennisDollar local storage | Preferences | Remembers individual matches pinned on this browser when Preferences consent is on. | Until unpinned, Preferences consent is withdrawn or browser storage is cleared. |
| tennisdollar:watchlist:v1 | TennisDollar local storage | Preferences | Remembers players you star on this device. It is not written unless Preferences consent is on. | Until you remove players, withdraw Preferences consent or clear browser storage. |
Categories
Essential: secure authentication, session continuity and recording your privacy choice. These operate only where necessary to provide the requested service or remember the consent choice. Preferences: watched-player and pinned-match storage. Analytics: first-party aggregate product events and load-time buckets, sent only with Analytics consent. Marketing: no marketing or advertising technology is currently installed.
Infrastructure caveat
Optional first-party measurement is disabled until Analytics consent is granted. The hosting platform and security infrastructure may use network-level protections or strictly necessary technologies outside the application bundle. The operator must verify live production response headers and platform storage with OpenAI Sites before launch and update this inventory if anything else is present.