Last updated: October 9, 2026
This Privacy Policy explains what information MatchMetric collects, how we use it, who we share it with, and the choices you have. It is part of, and should be read together with, our Terms of Service. MatchMetric is operated by Everythings Fein LLC ("MatchMetric," "we," "us," or "our"), the operator of the website at https://www.matchmetric.app, our MatchMetric mobile applications for iOS and Android, and the related features, tools, and content (together, the "Service"). You can reach us at any time at hello@matchmetric.app.
MatchMetric is an independent USTA NorCal tennis-analytics tool. We are not affiliated with, endorsed by, or operated by the USTA, USTA NorCal, TennisLink, or any tennis governing body, and our ratings are estimates — not official NTRP ratings (see Terms of Service Sections 5 and 6). This Policy supplements Section 13 of the Terms; if there is any conflict between this Policy and the Terms, the Terms control.
1.1 This Policy applies to personal information we handle when you visit https://www.matchmetric.app or use our mobile apps, browse public pages, sign in, claim a profile, join or run a Co-Captain space, contact us, or make a purchase. The mobile apps present the same website inside a native wrapper and collect the same information in the same ways; they do not use advertising identifiers and do not track you across other companies' apps or websites.
1.2 This Policy does not govern the practices of third parties we don't control — including USTA, USTA NorCal, TennisLink, and ClubSpark (the public sources our data is drawn from), or the service providers listed in Section 6, each of which has its own privacy policy.
1.3 Much of the Service can be used without an account. As described in our Terms of Service Section 3.1, public player and team pages, ratings, match history, and the public tournament calendar can be viewed without signing in.
2.1 Email is your identity. However you sign in — a one-time "sign-in link", a password you choose, or Sign in with Apple or Google — your account is identified by your email address, and an email address is the only piece of personal information we need to give you an account. A password is optional; the sign-in link always works.
2.2 We collect very little. Beyond your email, we hold only what you choose to give us — an optional profile claim, an optional season goal, your email-digest setting (the nightly digest is on by default and you can turn it off any time — see Section 7), how you've arranged your own dashboard, any suggestions you send, and the team content you create as a captain or member.
2.3 We don't sell your personal information, and we don't share it for cross-context behavioral advertising. There are no advertising or cross-site tracking cookies on the Service.
2.4 Public player pages show public USTA information. Names, teams, home city, results, published levels, and team captain/co-captain roles come from public USTA NorCal league play (and we infer an age-band eligibility floor from the age-restricted leagues someone has entered — see Section 4.2) (and a public, nationwide USTA tournament calendar) and may appear for people who never signed up — including a team's listed captain, who may have a public profile even with no match results of their own. We are not the official custodian of that data. If you have a question about your data, email us at hello@matchmetric.app (see Section 4 and Section 10).
2.5 Payments go through Stripe. We never receive or store your full card number.
2.6 Our analytics are privacy-light and optional. Where configured, we use product analytics (Mixpanel) and error monitoring (Sentry) designed to avoid collecting personal information by default; both are inert until we turn them on. Analytics includes session replay — a playback of how a visit moved through the Service. It records the page as you saw it, but masks what you type, including search terms, access codes, and your email address (Section 3.3.2).
For convenience, Section 3.5 maps the categories below to the statutory categories of personal information used under California law.
3.1.1 Email address (for sign-in). To claim a profile, join a Co-Captain space, or use captain or paid features, you sign in with a sign-in link. You give us an email address and we email you a single-use, time-limited link. Your email address is your identity on the Service. We store your email (lowercased and trimmed), a timestamp of your last sign-in, and — once you have accepted the ratings disclaimer, which you do when you create an account or claim a profile — a timestamp of that acceptance.
3.1.1a Password (optional). You may also set a password so you can sign in without waiting for an email. This is optional and you can remove it at any time; the sign-in link keeps working either way. We never store the password itself. We store a one-way *scrypt* hash of it — a value that cannot be turned back into your password — together with the date you last set it, and a count of consecutive failed sign-in attempts so we can temporarily close the password path after repeated failures. Because we cannot read your password, we cannot tell it to you: if you forget it, you sign in with a sign-in link and set a new one.
3.1.1b Sign in with Apple or Google (optional). If you use one of these, the provider tells us the email address on your account and confirms it has verified that address. We receive no password from them, and we never see the credentials you use with them. We record which provider you used, so that we can show it to you in your settings. Because we identify accounts by email, signing in this way joins the account that already uses that address rather than creating a second one. Your use of Apple's or Google's own sign-in service is governed by their privacy policies.
3.1.2 The sign-up questions. When you create an account, we ask a short set of questions about your tennis and an answer is required to finish signing up: your name, where you play, whether you captain a team, and who referred you (how you heard about MatchMetric). You may also, optionally, give your USTA member number and a free-text note. If you sign up from a player profile's "Is this you?" sheet, we start these answers from that player's public record: their name, the city we show for them as where you play, and, if USTA lists them as captain or co-captain of a current team, that you captain a team. You can change any of them before you finish. We use these to understand who is using the Service and what to build next, and they are visible to MatchMetric administrators alongside your account. Finishing sign-up also requires agreeing to our Terms of Service and the ratings disclaimer, and we record when you did (Section 3.1.1). You may instead agree to them before you sign in, by ticking the same box on a player profile's "Is this you?" sheet; we then record your agreement when that sign-in completes and do not ask again at sign-up, but only where we can tie the sign-in to the browser in which you ticked the box (Section 3.3.4). Where we cannot, sign-up asks you to agree. Access codes issued during the earlier closed beta are retained on those accounts for record-keeping and are no longer required.
3.1.3 Profile claim (optional). You may "claim" a player profile. A claim is self-asserted and verified by email control only — it is not verified membership, it is non-exclusive (more than one person can claim the same player, and you can claim more than one player), and it does not transfer ownership of any underlying public record. The player names, teams, results, and levels shown in a profile come from public USTA sources, not from the claimant (see Terms of Service Section 8.5).
3.1.4 Season goal (optional). If you set a season goal for a player you've claimed (for example, a target level to reach, hold, or drop back to), we store that goal.
3.1.5 Email-digest setting. Your account carries a single setting that controls whether we send you the optional nightly digest. When you create an account or claim a profile, this setting is on by default, and you can turn it off at any time (see Section 7).
3.1.6 Suggestions and feedback. If you send us a suggestion through the Service — from the feedback button on any page, or the suggestion box — we store the text you submit. Signed in, it is associated with your account so we can follow up. You do not need an account to send feedback: signed out, we store only the text and, if you choose to give one, an email address to reply to. Leaving it blank sends the feedback anonymously, and we then have no way to identify you from it.
3.1.6a Email you send us. If you email one of our addresses (for example hello@matchmetric.app), that message — your address, the subject, the body, and any attachments — is received and stored by our email provider, Resend (Section 6.2), where our team can read it and reply. We use it only to answer you and to keep a record of the correspondence. You do not need an account to email us, and we do not add you to any mailing list for doing so.
3.1.6b Telling us which section you want. MatchMetric covers USTA NorCal. If you pick a different USTA section from the scope selector, we offer to tell you when it launches — and if you leave an email address for that, we store it with the section you asked for and the date. We use it for two things only: to email you when that section goes live, and to count how many people asked for each one, which is how we decide which section to add next. You do not need an account, and we do not add you to any other mailing list.
3.1.6c Notes from a feedback interview. If you take part in a feedback interview — a conversation with us about how the Service works for you — we record your answers against your account, so that what participants tell us can be compared and acted on. These notes are written by us from what you tell us during the conversation; we do not record the call, and we do not collect anything from it beyond the answers themselves. They are visible only to our team, are covered by the retention limits in Section 8, and are deleted with your account (Section 10). You can ask us for a copy of them, or ask us to delete them, at any time by emailing hello@matchmetric.app.
3.1.7 Team and captain content. If you join or run a Co-Captain space, we store the content you and your teammates create there, which may include: Co-Captain space membership and roles, match availability (in/maybe/out) and your singles/doubles preference, how and when each availability answer was given (Section 3.1.7a), saved and posted lineups, confirmations of a posted lineup (whether a player on it has said "Got it" or "Can't make it", whether that came through the team's answer link or the app, the account that gave it, if any, when, and which posted version of the lineup it was for), practice sessions (dates, start times, locations, courts, rounds, pairings, and games results), partner options, invite-code and join-request records (including co-captain links, Section 3.1.7b), and a record of what the space has done — for example, that a captain asked the team about a match, reminded players who had not answered, shared the team's answer link, or posted a lineup, or that the nightly digest sent a reminder or a captain summary — together with the match concerned and, where a person took the action, that person's account. Captains and members of a Co-Captain space can see other members' names and availability within that space. When a team's season has ended and USTA lists a team for the next league year in the same kind of league, at the same level and for the same gender, whose listed captain or co-captain is the old team's listed captain or co-captain, or a player the captain has claimed, or which has at least three of the same players making up at least half of the smaller roster, a captain of the space who could set up a space for that team can move the space to it. This creates a space for the new team, or uses one that captain has already set up for it if no one else has joined it and nothing has been recorded in it. The old space's other captains become captains of the new space only if they have claimed a player on the new team's roster, or are its listed captain, and do not already run another team's space in the same subflight; otherwise they are treated as members. A member is included if the player their membership is linked to is on the new team's roster, or, if not, if exactly one player they have claimed is on that roster and not already linked to someone else in the space, in which case that player becomes their linked player. Members who fit neither, and anyone already in another space for the new team, are not included. The new space also receives the old space's partner options for players on both rosters, its pending co-captain links, its pending requests to join other than those concerning a player who is not on the new roster, and, unless the captain chooses otherwise or the new space already has its own, its answer link (Section 3.1.7a); the remaining pending requests to join are closed. Those included, and anyone who later joins, can see each other's names within the new space as described above. Last season's availability, lineups, confirmations and practice sessions stay with last season's space, where its captains and members can still see them but no one can change them. If the new space is deleted, or the move is undone before anything has been recorded in it, last season's space can be changed again and the moved link and requests return to it. A member who was included can leave the new space at any time. The captains of a space can also see the account email address of each of its members and of each person asking to join it, and a signed-in user who opens a team's page, or the form for setting up or joining its Co-Captain space, can see the name and account email address of each captain of that team's Co-Captain spaces, so that teammates can tell which space is theirs. A captain included when a space is moved to a new season (above) is shown for the new team in the same way. When a captain posts a lineup, the members of the space see the players' names and lines, not win probabilities. A player on a posted lineup can confirm it ("Got it") or say they can't make it, which also records them as out for that match; a captain who posts a lineup they are on is recorded as having confirmed it. The captains of the space see, for each player on the lineup, whether that player has confirmed it, can't make it, or has since been marked out; a member sees only their own confirmation. When a captain changes a posted lineup, a confirmation carries over only for a player whose line and partner did not change. We use the record of what a space has done to show its captains what has already been sent, to show each captain what the space's other captains have done in the past week (for example, that a co-captain asked the team, reminded players, shared the team's answer link, or posted a lineup, and when, named by the first name of the player that co-captain's membership is linked to), and to count, within our own database, how many teams use Co-Captain each week; it is not sent to our analytics provider. Members of the space do not see what its captains have done.
3.1.7a Answering availability without an account. Each Co-Captain space has one answer link, which its captains share with the team, for example in a group chat. When a captain moves a space to its team's next season (Section 3.1.7), the same link moves with it unless the captain chooses a new one or the new space already has its own, so anyone who held it can then record availability for players on the next season's roster; a link that does not move no longer records answers. Anyone holding that link can, without signing in, choose a player on the team's roster and record that player's availability (in, maybe, or out, and a singles/doubles preference) for the team's upcoming matches. The nightly digest (Section 7.2) may also carry answer buttons that record availability for a rostered player whose profile the receiving account has claimed; those buttons work, for a limited time, for anyone who has the email, including someone it was forwarded to. The team's sheet records how each answer was given (through the link, by email, in the app, or by a captain) and when, and the captains of the space can see this beside each answer. An answer a player gave from their own signed-in account can be changed only from that account or by a captain, and a captain can correct or clear any answer. The link page shows the names on the team's roster and, for the match it asks about, how many players have answered in, maybe, or out; it does not show what any individual player has answered. Once a captain has posted a lineup for that match, anyone holding the link can also, for a player they choose on the roster, confirm the lineup ("Got it") or say that the player can't make it. "Can't make it" also records that player as out for the match, as an "out" answer through the link would. A "Got it" given through the link changes that player's "out" to "in", unless the "out" was given from the player's own account or set by a captain, in which case nothing is recorded. The link page says only that a lineup has been posted: it never shows which line any player is on or whether the chosen player is on the lineup, and it responds the same way either way. We store a confirmation only for a player who is on the posted lineup. To a signed-in visitor, it also marks which of those players are already linked to a member of the space, so that the visitor can join as themselves. If you are signed in when you answer through the link, we record your account with the answer; an answer given through an email button is recorded with the account the email was sent to. Answering through the link or an email button does not create an account and does not make you a member of a Co-Captain space. A captain can reset the link at any time, which stops the old link from working.
3.1.7b Co-captain links. A captain of a Co-Captain space can send a co-captain link. It works once, until the end of the seventh day after the day it was created, and makes the person who opens it a captain of the space, but only if that person has claimed a player on the team's roster, or the player USTA lists as the team's captain or co-captain, and does not already captain another team in the same subflight. For each co-captain link we keep the captain who created it, when it was created and when it expires, whether it has been used or turned off, and, once it has been used, the account it made a captain and when. The captains of the space can see who joined through a co-captain link, when, and whose link it was, each named by the player that person's space membership is linked to. When the team's USTA listing names a co-captain who is not yet a captain of the space, the captain creating a link is shown that player's name as a suggestion; nobody is invited automatically.
3.1.8 Teams and players you track (optional). Your account stores the lists you build for your own navigation: players you follow, teams you pin or remove from your "My teams" list, and the order you drag them into. If you rename a team in that list, give it an emoji, or pick a badge for it, we store those choices too. These lists — and any name you give a team in them — are private to you: they are never shown to the player or team concerned, grant you no access to anything, and are not used to rank or score anyone. You can change or clear them at any time from the list itself or from a player's or team's page.
3.1.9 Practice spaces (sign-up sheets). Anyone with an account can create a practice space: a page with a permanent link that an organizer shares — typically into a group chat — listing practice dates and who has signed up for each. We store the space's name, any location or notes, and for each practice the date, start time, number of courts, and the games planned for each round; the generated court assignments; and any scores entered.
Who runs it. A space has one or more organizers, recorded by email address. We store that address even when the person does not yet have a MatchMetric account, because adding a co-organizer you know by email is the ordinary way this is used; if they later sign in with that address, their account is linked to the grant.
Who is playing. Each sign-up is one of three things: an account that signed itself up (together with its claimed player profile, if it has one), an existing player an organizer selected, or a name an organizer typed for someone who has neither. An organizer may also record an estimated rating for a person — their own judgement of playing standard, used only to balance the courts, and never mixed into the estimated performance ratings described in Section 4.
Finding a co-organizer. When a super organizer adds another organizer, they can search MatchMetric accounts by name or email address, and the matches show that person's name and email address. This is the one place in the Service where one account holder can look up another they have no existing connection to, so it is deliberately narrow: only a super organizer of that space can search, only from three characters upward, only ten matches at a time, matching the start of an email address or the start of a word in a claimed profile's name — never an arbitrary fragment — and the rate is limited. We do not offer a browsable list of accounts, and searching is the only way these details appear.
Who can see it. Anyone holding the link can see the sheet — the practice dates, the names signed up, which rounds and courts each person is on, and how many spaces are left — without signing in and without our knowing who they are. Where a sign-up is matched to a claimed player profile, the sheet also shows that player's published ratings (singles, doubles and mixed), so an organiser can balance the courts. Those come from the public information described in Section 4 and are already shown on that player's own page; the sheet repeats them, it does not create them. Signing *yourself* up requires an account. Organizers additionally see the email address of any sign-up that has no claimed player profile, which is how they tell two people of the same name apart.
This is information about people who never signed up. If an organizer adds you to a sheet by name, records an estimated rating for you, or grants you organizer access by email, we hold that although you have no account and did not give it to us. Anyone with that space's link can see it. You can have it removed at any time: ask the organizer, or email us at hello@matchmetric.app and we will remove it — we will not require you to create an account in order to be taken off a sheet (Section 10.1).
3.2.1 If you buy a Premium subscription or a Co-Captain space credit, payment is processed by Stripe through its hosted checkout. We never receive or store your full card number or other sensitive payment details (see Terms of Service Section 9.3).
3.2.2 What we do store, on your account, is limited billing metadata that Stripe returns to us: a Stripe customer ID, your subscription status (for example, active, trialing, past due, or canceled), the date your current paid period ends, and a count of any Co-Captain space credits you've purchased. We use this to know what you've paid for and what features to unlock. Your payment is also governed by Stripe's own terms and privacy policy.
3.3.1 Product analytics (Mixpanel) — privacy-light and optional. Where enabled, we use Mixpanel to understand how the Service is used (for example, which features people use) so we can improve it. This integration is environment-gated and inert until we configure it — when it isn't turned on, no analytics data is collected and no analytics network calls are made. When it is on, it is designed to be PII-light:
utm_source=digest together with a campaign word such as utm_campaign=rating, match, wrapped or around, or utm_source=share together with utm_campaign=wrapped, match, team_result, invite, nudge, lineup or cocaptain) so we can tell how many visits came from the email or from a shared link rather than from someone typing our address. The label is a fixed word describing where the link came from, not an identifier for you — it is identical in everyone's copy, and the label itself does not identify who opened a message, or who shared or opened a link. When you press a Share button we record that a Share button was used and on which kind of page or for which kind of team message (an invitation to answer, a reminder, a posted lineup, or a co-captain link), not what was shared or with whom; and3.3.2 Session replay (Mixpanel) — sensitive fields masked. Where analytics is enabled, we record a playback of a visit so we can see where the Service confuses people: which controls they reach for, where they scroll, and where they give up. It is part of the same Mixpanel integration and is inert whenever analytics is (Section 3.3.1). What a replay can contain is deliberately narrow:
A replay is tied to the same identifier as the rest of analytics (Section 3.3.1) — an opaque device or account id, never your email. Replays are used only to find where the Service is confusing, are visible only to us, and are never sold, shared for advertising, or used to build a profile of you.
3.3.3 Error monitoring (Sentry) — optional. Where enabled, we use Sentry to capture technical errors (in the browser and on our servers) so we can fix bugs. This integration is also environment-gated and inert until configured. When it is on, it is set so that it does not attach personal information by default — it does not attach cookies, request headers, or your IP address to error reports — and sign-in link tokens, the tokens in the nightly digest's answer buttons, and team-invite codes are scrubbed from the web addresses in error reports, performance traces and the record of recent requests before they are sent, as is the internal id of a "This is me" player in the request described in Section 3.3.4.
3.3.4 Cookies and local storage. We use a small number of cookies and browser-storage values, and no advertising or cross-site tracking cookies. The sign-in session cookie, the sign-up cookie, and the three cookies used while you sign in (the sign-in return, sign-in agreement, and Apple or Google sign-in cookies below) are httpOnly (not readable by JavaScript); the functional preference cookies are ordinary, JavaScript-readable cookies.
Cookies:
httpOnly, signed cookie that keeps you logged in until you sign out or go 90 days without using the Service (Section 8.2); it is secure in production and is not readable by JavaScript;httpOnly cookie that holds your account's internal id (not your email) and records that you have answered the sign-up questions (Section 3.1.2), so that we do not send you back to them; it lasts up to a year, is secure in production, and is cleared when you sign out or delete your account;httpOnly, is secure in production, lasts 15 minutes (the life of the link), is sent only to the page that link opens, and holds a value tied to that one link — not your email address or name. We use it only to record your agreement when the link is opened in the same browser, and delete it once it has been used;httpOnly cookie holds that page's address for 30 minutes, so that opening the link in the same browser brings you back to it. It holds no email address or name, and we delete it when the link is used;httpOnly, is secure in production, and lasts 15 minutes. It holds a signed record of that one sign-in attempt: the security values that tie the provider's reply to it, which provider you chose, whether you started in our mobile app, the page in the Service to return you to, and, if you ticked the box agreeing to our Terms of Service and the ratings disclaimer on a player profile's "Is this you?" sheet and started the sign-in from that sheet in the same browser (not from our mobile app or from a link on another site), that you agreed (Section 3.1.2). We delete it when the sign-in succeeds; otherwise it expires; andBrowser local storage:
mm-recents): for each, its internal id, the name and the short description line shown at the time (for example a level and a city, or a team's season and record), when you opened it, and a few of that page's public numbers as they stood when that device last loaded the page, with when they were noted — for a player, how many matches their match log listed, their estimated performance rating, and the date of their most recent match; for a team, how many team matches it had played, its won–lost record, and the date of its most recent result. Search, the side navigation, and your dashboard show the list back to you as "Recent". When you open one of these pages again, your browser compares those numbers with the page's current ones to show a line such as "Since Oct 5 · 2 new matches" and to mark the matches added since as "New"; those numbers are not sent to us. "Clear" in search empties the list, and "Remove from Recent" removes one page together with its numbers;mm-profile-views); it stops counting once that device has a "This is me" player or, if you are signed in, once your account has claimed a profile. If you answer "This is me", it keeps that player's internal id, name, a short line such as their city and level, and when you saved it (mm-self), so that search can show that player at the top and, while you are not signed in, the home page and My Teams can show that player and their current teams; this is not a profile claim (Section 3.1.3) and gives no access to anything. If you answer "Not me", it keeps that player's internal id, for up to 200 players (mm-not-me), so that the device does not ask about them again. "Not you? Forget on this phone" (or "on this browser") removes the saved player. These lists and the list of recently opened pages are kept in your browser: they are not sent to us as lists, not put in a link, and not attached to your account. Links built from them are not requested from us in advance; opening or previewing one requests that page or a short summary of it, as an ordinary request for that page that does not indicate it came from these lists. There is one exception: if you open My Teams without signing in while a "This is me" player is saved, your browser asks us for that player's current teams using the player's internal id. Because only a device with a saved "This is me" player makes that request, it shows us, and our hosting provider's request logs, which player that device saved. We do not attach that request to an account, record the player in our usage statistics, or send the id to our error monitoring, and the answer contains only information already shown on that player's public profile and team pages. On another player's profile, a shortcut built from your "This is me" player can open a head-to-head comparison of the two of you; opening it requests a page whose address names both players, as choosing both players on the head-to-head page yourself would, and that page is recorded like any other page you visit (Section 3.3.1). Our usage statistics learn only what Section 3.3.1 describes, and these lists are masked in session replays (Section 3.3.2). Clearing site data removes them;mm-cocaptain-row-dismissed), so that it stays hidden on that device. It is not sent to us, and clearing site data removes it;mm-roster-draft). It is kept under a fingerprint of your account and the space rather than either id, so it is shown only to your account on that browser, and it is not kept or shown while one of our staff is viewing the Service as you. The list itself is not sent to us and is not shown to the players on it, to the space's other captains or to its members; our usage statistics learn only what Section 3.3.1 describes. It is removed when you clear it or clear site data, and a draft nobody has changed for 240 days is removed the next time a captain opens a Co-Captain space's This week or Next season page on that browser;Browser session storage:
We don't operate a third-party advertising network, a tracking-pixel network, or cross-site behavioral tracking on the Service.
We do not collect or store your password in readable form (we keep only a one-way hash that cannot be reversed — Section 3.1.1a), credentials you use with Apple or Google, full payment-card numbers, precise geolocation, biometric data, or special-category/sensitive data (see Section 10.2). The Service's permissions policy disables camera, microphone, geolocation, and browsing-topics access.
For California-law transparency, the table below maps what we collect to the statutory categories under the CCPA/CPRA, with the source, purpose, and the categories of parties we disclose it to. We do not "sell" or "share" (for cross-context behavioral advertising) any of these categories. The exact statutory category labels are among the items we have flagged for legal review (Section 10.5).
| CCPA/CPRA category | What it is here | Source | Purpose | Disclosed to |
|---|---|---|---|---|
| Identifiers | Email address; opaque internal app-user id; a name, email address, or estimated rating another user records for you in a practice space (Section 3.1.9) | You (sign-in); or another user, for practice-space entries | Authenticate you; operate the account; let an organizer run a practice sheet; let a super organizer find a co-organizer by name or email | Service providers (hosting, database, email, analytics); anyone holding that practice space's link; a super organizer of a practice space who searches for you by name or email (Section 3.1.9) |
| Commercial information | Subscription/credit status and billing metadata; whether a checkout started or completed and for which product (never amounts) | Stripe (when you pay); your use of the Service | Unlock and manage paid features; measure how well the paid flow works | Service providers (payment processing, hosting, database, analytics) |
| Internet/network activity | Product-analytics events, masked session replays, and error reports, where enabled | Your use of the Service | Understand, debug, and improve the Service | Service providers (analytics, error monitoring) |
| Inferences | Estimated performance ratings, bump outlooks, win-probability estimates; recognitions; team season summaries; the earliest year a player could have been born, inferred from the age-restricted leagues they have entered (Section 4.2) | Computed from public USTA match and league data | Provide the Service's core features | Service providers (hosting, database); publicly displayed or searchable, and shown to that player's teammates, partners and opponents (Section 4.2) |
| Public USTA-sourced data | Names, teams, home city, match results, published NTRP levels (see Section 4) | Public USTA / USTA NorCal / ClubSpark sources | Display public player and team pages; compute ratings | Service providers (hosting, database); publicly displayed |
4.1 This is the most important and least boilerplate part of how MatchMetric works, so we want to be plain about it.
4.2 Public player and team pages display names, teams, home city, match results, and published NTRP levels that USTA makes publicly searchable as part of running its leagues — including the public USTA NorCal year-end NTRP rating search and public league pages. We also surface a public, nationwide USTA tournament calendar drawn from public USTA/ClubSpark sources (event metadata, not NorCal-limited). This information may appear for players who have never signed up for or interacted with MatchMetric. We compute our own estimated performance ratings from those public match scores. From the same public results we also compute recognitions — short, positive facts such as a number of wins against higher-rated opponents, a winning streak, a record in deciding sets, tiebreaks, or the postseason, or the partner a player has played the most matches with (that partner is named, as they already are on the player's page) — and show them on that player's public page together with the matches each one is based on. We show a recognition only where a player holds one; we never show a zero or a negative one. We also use those public results and our estimated performance ratings to tell a signed-in user who has claimed a player profile, on their own dashboard and in their nightly digest (Section 7.2), about the players and teams around that player: a result of one of that player's teams in a team match they did not play, a rise in the estimated performance rating of a doubles partner or current teammate, an opponent they have played at least twice moving above them (with how many times the two have played each other, not who won), or a partnership milestone. About other players they describe only rises and milestones, never a decline, and they describe a match another player lost only in the result of a team match between that player's team and the claimed player's, or in the record of that player's partnership with the claimed player. They are shown only to that user, not on anyone's public page. From the same public results we also build a season summary for each team ("Wrapped"), shown on a public page for that team from its third match of a season: its record and finish, its record on each line and in deciding sets, the doubles pair with the best winning record among those who played at least three matches together and how many of those matches they won, the win in which the team's players played furthest above their estimated performance ratings going in and by how much, and how many matches each of its players played and on which lines. It names a team's own players only in those facts and names no player from the opposing team. It shows no player's rating or change in rating. A line's record can show how a player who played that line all season did, as the team's page already does. We also infer, from the age-restricted leagues a player has entered, the earliest year they could have been born — entering a 40&Over league in 2026 means born in 1986 or earlier — so captains can find players who qualify for an age-restricted team. This is a lower bound on age and nothing more: we hold no date of birth and ask for none, and a player who has only entered 18&Over simply has no inference at all.
Public player pages may be indexed by search engines and appear in search results, including searches for a player's name.
4.3 We are not the official custodian of this data. USTA and your league are the source of record. Our ratings are estimates, updated nightly on a best-effort basis — not official USTA NTRP ratings (see Terms of Service Sections 5 and 6). USTA is the only source of your official rating.
4.4 For a player who has not signed in or claimed a profile, the public information shown is the public USTA data described above; we don't hold an email address, account, or other personal information about them in the Service. There are two exceptions, and neither comes from us. First, another user can enter your name, your email address, or an estimated rating for you into a practice space they organize (Section 3.1.9); Section 3.1.9 explains how to have it removed. Second, if a Co-Captain space has been set up for, or moved to, a team you are rostered on, your availability for a team match (in, maybe, or out) can be recorded on the team's sheet whether or not you have an account (Sections 3.1.7 and 3.1.7a): by a captain or member of that space; by anyone holding that team's answer link, which may be the link the team used the season before; or through an answer button in a nightly digest email sent to an account that has claimed your player profile, by anyone who has that email, including someone it was forwarded to. Once a captain has posted a lineup you are on, anyone holding the answer link can also record that you have confirmed it or that you can't make it. That availability is visible to the captains and members of that team's Co-Captain space, and a lineup confirmation recorded for you is visible to its captains. In addition, the page that an answer button from a digest email about you opens shows your answer, and no one else's, to whoever opens it, and the answer link itself shows only how many players have answered in, maybe, or out, not any one player's answer. It is never used in the estimated ratings described in this Section, and we will remove it if you ask us at hello@matchmetric.app — you do not need an account to ask. Each is information a person chose to record about you, not anything we collected or inferred.
4.5 Questions about your data. If you have a question about the public information shown about you, email us at hello@matchmetric.app and we'll respond consistent with applicable law (see Section 10 and Terms of Service Section 13). Because a public profile may belong to someone who never created an account, we may ask for additional information to confirm a request relates to you (see Section 10.1).
5.1 We use the information described above to:
5.2 Legal bases (for users in the EEA/UK, to the extent the GDPR or UK GDPR applies to our processing). Where this framing applies to you, we rely on: performance of a contract (to provide the account, Co-Captain spaces, and paid features you ask for); legitimate interests (to secure, debug, understand, and improve the Service, to display public league information, and to send the nightly digest you can turn off at any time — each balanced against your rights); consent (for any non-essential analytics that require it under local law); and legal obligation (to keep certain records and respond to lawful requests). This framing is provided for transparency and is one of the areas we flag for legal review (see Section 10.5).
5.3 We do not use your information to make decisions that produce legal or similarly significant effects through solely automated processing.
6.1 We do not sell your personal information, and we do not share it for cross-context behavioral advertising. We don't run ads or ad-tracking networks on the Service.
6.2 Service providers (subprocessors). We share information with the vendors that run the Service for us, only as needed to provide it. Several are environment-gated and inert until we configure them — until then, they process no data:
Each provider has its own privacy policy. We may add or change providers; when we do, we'll update this list.
6.3 Legal and safety. We may disclose information if we believe in good faith that it's necessary to comply with a law, regulation, legal process, or governmental request; to enforce our Terms of Service; to detect, prevent, or address fraud, security, or technical issues; or to protect the rights, property, or safety of MatchMetric, our users, or the public.
6.4 Business transfers. If MatchMetric is involved in a merger, acquisition, financing, or sale of assets, information may be transferred as part of that transaction. We'll require the recipient to honor this Policy or give you notice and choices consistent with applicable law.
6.5 Aggregated or de-identified data. We may create and use aggregated or de-identified information (for example, overall accuracy or usage statistics) that does not identify you, consistent with the purposes described in Terms of Service Section 8.3 (operating, securing, improving, and providing the Service), and we may share such aggregated or de-identified statistics.
6.6 Public data display is not "sharing your personal information" in the ordinary sense — the public player pages described in Section 4 display information USTA already makes publicly searchable.
7.1 Essential emails (no opt-out). Sign-in link emails, billing and receipt emails, and service or legal notices are part of using the Service. By using the Service you consent to receive these electronically (see Terms of Service Section 3.6).
7.2 The nightly digest (on by default / easy to turn off). When you create an account or claim a profile, you are enrolled in the optional nightly digest by default. You can turn it off at any time from the account settings in the Service, and every digest email includes a one-click unsubscribe link. If a player you have claimed is on a team that uses a Co-Captain space, the digest may also ask whether you can play an upcoming team match, with buttons that record your answer (Section 3.1.7a), and send one reminder if you have not answered; if you are a captain of a Co-Captain space, it may give you a summary of how many players have answered and of any pending requests to join. From November 1 of a year to January 31 of the next, once a player you have claimed has no team match left to play in that year, the digest may also include, once for that year, a link to that player's season summary for it ("Wrapped"); that link is only ever added to a digest we are already sending. If you have claimed a player profile, a digest we are already sending may also include, under the heading "Around you", up to two short lines about that player's teams and the players around them, drawn from public league results and our estimated performance ratings (Section 4.2): the result of a team match that one of that player's teams played without them; that another player they have played against at least twice has moved above them in estimated performance rating during the past week, with both players' current estimated performance ratings and how many times they have played each other (not who won); that a doubles partner with whom they have played at least three matches has risen by 0.05 or more in estimated performance rating during the past week, or that a current teammate has risen by 0.10 or more; or that they have reached their 10th, 20th or 50th match with one partner, with that partnership's record where it has won at least as many matches as it has lost. These lines name the other player or team and link to public pages. We never include a decline in another player's estimated performance rating, another player's change of NTRP level, or a match another player lost, other than in the result of a team match between your claimed player's team and theirs. The only results described are those of your claimed player's own teams and, for a partnership milestone, the record of your claimed player's partnership with the person named. These are part of the same nightly digest, and turning the digest off or unsubscribing stops them as well. We don't send marketing or promotional email beyond this digest and the essential emails above.
7.3 All email comes from hello@matchmetric.app or a related MatchMetric sending address.
8.1 We keep your account data (email, claims, preferences, season goals, dashboard layout, suggestions, and Co-Captain space content) for as long as your account is active and as needed to provide the Service. Practice-space content (Section 3.1.9) is kept for as long as the space exists; because a space can outlive any one organizer, information about a person who has no account is kept until that person, or an organizer, asks us to remove it, or the space itself is deleted. The criteria we use to set retention periods are: how long your account stays active and uses the relevant feature; how long we need the data to operate, secure, and improve the Service; and any period we are required to keep records for billing/tax, security, abuse prevention, or legal compliance.
8.2 Some items are short-lived by design: sign-in link tokens are single-use and expire after 15 minutes (and are stored only as a one-way hash, never in raw form); sign-in session cookies expire after 90 days without activity. That 90 days is an *idle* period, not a fixed limit — using the Service refreshes it, so you stay signed in while you keep using MatchMetric and are signed out after a long absence. Signing out ends the session immediately.
8.2a Email correspondence (Section 3.1.6a) stays with our email provider for as long as we need it to handle your question and keep a record of the exchange. You can ask us to delete a message you sent us (Section 9).
8.3 When you delete your account (Section 10.1) or ask us to, we delete or de-identify the relevant data, subject to information we are required or reasonably need to keep — for example, records needed for billing/tax, security, abuse prevention, or legal compliance, and copies that persist in routine backups for a limited time before being overwritten. Aggregated or de-identified data may be retained indefinitely.
8.4 Public USTA league information (Section 4) is refreshed on a best-effort basis, typically nightly, and reflects what is publicly available from USTA sources; what we show reflects USTA's own records, which we don't control.
8.5 Information held by our service providers (Section 6) is also subject to their retention practices. Session replays (Section 3.3.2) expire on our analytics provider's own schedule rather than being kept indefinitely by us; we don't export or archive them.
9.1 We take reasonable measures to protect the information we hold. These include: storing any password you set only as a one-way scrypt hash with a per-account random salt, never in readable form, and temporarily closing the password path after repeated failed attempts; storing sign-in link tokens only as SHA-256 hashes, never in raw form; looking up team-invite codes by their SHA-256 hash, although the code in a Co-Captain space's invite link, which is also the team's answer link (Section 3.1.7a), is additionally kept in readable form so that the space's captains can show the link again, and the code in a co-captain link (Section 3.1.7b) is kept in readable form, so that the captain who created it can show it again that day, only until the link is used or turned off or a captain of the space next opens the co-captain sheet on a later day; signed, httpOnly session cookies that are secure in production; HTTPS enforced in production; and baseline security headers — including X-Frame-Options: DENY and a Content-Security-Policy that block our pages from being framed or embedded, X-Content-Type-Options: nosniff, and a strict referrer policy. Our analytics and error-monitoring integrations are configured to avoid collecting personal information by default (Section 3.3).
9.1a Staff access for support. A MatchMetric administrator can, for support and debugging, view the Service as your account — for example to set up a team for a captain who has asked for help, or to reproduce a problem you have reported. This is limited and recorded: every such session is logged with who started it, whose account it was, and when it started and ended. While it is active, that administrator cannot set or change your password, delete your account, or make any purchase or billing change, and we do not record product analytics or session replays for it. It does not give access to your email inbox or to any credential.
9.2 No method of transmission or storage is 100% secure. While we work to protect your information, we can't guarantee absolute security. You are responsible for keeping your email account secure, because anyone with access to your inbox can use a sign-in link to access your MatchMetric account (see Terms of Service Section 3.3).
10.1 Everyone. Whatever your location, you can:
How we verify requests. For requests tied to an account, we verify by confirming your control of the account email (typically the email you contact us from or a confirmation link). For a request about public information where there is no account, we may ask for additional information to confirm the request relates to you, because public profiles can belong to people who never signed up. You may use an authorized agent where the law allows; we may still ask to confirm the agent's authority and your identity. We will only act on a verified request, to protect against impersonation. (Deleting your account also cancels any active subscription. If we cannot reach our payment processor to cancel it at that moment, we stop and delete nothing rather than leave you being billed for an account that no longer exists — contact us and we'll resolve it.)
10.2 California residents (CCPA / CPRA). If you're a California resident, you have the right to know/access, delete, and correct the personal information we hold about you, and to be free from discrimination for exercising these rights.
10.3 EEA / UK. To the extent the GDPR or UK GDPR applies to our processing, and if you're in the European Economic Area or the United Kingdom, you may have rights to access, correct, delete, restrict, or object to our processing of your personal information, to data portability, and to withdraw consent where processing relies on consent. The legal bases we rely on are summarized in Section 5.2. To exercise a right, email hello@matchmetric.app; we aim to respond within 30 days. You also have the right to lodge a complaint with your local data-protection authority.
10.4 Verification, generally. For every request above, we will only act once we have verified it as described in Section 10.1. This protects you and others from unauthorized access, deletion, or disclosure.
10.5 Honest note / pending legal review. MatchMetric is an independent project, and parts of this Policy — including the California rights language and "do not sell/share" categories in Sections 3.5 and 10.2, the EEA/UK applicability, lawful bases, and rights in Sections 5.2 and 10.3, the international-transfer safeguards in Section 12, the per-category retention windows in Sections 8.1 and 8.5, the public-player-data lawful-basis in Section 4, the children's-data specifics in Section 11, and the data-processing agreements with our providers — are being finalized with legal counsel. We will honor verifiable requests we receive at hello@matchmetric.app consistent with applicable law.
11.1 The Service is intended for adults. You must be at least 18 (or the age of majority where you live, if higher) to create an account, claim a profile, join a Co-Captain space, or make a purchase (see Terms of Service Section 2.1). Public, read-only pages may be viewed without an account.
11.2 The Service is not directed to children, and we do not knowingly collect personal information from anyone under 13. If you believe a child under 13 has provided us personal information, contact us at hello@matchmetric.app and we'll take appropriate steps to remove it.
11.3 Public USTA data and minors. The public USTA league and tournament information we display (Section 4) may include people who are minors — for example, juniors or 13–17-year-olds who play in USTA league or tournament events that USTA makes publicly searchable. We do not knowingly create accounts for, or collect account information from, anyone under 18. A minor, or their parent or guardian, can contact us at hello@matchmetric.app with any question about a minor's public profile.
12.1 MatchMetric is operated from, and its service providers are primarily hosted in, the United States. If you access the Service from outside the U.S., you understand that your information will be processed in the U.S. and other countries, where data-protection laws may differ from those in your country.
12.2 Where we transfer personal information internationally and the law requires safeguards (such as Standard Contractual Clauses or the UK IDTA), we and our providers work to put appropriate safeguards in place. See the note in Section 10.5.
13.1 The Service relies on and may link to third-party services and sources — including Stripe, our email, hosting, analytics, and error-monitoring providers, and publicly available USTA, USTA NorCal, TennisLink, and ClubSpark information.
13.2 We don't control those third parties and aren't responsible for their content or privacy practices. When you follow a link to a third-party site, or when your payment is handled by Stripe, that party's own privacy policy applies (see Terms of Service Section 11).
14.1 We may update this Policy from time to time. When we do, we'll revise the "Last updated" date above and, for material changes (those that affect how we collect, use, or share personal information, or that reduce your rights), give reasonable notice — for example, by email (if we have your address) or by a notice in the Service.
14.2 For non-material updates, changes take effect when posted, or on the later date we specify, and your continued use of the Service means you accept them. For material changes, we will provide notice as described above; where the law requires your consent for a new use of information we already hold, we will obtain it before that use.
Questions about this Policy or a privacy request? Email us at hello@matchmetric.app. For account-deletion requests, see Section 10 and Terms of Service Section 13.