MADSET — Privacy Policy

Last updated 26 September 2026

MADSET is a personal training log. This policy explains what the app stores, what may leave your device for account functionality, encrypted restore, or an integration, and the controls available to you. MADSET does not sell data or share it with advertising networks. Optional MADSET news and offers require a separate opt-in; health and fitness records are never used for that targeting.

The short version. MADSET keeps an on-device copy so it works offline. After you sign in with Apple, the structured account data described below — including your workout history — is encrypted on your iPhone before it is uploaded to MADSET Health Vault for account restore. Workout photos and videos are not included. In versions with profile settings, the small profile photo is included in the encrypted backup. The current app does not use iCloud or CloudKit to sync new records; it may access its old private CloudKit container only to permanently remove legacy records uploaded by earlier TestFlight builds. MADSET has no advertising networks, no cross-app trackers, and no third-party analytics SDKs. In versions with account-message settings, basic first-party usage sharing is optional and off by default, as described below. Nothing you log is sold, shared for advertising, or used to build an advertising profile.

Data kept on your device

MADSET uses on-device SwiftData stores so logging continues offline. It does not use iCloud or CloudKit to sync new personal health or fitness records. Its temporary access to the old private CloudKit container is limited to deleting legacy records created by prior TestFlight builds. Local notifications and their preferences are handled by iOS. Depending on your iOS backup settings, ordinary on-device app files may also be covered by Apple's device backup; that is separate from MADSET Health Vault and is not an account-level MADSET sync.

Data sent for app functionality

Apple Health

If you grant permission, MADSET requests read access only to body mass, resting heart rate, and sleep analysis. It requests no write access. These values are used to show optional body and recovery context alongside training.

WHOOP

MADSET can offer an optional WHOOP connection when the service is available. If you connect it, the app may show account-scoped recovery, sleep, strain, and workout summaries and provides a Disconnect control. WHOOP OAuth credentials are held by the backend, not stored in the app, and MADSET never receives the WHOOP password.

Disconnect WHOOP asks the backend to remove the connection credentials and stop retrieving new summaries. Previously imported local history remains until you erase the relevant local data or delete the MADSET account.

Sign in with Apple

MADSET uses Sign in with Apple to verify the account used for Health Vault sync, restore, and deletion flows. Apple performs Face ID, Touch ID, passcode, or password authentication; MADSET never sees the Apple ID password. The backend verifies Apple's signed identity token and does not require your Apple email address. The display name Apple may provide on first authorization remains on the device. If you revoke MADSET in Settings → your Apple Account → Sign in with Apple, the app detects it on next launch and treats you as signed out.

Optional account messages and basic usage

In versions with these controls, Settings separates training and app updates, news and offers, and basic usage sharing. Training and app updates are functional service messages, including workout encouragement and app or service updates; they do not include offers. In current versions, all three choices start off. A forthcoming version will enable training and app updates on initial setup only when no prior preference exists. A saved off choice remains off, and an unclear older preference is not turned on. News and offers and basic usage sharing remain off until you separately opt in. These choices do not change local rest alerts. Online messages also require an active MADSET Apple sign-in and iOS notification permission; enabling the service choice does not guarantee delivery. You may turn these choices off in Settings.

To deliver messages, the backend stores an encrypted Apple push token, an installation identifier, account binding, consent choices, language, app version, notification authorization and production/development environment. Basic usage sharing adds only the UTC calendar day you last opened the app. No workout, health measurement, profile name, photo or birthday is included in this usage record or in the owner dashboard. Registered-account counts are not download counts. The dashboard does not read encrypted Health Vault contents.

Device registrations expire within 90 days unless refreshed. Campaign history and delivery-attempt receipts expire after 30 days. Turning basic usage off removes its recorded day when the server confirms the change. Offline changes remain pending and the app says so. Sign-out revokes the session used for delivery; account deletion removes the registration. A message already accepted by Apple cannot be recalled. Apple's acceptance is not proof that a message was received or read. MADSET does not collect notification-open events in this release.

Apple delivers push notifications. Our existing Vercel/Upstash backend stores the minimal operational records and schedules dispatch. The private owner dashboard requires a separately verified administrative sign-in through Cloudflare Access. No provider is given health data for marketing.

Limits on data use

Sign out, erase, and delete account

Children

MADSET is not directed at children and does not knowingly collect information from anyone under 13.

Changes

If this policy changes materially, the date at the top of this page changes with it.

Contact

Questions, data requests, or deletion requests: mad@beingmad.co