Privacy Policy
Last Updated: August 14th, 2026
Push Up Dungeon (the "App") counts your push ups with the camera and turns each one into a hit on something in a dungeon. It is built by Mango Lab ("we", "us", or "our"). This Privacy Policy explains what happens to your information when you use the App.
The short version: the App points a camera at you, and no video ever leaves your device. Pose detection runs entirely on your iPhone. There is no account and no signup, and we operate no server of our own. Four named third parties — Apple, RevenueCat, PostHog, and Google — are involved, as described below. None of them ever receives an image or a video frame.
We want to be precise rather than flattering here. It would be easy to write "we collect no data at all," and it would not be true: the App reports how it is used, and the sections below say exactly what that means.
If you do not agree with this Privacy Policy, please do not use the App.
Your Camera
This is the section that matters most, so it comes first.
The App uses the camera to count push ups. iOS asks for your permission before the camera is ever opened, and you may decline — but the App cannot count anything without it, because counting reps is the only thing the camera is for.
No video, and no still image, is recorded, stored, uploaded, or transmitted. Not to us, and not to anyone else. Camera frames are read into memory, measured for body position using Apple's on-device Vision framework, and discarded immediately. Nothing is written to disk and nothing is put on a network.
You can check this claim yourself rather than take our word for it: turn on airplane mode and the counter still works.
The only thing kept from a set is the numbers — how many reps counted, how many were attempted, how long it took, and why any rep was not counted. Those numbers are covered under the sections below.
The App does not request photo library access at all, and it cannot read your photos.
Data Stored on Your Device
All of the following is written to a local SwiftData store on your iPhone and — if you are signed in to iCloud — mirrored into your own private iCloud database as described under iCloud Sync below:
★ Your hero: the class you chose, your level, and your lifetime push up total.
★ Your progress: which dungeons and battles you have cleared.
★ Your training history: for each set, the reps counted, the reps attempted, how long it took, and the reason any attempt did not count.
★ Your streak and the day of your last session.
★ Preferences: your language, sound and haptics switches, whether you train on your knees, and your reminder hour.
The App does not ask for your name, email address, phone number, date of birth, weight, height, or any other identifier that could be used to contact or identify you. There is no user profile, because there are no user accounts.
iCloud Sync
The App syncs your progress through Apple CloudKit into your own private iCloud database. This applies to every player, free and subscribed alike, and is enabled by default whenever you are signed in to iCloud on your device.
This is Apple infrastructure, tied to your Apple ID and governed by Apple's Privacy Policy. The data lives in your iCloud account, not ours. It is not sent to a Mango Lab server, because we do not operate one.
We cannot read, access, or recover data stored in your private iCloud database. Neither can we restore it for you if it is lost. Apple does not grant developers access to a user's private database.
You can stop sync at any time by turning off iCloud for Push Up Dungeon in iOS Settings → your Apple ID → iCloud, or by signing out of iCloud. If you do, the App keeps working and your progress stays on that one device only.
Your Install Identifier
The first time the App runs, it generates a random identifier for that installation. It looks like 9F3C1A0E-4B2D-... and it is not connected to your name, your email, your Apple ID, or any identifier belonging to your phone. We could not work out who you are from it, and neither could anyone we send it to.
The same identifier is used by every service named below, so that a purchase and the usage figures belong to one installation rather than to several unrelated ones.
It is stored in your device's keychain, which means it survives deleting and reinstalling the App. That is deliberate: without it, a player who reinstalls would look to us like one person who quit and a second person who just arrived, and your subscription would have a harder time finding its way back to you. It does not sync between your devices; a phone and an iPad count as two.
You can see your own identifier at the bottom of the Settings screen in the App. It is printed there because it is the only thing your data is filed under, so a deletion request that does not include it names nobody.
Subscriptions
Two dungeons — 12 battles and 198 push ups — are free and replayable forever, along with your hero, every level it will ever reach, your history and your share card. A subscription unlocks the remaining 8 dungeons, 48 battles and 1,673 push ups, the ability to switch your hero's class, and every dungeon added later.
Payment is processed entirely by Apple. The App never sees or handles your card details, your billing address, or your Apple Account credentials.
We use RevenueCat to validate purchase receipts and to check whether your device is entitled to the paid dungeons. RevenueCat is a data processor acting on our behalf. It receives:
a) the install identifier described above
b) purchase and transaction data from Apple, including which plan and whether it is active
c) basic device and country information that Apple provides with the receipt
RevenueCat does not receive camera frames, images, or anything from your training history.
Analytics
This App is made by one person, and there is no other way to find out whether it actually works for anybody. So it reports how it is used to two services.
PostHog is used to understand where people get stuck: how far through the opening questions they get, whether they reach a first fight, and — most importantly — whether the rep counter is being unfair to them. It is hosted in the United States.
Google Analytics for Firebase is used to see how many people are playing and roughly which countries they are in.
What they receive:
a) the install identifier described above
b) which screens you reach, and how far through the opening questions you get before finishing or stopping
c) for each set: how many reps counted, how many were attempted, the reason any attempt did not count, which dungeon and stage it was, how long it took, your hero level, and whether you train on your knees
d) whether the paywall was opened and from where, and whether a purchase was started, finished, cancelled or restored
e) whether you changed language, changed hero class, set or cancelled a reminder, opened the share sheet, or tapped the feedback button
f) your device model, iOS version, app version, and the language the App is set to
g) your IP address, which both services use to estimate your approximate location at country and region level. This is not a precise location, and the App never asks for or uses location services
Unlike the rest of our apps, we do log custom events of our own, and item (c) is the reason. The gap between reps attempted and reps counted, broken down by the reason and read against whether someone trains on their knees, is the only way we can discover that the counter is too strict for real beginners. That is the single worst thing this App could do to somebody, and without these numbers we would never find out.
No camera frame, image, or video is sent to either service, ever. What is reported is numbers about a set, never footage of it.
We use the build of the Firebase SDK that does not collect Apple's advertising identifier (IDFA). The App does not track you across other companies' apps or websites, shows no ads, and sells nothing.
This analytics collection is a standard part of the App and cannot currently be turned off from within it. If you would prefer not to be included, you may stop using the App and delete it, and you may ask us to delete what has already been collected — see Data Retention and Deletion below. Data handled by these services is subject to PostHog's privacy policy and Firebase's privacy documentation.
Notifications
If you allow them, the App sends training reminders at an hour you choose, at most one a day, naming whatever creature is waiting in the next clearing.
These are local notifications. They are scheduled and delivered by your own device. No server is involved, no message is sent to us, and we do not know whether you opened one — except as one of the anonymous usage counts described in the Analytics section.
You can turn them off in the App's settings or in iOS Settings at any time.
Network Requests
The App makes only four kinds of network request, and no others:
a) RevenueCat's API, for purchase validation and entitlement checks, as described above.
b) PostHog's API, which receives the usage events described in the Analytics section.
c) Google's Firebase Analytics endpoints, which receive the app usage measurement described in the same section.
d) Apple CloudKit, which carries your progress to and from your own private iCloud database. This goes to your Apple account rather than to any server of ours.
The App contacts no other server. No camera data is included in any of them. The App is fully playable with no network connection at all.
What We Do Not Do
We never transmit video or images. Nothing from the camera reaches these services, or us, or anyone else, at any time, in any build.
The App contains no advertising and no cross-app tracking SDK. We serve no ads, we do not collect Apple's advertising identifier, and we do not track you across other companies' apps or websites. This is why the App never shows you an App Tracking Transparency prompt: it has nothing to ask you for.
We do not sell, rent, or share your information with a data broker.
We do not ask for, and could not obtain, any health or fitness data from Apple Health or any other source. The push up counts in the App are produced by the App itself and stay there.
Data Retention and Deletion
★ Local data: Deleting the App from your iPhone removes all of its local data. The one exception is the install identifier, which stays in your keychain so that a subscription can find its way back to you. Ask us and it will be deleted too.
★ iCloud data: Deleting the App does not by itself remove progress already synced to iCloud. That data is managed by you through iOS Settings → your Apple ID → iCloud, where you can remove Push Up Dungeon's iCloud storage. Because the database is private to your Apple ID, we cannot delete it for you.
★ Our systems: We hold no training data of yours on any server of ours, because we operate none.
★ Everything else: Your purchase record at RevenueCat and your usage records at PostHog and Google are all filed under the one install identifier. Email us and all of it will be deleted. Please include the identifier itself — you will find it at the bottom of the Settings screen in the App. Without it we cannot tell which records are yours, and we will have to say no.
Note that deleting the purchase record may prevent you from restoring your subscription, that it does not cancel the subscription itself — cancelling is done in your Apple Account subscription settings — and that Apple separately retains its own record of the transaction.
Children's Privacy
The App is not directed at children under 13, and we do not knowingly collect personal information from them. It requires no account and collects no name, email address, photograph, contact, or precise location from anybody of any age, so we have no means of determining a user's age.
Third Party Providers
Four third parties are involved in the operation of the App.
• Apple: Apple processes your subscription through the App Store and stores your synced progress in your own private iCloud database via CloudKit. Your relationship for this data is with Apple, under your Apple ID. We have no access to it. Apple's Vision framework also performs the pose detection, but it does so entirely on your device and sends Apple nothing.
• RevenueCat: RevenueCat validates purchase receipts and manages entitlements. It receives the install identifier, purchase and transaction data, and basic device information. It receives no camera data and no training history. RevenueCat acts as a processor on our behalf and honors data deletion requests.
• PostHog: PostHog processes product usage on our behalf: the install identifier, the events listed in the Analytics section, device and app version information, and your IP address for country-level location. It is hosted in the United States. It receives no camera data.
• Google (Analytics for Firebase): Google processes aggregate usage measurement on our behalf: an app installation identifier, device and app version information, automatically collected session events, a small number of our own events, and your IP address for country-level location. It receives no camera data.
Links to Other Sites
The App may contain links to sites we do not operate, such as the App Store for reviews or your email client to contact support. We have no control over, and assume no responsibility for, the content or privacy practices of any third-party site. We encourage you to review their policies.
Changes to This Policy
We may update this Privacy Policy from time to time. Changes will be posted on this page with a revised "Last Updated" date. Continued use of the App after a change takes effect constitutes acceptance of the revised policy.
Who We Are
Push Up Dungeon is built by Mango Lab, a small indie studio. You can reach us about any privacy question at: