GymFlow
GymFlow is a workout and nutrition tracking app for iPhone, published by Ofir Sofer. This policy explains what GymFlow does with your information.
GymFlow's core features — building programs, logging workouts, tracking progress, and logging food and nutrition — do not require an account, and that data is stored primarily on your iPhone. GymFlow also offers optional Coach/Athlete features: connecting with a coach, sharing training data, and receiving assigned workouts. Those features require a free GymFlow account, and if you use them, the specific data needed to support a connected coach is synced to GymFlow's cloud backend. This policy explains exactly what that means below.
GymFlow works with the following companies and services to provide the app. We do not use any analytics or advertising SDKs, and there are no other third parties involved.
The following is stored locally on your iPhone, in the app's private storage, and is not part of GymFlow's cloud backend:
If you don't use Coach/Athlete features, your completed workout sessions, progress, personal records, and body-weight and hydration logs also stay local-only. Your food diary and nutrition targets stay local-only unless you turn on nutrition sharing with a coach (see below). We have no copy of any of it, and if you lose or replace your device without transferring your data, we cannot recover it for you.
If you use Coach/Athlete features, some of this same training data is synced to GymFlow's cloud backend so a connected coach can see it — see “Coach and Athlete features” below for exactly what, and why.
Foods you log, your nutrition targets, and your diary are stored on your iPhone (see “Data stored locally on your device” above).
When you search for a food or scan a barcode, GymFlow sends what you searched for, or the barcode, to Open Food Facts and to the USDA's FoodData Central database (through GymFlow's server) to find nutrition information. Only the search text or barcode is sent — never your diary.
Photo Scan is optional and only runs when you start it. Before your first scan, GymFlow tells you that your photo will be sent to OpenAI and asks you to continue; if you choose Not Now, nothing is sent. When you scan, the meal photo you take or choose is sent through GymFlow's server to OpenAI, which identifies the foods in it and estimates their nutrition, and the result is returned to the app for you to review before anything is added to your diary. Photos are sent only when you use Photo Scan.
GymFlow's server does not store the photo or the scan results. It keeps a record of each scan request — an identifier, when it was made, and whether it succeeded — to count your scan allowance. If you aren't signed in to a GymFlow account, Photo Scan creates an anonymous account identifier for this purpose. For how OpenAI handles the photos it receives, see OpenAI's Privacy Policy.
Erase All GymFlow Data also resets your Photo Scan choice, so GymFlow asks again before your next scan.
Coach/Athlete features require a free GymFlow account. Creating one is entirely optional — if you only use GymFlow to plan and log your own workouts, you never need one.
GymFlow uses Supabase to provide accounts, authentication, and the cloud storage Coach/Athlete features depend on. When you create a GymFlow account, we store:
This account data is stored on Supabase's infrastructure and linked to your GymFlow account. It exists to make sign-in and Coach/Athlete features work.
An athlete connects to a coach by entering an invite code the coach generates and shares with them. Nothing is shared with a coach until you do this — connecting is always an explicit action you take.
Once you're connected, your coach can access:
Body weight and hydration logs are different: they are only visible to your coach if you separately turn on sharing for each one, in GymFlow. Both are off by default. Once you're connected to a coach, those entries are synced to GymFlow's backend regardless of the sharing toggle — the toggle controls only whether your coach can see them, so it can take effect immediately without waiting on anything to sync.
Nutrition sharing works differently again: it is off by default, you turn it on separately for each coach, and nothing about your nutrition leaves your device until you do. When it's on, GymFlow uploads only, for each day you logged food: your total calories, protein, carbohydrates and fat, how many foods you logged that day, and the nutrition target in effect that day (and the date it took effect). Food names, brands, individual meals, meal times, notes, barcodes and meal photos are never shared with your coach. Turning nutrition sharing off for your last coach, or disconnecting that coach, deletes the shared nutrition data from GymFlow's backend.
A coach can only ever see the athletes who have connected with them this way — never any other GymFlow user, and never by searching or browsing.
Disconnecting a coach (from either side, in the app) removes the coach's access to your protected data immediately, because that access is checked against the active connection every time. Historical records on GymFlow's backend may still exist after disconnecting, and a workout your coach previously assigned to you may remain visible on your own account, since it's treated as your copy of that workout once assigned. Disconnecting a coach is separate from deleting your GymFlow account — see “Deleting your data” below.
GymFlow offers two optional paid subscriptions, GymFlow Pro and GymFlow Coach. If you subscribe to either, two third parties are involved:
Your purchase is processed by Apple through the App Store. Apple handles payment, billing, renewals, cancellations, and refunds. We never see your payment details. Apple's handling of your information is governed by Apple's Privacy Policy.
We use RevenueCat to validate purchase receipts and to determine whether your subscription is currently active. Information that may be sent to RevenueCat includes:
GymFlow does not send your workout data, profile data, or profile photo to RevenueCat, to Apple, or to anyone else. RevenueCat receives subscription information, and, if you're signed in, your GymFlow account identifier — nothing more.
If you have not created a GymFlow account, your subscription is not attached to your name, email address, or any contact information — the app user ID is anonymous and generated by RevenueCat. If you have signed in, your subscription is associated with your GymFlow account identifier so your entitlements work correctly across the app.
For details of how RevenueCat handles the information it receives, including retention and international transfers, see RevenueCat's Privacy Policy. We do not restate their practices here, because they are theirs to describe and may change.
GymFlow can send workout reminders, rest timer alerts, and timed set alerts. These are local notifications, scheduled by the app on your device. GymFlow does not use push notifications, does not register a push token, and no server sends you anything.
Profile → Export GymFlow Data creates a JSON file of your local data and hands it to the iOS share sheet, so you can save or send it wherever you choose. The file is created on your device and deleted from the app's temporary storage afterwards. GymFlow does not upload it. Once you share it, where it goes is up to you.
None of these actions cancel a subscription. Subscriptions are managed through your Apple ID in the App Store, and are not automatically cancelled by Erase All GymFlow Data or Delete Account.
If you signed in with Apple, you can additionally remove GymFlow's access under your Apple Account's Sign in with Apple settings after deleting your account — on your iPhone: Settings → your name → Sign in with Apple → GymFlow → Stop Using Apple ID. This is optional, and separate from deleting your GymFlow account.
Neither Erase All GymFlow Data nor Delete Account affects records held by Apple or RevenueCat, who retain information according to their own practices; to ask about information those companies hold, contact us at the address below and we will help where we can.
We keep the account and Coach/Athlete data described above for as long as your GymFlow account exists and it's needed to provide those features — there is no separate fixed retention period. Deleting your GymFlow account removes the account and cloud data the Delete Account flow handles, described above. Apple and RevenueCat retain the information they separately hold according to their own practices; see their privacy policies linked above.
GymFlow is intended for people aged 16 and over. It is not directed at children, and we do not knowingly collect information from children. If you believe a child has used the app in a way that concerns you, contact us.
GymFlow is a tool for planning and tracking your own training. It is not a substitute for a personal trainer, physician, physiotherapist, or other qualified health or fitness professional, and it does not provide medical diagnosis or medical advice.
GymFlow cannot assess whether any exercise, weight, or training plan is suitable for you. Choosing what to train, how much to lift, and how hard to push is your responsibility, based on your own health, your experience, and any professional guidance you have.
Exercise carries an inherent risk of injury. If you experience pain, dizziness, faintness, unusual shortness of breath, or any other concerning symptoms, stop exercising and seek appropriate medical advice.
GymFlow is licensed under Apple's standard Licensed Application End User License Agreement, which serves as GymFlow's Terms of Use.
If this policy changes, the updated version will be posted on this page with a new effective date. Material changes will also be reflected in the app.
This policy is governed by the laws of the State of Israel.
Questions about privacy, or about GymFlow generally:
Ofir Sofer · hello.gymflow@gmail.com