YOUR DATA, IN PLAIN LANGUAGE
Privacy Policy
Effective 18 October 2026
FitFight lets named participants compete on who records the most Steps during a private Fight. This policy explains the data used by the FitFight iPhone app and its support website.
Data we collect
- Account data: your Apple or Google account identifier, email address (which may be an Apple private relay address), name and profile image when your sign-in provider supplies them, your FitFight username, chosen companion and optional custom description, and an encrypted server-only Apple credential used to disconnect Sign in with Apple when you delete your account.
- Referrals: a random sharing code and the accounts of the person referring and the person referred, with the time the referral was recorded. We use this to understand who brings friends to FitFight. These relationships stay private and are removed when either account is deleted.
- Fight data: the usernames invited to a Fight, its title, action and duration, membership status, aggregate scores, rank, and timestamps.
- Apple Health: with your permission, FitFight reads Step Count and other movement types (energy, distance, exercise, stand, flights, and workouts). It uploads Apple-merged daily totals across the history you allow FitFight to read, exact Fight-window Steps totals and chart checkpoints, workout summaries, and explicit workout deletion IDs. Only Steps score current Fights. Other activity stays private to your account.
- WHOOP: if you connect WHOOP, your WHOOP user ID and the strain, recovery, sleep, workout, heart rate, and body measurement data WHOOP shares with FitFight. See WHOOP below.
- Photos, videos, and posts: your optional profile photo, Fight posts, photos and videos, comments, and emoji reactions. Posts are shared with members of the Fights you select. The Public label on a post means all selected Fights, not an open internet page. Public Fights have join details visible to other signed-in users before they join.
- Bugs and feature requests: the title, details, votes, and comments, optional photos, videos, and files you post on the in-app board, shown to other signed-in FitFight Users with your username. Reports also include app and device information to help investigate a problem.
- Notifications: when you allow push notifications, an encrypted Apple push device token, language, permission status, and your notification preferences. Apple delivers enabled Fight reminders and post, comment, reaction, and daily-status alerts to your device.
- Support and operations: messages you send to support and limited server logs such as request time, IP address, device or browser information, and error details needed to keep the service secure and working. Private sync diagnostics also record when each sync ran, whether it started when you opened the app or in the background, how long Apple Health reads and network requests take, their success or failure, app version, and request sizes. These timing records contain no Steps values or raw Health samples and are not shared with other participants.
Apple Health
Apple Health access is read-only. FitFight uploads the supported individual activity samples you allow, with their HealthKit IDs, times, values, units, source name, source app identifier, source version, device model when available, and selected sync identifiers. It also stores merged daily totals, workout summaries, and explicit record deletions. FitFight does not read GPS routes or heart rate from Apple Health. Sync checkpoints stay on your phone. Raw samples are private and never added to Apple's merged Steps score or shown to Fight participants.
Participants in the same private Fight can see each other's username, aggregate Steps total for the Fight, relevant daily Steps totals shown in the Fight chart, rank, Fight title, Fight action, and duration. They never receive another participant's raw Apple Health samples. Daily Steps beyond the Fight are shared only through the separate choices described below.
WHOOP
Connecting WHOOP is optional. You start it under Profile → Settings → Connectors → WHOOP and sign in to WHOOP to approve access. By connecting, you agree to this Privacy Policy.
FitFight then reads everything the WHOOP API offers for your account: your WHOOP user ID; daily cycles (strain, calories, average and maximum heart rate, and steps); recovery (recovery score, resting heart rate, heart rate variability, blood oxygen, and skin temperature); sleep (sleep performance, consistency, efficiency, time in each stage, disturbances, respiratory rate, and sleep need); workouts (sport, start and end times, strain, heart rate, heart rate zones, calories, distance, and elevation); and body measurements (height, weight, and maximum heart rate). It copies your full WHOOP history when you connect, then checks for new data every hour and whenever WHOOP tells us something changed.
Fight Steps still come only from Apple Health. We may show your WHOOP stats to you and to the people you fight. We do not sell WHOOP data, use it for advertising, or use it to train AI models. Your WHOOP login tokens are stored encrypted on our server.
We keep WHOOP data, including past history, while your account exists. You can ask support to delete your WHOOP data at any time, and deleting your account deletes it. If WHOOP ends FitFight's access to its API, we delete WHOOP data as WHOOP's terms require.
Profiles, Friends, and optional sharing
Profiles start Private and Casual. Your name, username, photo and selected companion identify you in the app. Friendships require the other person to accept. We keep requests, accepted friendships, blocks and reports to provide these features and respond to abuse.
Competitive shows your Fight record and eligible head-to-head results. Private limits the shared profile to accepted friends and current Fight opponents. Public allows signed-in FitFight users to see what you share. Turning Competitive off hides profile statistics without changing Fight results. A past opponent keeps the shared Fight result, not ongoing access to your private profile. Private Fight titles, actions, posts and other members are not revealed through a public profile.
Daily Steps sharing is off by default. In Profile → Edit profile, you may separately choose friends, friends and current opponents, or all signed-in users for a Public profile, and a period of 7 or 30 days. This uses stored daily Steps, including each available day's time zone, freshness and completeness. Missing days are not treated as zero. It does not expand Apple Health collection or share other activity types. You can preview the audience and withdraw sharing at any time. Changing to Private disables public daily Steps sharing.
Removing a friend or blocking a person removes the corresponding profile access on subsequent requests. Joining a suggested public Fight is optional and does not enable profile or daily-history sharing. Existing participants still see the data shared within that Fight. Copies someone already viewed or captured cannot be recalled.
Profile measurement and pair artwork
When profile measurement is enabled, FitFight records successful profile opens using the viewer and target account identifiers, entry point, a random event identifier and server time. Self-views, private lock screens and duplicate event submissions are excluded. Repeat visits qualify at most once per 30 minutes in each direction. We also record friendship requests, acceptances and shared Fight participation, attributing them to the most recent profile visit in the preceding seven days.
These internal measurements help assess whether profiles lead to connections. Users do not receive named visitor lists or visit counts. Events contain no Health values, photos or companion descriptions. Events and exact username lookup attempts are kept while the accounts involved exist and are deleted when either account is deleted. Lookup attempts are also used to limit abuse. Only aggregate measurement reports are available to the FitFight operator.
Pair artwork generation is currently unavailable. No companion inputs are sent to an image-generation provider. Before enabling it, we will identify the provider, explain the inputs and obtain the participants' specific permission. Profile sharing and Apple Health authorization do not grant permission for external image processing.
Special companion purchases
Apple processes payments for Specials. FitFight does not receive your card or bank details. We send Apple a random purchase account identifier and keep verified transaction identifiers, the purchased Special, purchase time, price and currency when provided, and ownership and refund status. These records let us deliver and restore purchases.
A purchase belongs to the FitFight account used at checkout. Switching companions does not release it. Deleting that account does not request a refund from Apple. We remove the link to the deleted profile and retain the purchase record and retired artwork status for purchase reconciliation, recovery and disputes. Contact support for recovery or a review of retained purchase data. Refund decisions are made by Apple.
How we use data
We use the data above to:
- create and secure your account;
- create, invite participants to, score, and finish private Fights;
- show standings and shared Fight history;
- share posts and media with the selected Fight participants;
- deliver enabled notifications;
- run the in-app bugs and feature-request board;
- produce internal, aggregate statistics about how FitFight is used, such as how many people open the app, Fight activity, and average daily Steps, to learn whether FitFight helps people move more and to improve it. Only the FitFight operator sees them, except the published figures below;
- publish a few anonymous, aggregate figures on fitfight.app, such as the total Steps recorded. They never identify a person;
- answer support requests; and
- detect errors, abuse, and security problems.
FitFight does not sell personal data, show advertising, or use account, Health, or WHOOP data for advertising, cross-app tracking, or data brokerage.
Who processes data
FitFight uses Supabase for authentication, database, and uploaded-file storage, and Vercel to host server APIs and scheduled processing. These providers process data for FitFight under their service and security terms. We do not make private Fight or Health data public.
When configured, PostHog receives crash reports, app opens, the screens you visit, taps, key actions such as creating or joining a Fight, and session recordings, linked to your FitFight account identifier and username. We use them to find bugs and improve the app. Recordings hide all text and images on screen, so they do not show Health values, names or photos.
When configured, bugs and feature requests are copied to our Notion backlog with your username, report text, and attachment links. The FitFight administrator can send a report, its comments, device information, and attachment links to Cursor to investigate and prepare a fix.
When daily-status generation is configured and enabled for your account, OpenRouter and its model provider receive a limited summary: whether you are ahead, behind, or tied, participant count, days remaining, whether a sync is needed, and language. This request does not include your account identifier, username, Fight title, exact Steps totals, or raw Health samples.
When you connect WHOOP, WHOOP sends FitFight the data described above through its API. FitFight sends WHOOP only what it needs to sign you in and request that data. WHOOP's own privacy policy covers the data WHOOP keeps.
We may also disclose information when required by law, to protect users or the service, or as part of a business transfer subject to appropriate safeguards.
Permissions, revocation, and retention
You choose whether to grant Apple Health access. You can remove FitFight's access at any time in Apple Health or iOS Settings. Revoking access stops future reads but does not change data already used to score a Fight.
You can manage notification categories under Profile → Settings → Notifications and remove push permission in iOS Settings.
Connecting WHOOP is your choice. You can ask marc@marclamy.com at any time to disconnect WHOOP and delete your WHOOP data.
We keep account, Fight, posts, media, bugs and feature-request, uploaded Health data, and WHOOP data while your account exists. Support emails are kept only as long as needed to answer the request. Limited security and request logs follow Supabase's and Vercel's configured retention periods. Deleted data may remain temporarily in routine backups until those backups expire, or longer when required by law.
We keep sync timing reports while your account exists. Deleting your account removes its timing history.
Account deletion
You can permanently delete your account under Profile → Settings → Delete account. You do not need to contact support. Deletion removes your profile, username, uploaded photos, videos, files, Fight posts and comments, uploaded Apple Health Fight and daily totals, individual samples, workout summaries, WHOOP data, friendships, invitations, Fight memberships, scores, bugs and feature requests you posted, and every Fight you created. It also removes your participation from Fights created by someone else.
In-app deletion does not automatically remove report copies already sent to Notion or Cursor, or crash and usage records already sent to PostHog. Contact marc@marclamy.com to request a review of those copies and their retention.
When FitFight has a revocable Sign in with Apple credential, it asks Apple to revoke that credential as part of deleting the FitFight login and signing you out. If automatic revocation is unavailable, the app tells you how to disconnect FitFight in Apple settings. Deletion does not remove information stored in Apple Health or WHOOP, or delete your Apple ID or Google account. For Google sign-in, the app also attempts to revoke its locally saved Google authorization. You can remove FitFight access in your Google Account's third-party connections settings.
Your choices
You may ask to access, correct, or delete information associated with your account. Email marc@marclamy.com from the address connected to your account so we can verify the request.
Changes and contact
We may update this policy when FitFight changes. The effective date above will identify the current version. Questions about privacy can be sent to marc@marclamy.com.