Cookies

Effective: 2026-09-11

1. What this page covers

This page lists every cookie MatViz sets, plus the other browser-storage mechanisms the app relies on — localStorage, IndexedDB, and Service Worker caches — described below. Two third parties also run code in your browser: the Cloudflare bot check on our sign-in and sign-up pages (Section 3), and YouTube's embedded player when you open a video a coach has attached to a practice plan or technique-library entry. Anything they store is set on their own domains, under their own policies, and is not listed here. This page supplements Section 6 of the Privacy Policy.

MatViz registers a Service Worker (/sw.js) that caches request and response pairs locally on your device so the app remains usable on a flaky gym or venue network. These caches stay on your device, are not transmitted to MatViz or any third party, do not carry tracking identifiers, and can be cleared at any time from your browser's site-data settings.

MatViz also uses IndexedDB to hold pending video-upload chunks on your device while a video is uploading, so the upload can resume if a tab crashes or the page closes mid-upload. Chunks are cleared when the upload completes; chunks left behind by an abandoned upload are cleared the next time the upload feature runs on that device, or when you clear site data. They stay on your device and are never transmitted as tracking data.

On devices used for scoring, streaming, or commentary roles, MatViz also stores a role-specific bearer token in localStorage (admin_token, scorer_token, camera_token, or commentator_token) so the app can authenticate that device's requests for the applicable role. Each token exists only on a device that has been used for that role, and persists until it is cleared — automatically on sign-out for admin_token, or manually via your browser's site-data settings for the others. A tablet a club sets up as an attendance kiosk stores a kiosk device token (mv-kiosk-token, scoped to that club) that lets the kiosk record check-ins; it is cleared when the kiosk session is exited, and club staff can revoke it from the club's kiosk settings.

Beyond these tokens, MatViz keeps a number of other keys in localStorage on your device: interface preferences (dismissed banners and tips, your last-selected tournament or view, recording quality, review-page adjustments); the wrestlers and weight classes you follow, including the wrestlers' names, so match notifications can be shown; an in-progress setup-wizard draft; and two offline queues — a kiosk check-in queue and a live-scoring event queue — that hold entries made while a gym or venue connection is down until they can be sent to MatViz when the connection returns. The offline queues exist precisely so that their contents can be transmitted to MatViz once you are back online; nothing else in localStorage is transmitted to MatViz or anyone else, and none of it is a tracking identifier.

2. Strictly necessary cookies (always set)

NamePurposeLifetimeAttributes
user_tokenSession cookie set after login.30 days from your last use, extended each time you use the Service, up to a maximum of 90 days from sign-in; or immediately on logout.HTTP-only, Secure, SameSite=Strict.
session_tokenShort-lived scoring-device role cookie.24 hours, or immediately on Exit.HTTP-only, Secure, SameSite=Strict.
csrf_tokenPaired with state-changing requests as a CSRF defense.24 hours (rotated on login/signup/logout).Secure, SameSite=Strict.

These cookies are essential for the Service to function and are exempt from consent under Article 5(3) of the ePrivacy Directive (2002/58/EC) and equivalent U.S. state statutes.

MatViz may also run on your club's own domain (e.g. register.yourclub.com) when the club has configured one; cookies set there are scoped to that domain only and are never shared with matviz.com.

3. The Cloudflare bot check (sign-in and sign-up pages only)

Our sign-in (/auth/login) and sign-up (/auth/signup) pages run Cloudflare Turnstile, an automated check that tells a person apart from a scripted sign-up. It exists because automated sign-ups make MatViz send login emails to people who never asked for them.

The check loads when one of those two pages opens — before you type anything. Your browser contacts challenges.cloudflare.com directly, so Cloudflare receives your IP address, your browser user-agent, and signals about your browser and how it interacts with the page. Cloudflare may store data on your device under its own domain as part of running the check; anything it stores there is set by Cloudflare, under Cloudflare's policies, and is not readable by MatViz. Cloudflare's own privacy documentation describes how it handles that data.

MatViz receives only a pass-or-fail result. This check is strictly necessary to protect the sign-up and login mechanisms from abuse, it is not used for tracking or advertising, and it runs nowhere else in the Service.

4. Functional cookies (NOT set today)

MatViz does NOT currently set any functional cookies (for example, a cookie that remembers a display preference like your default view). If we add one, this section will be updated to name it and state its purpose and lifetime, and the consent banner described in Section 5 will offer a choice for it before it loads.

5. Analytics cookies (NOT set today)

MatViz does NOT currently use any third-party web-analytics provider. If we add one (e.g., a privacy-respecting analytics SDK such as Plausible or PostHog), we will:

  1. Update Section 6 of the Privacy Policy listing the SDK and its data flow.
  2. Display a cookie-consent banner on your next visit (or on this page load, whichever comes first).
  3. Honor your "Essential only" choice by not loading the analytics SDK at all — not just suppressing its cookie writes.

6. Marketing / advertising cookies (NOT set today, NOT planned)

MatViz does NOT use third-party advertising cookies, retargeting pixels, or session-replay tools, and has no present plan to. Nothing MatViz runs profiles you across other websites. The Cloudflare bot check in Section 3 does inspect your browser environment, but only to tell a person from an automated sign-up, only on two pages, and only at the moment those pages load. If we ever add such a technology, the consent banner described in Section 5 will gate it before it loads.

7. Performance cookies (NOT set today)

MatViz does NOT currently use any performance cookies (for example, real-user-monitoring tools that measure page-load speed or Core Web Vitals from your browser). If that ever changes, the consent banner described in Section 5 will gate any such cookie before it loads, and this section will be updated to name it and describe its data flow.

8. Personalization cookies (NOT set today)

MatViz does NOT currently use any personalization cookies (for example, cookies that tailor content recommendations to you). If that ever changes, the consent banner described in Section 5 will gate any such cookie before it loads, and this section will be updated to name it and describe its data flow.

9. The cookie_consent choice cookie

When and only when an analytics, marketing, functional, performance, or personalization cookie is in scope, MatViz also sets a single first-party cookie named cookie_consent that records your choice (Accept all / Essential only / Customize). It is first-party, Path=/, Max-Age=31536000 (1 year), SameSite=Lax, Secure in production. It is NOT HTTP-only because the in-page banner must read it to suppress re-display. This cookie is itself essential to MatViz honoring your choice and is exempt from consent.

10. How to change your choice

Because no consent-requiring cookie exists today, the consent banner is not shown and there is nothing to change. When the banner is active, you will be able to change your choice at any time from the banner itself or by clearing your cookie_consent cookie in your browser settings. Changing from "Accept all" back to "Essential only" takes effect on the next page load: any already-loaded analytics SDK will not transmit further data, and its cookies will be expired.

11. Contact

Questions: hello@matviz.com.