Privacy Policy

Last updated Oct 25, 2026 · applies to Squatti

Effective date: 25 October 2026

Applies to: the Squatti iOS app (bundle ID com.nagubuilds.squatalarm) and its Home Screen widget

Developer and data controller: Nagarajan Seeni (NaguBuilds)

Contact: nagarajanseeni.dev@gmail.com

This policy explains what Squatti ("the app", "we", "us") does with information when you use it. This revision describes the app with the RevenueCat SDK integration.

1. Short version

  • There is no account. No sign-up, no email address, no password, no profile tied to your name.
  • Your alarms and progress stay on your iPhone. Alarms, squat counts, streaks, wake-up history, onboarding answers, your wake-up reason, your signature, rest days, badges and preferences are stored in the app's own storage on your device. We do not run a server that holds them.
  • The camera never records anything. Camera frames are analysed on your device to count squats and are discarded immediately. No photo, video or body-pose data is saved, and none of it is sent anywhere.
  • The app does send anonymous product analytics and crash diagnostics to PostHog, and may record a masked visual replay of a small share of sessions. This is described in sections 5 and 6.
  • No advertising, no data brokers, no cross-app tracking, no sale of data.
  • RevenueCat manages purchases, access and analytics, and chooses which paywall offer you see, using purchase history and an anonymous App User ID. Apple still processes payments. See section 8.

Sections 5, 6 and 8 describe information sent to services acting for us.

2. No account, no sign-in

Squatti has no registration, no login and no user profile on our side. We do not ask for your name, email address, phone number, date of birth or postal address, and we do not receive them from Apple.

If you email us for support, we obviously receive whatever you put in that email, including your email address. We use it only to answer you.

3. What the app stores on your device

The app keeps the following in its own storage on your iPhone (its app container and a shared storage area used by the Home Screen widget):

  • Alarms: time, repeat days, alarm name, chosen sound, squat target, Strict Mode setting, and whether the alarm is on.
  • Wake-up history: for each day, the alarm outcome, your squat target, squats completed, how long the challenge took, and whether the day was skipped.
  • Streaks and progress: current streak, longest streak, lifetime squats, total wake-ups, and earned badges.
  • Onboarding answers: your answers to the setup questions about your wake-up habits, plus your usual and desired wake-up times.
  • Your commitment: the wake-up reason you type and the signature you draw, stored as an image, together with the date you signed.
  • Preferences: rest days, streak deadline, comeback alarms, Strict Mode default, default squat target, default sound, reminder settings, and your chosen in-app language.

None of this is uploaded to us. It stays on the device until you delete it in the app, reset the app, or delete the app. If you use iCloud Backup or an encrypted device backup, iOS may include the app's data in that backup; those backups are handled by Apple under Apple's terms and privacy policy, not by us. The app itself does not use iCloud sync.

Note on the widget. So the Home Screen widget can draw the next alarm, the app copies a small snapshot (next alarm time, alarm name, squat target and current streak) into a shared storage area (App Group group.com.nagubuilds.squatalarm) that only the app and its own widget can read. This stays on your device.

4. Camera

Squatti asks for camera permission so it can count your squats.

  • The camera runs only while a squat challenge is open, or while you try the squat demo during onboarding. It does not run in the background and it does not run at any other time.
  • Each frame is analysed on your device with Apple's Vision framework to estimate your body position, and is then discarded immediately in the same step. Frames are never buffered, written to disk, or sent over the network.
  • Only the joint positions needed to judge a repetition are read from a frame, and only the derived angles survive that step. Body-pose coordinates are not stored and never leave the device.
  • The app does not record video or photographs and does not use your photo library.
  • The live camera image you see on the challenge screen is a preview only.

You can refuse or withdraw camera permission in iOS Settings. Without it, the squat challenge cannot count reps, and the app offers a skip so you are not locked out of stopping your alarm.

5. Anonymous analytics and crash diagnostics

The app uses PostHog (PostHog Inc.) to understand how the app is used and to find crashes. PostHog acts as our processor. Data is sent over HTTPS to PostHog's United States cloud (us.i.posthog.com).

Analytics starts when the app launches. The app does not include an in-app switch to turn it off. You can ask us to delete your anonymous records, or object to this processing, using the contact details in section 11.

What is sent

An anonymous installation ID. PostHog's SDK generates a random identifier for the installation. It is not your Apple ID, not your name, and not linked to any account, because there is no account. It is stored with the app, so deleting and reinstalling the app normally produces a new one. You can see this ID in the app under Settings → Support, as "Your analytics ID".

A fixed list of product events. The app can only send events from a list written into its own code; anything not on that list is dropped before it is sent. That list is:

  • App opened: how the app was launched, whether onboarding is finished, whether a subscription is active.
  • Tab viewed: which of the three tabs.
  • Onboarding step viewed, demo result, onboarding finished: step name and number, flow version, outcome, permission outcome.
  • Alarm created, updated, toggled, deleted: repeat mode, number of repeat days, Strict Mode on or off, squat target as a range (1–5, 6–10, 11–20, 21+), enabled on or off.
  • Alarm scheduling result: repeat mode and whether scheduling succeeded.
  • Challenge shown, started, completed, skipped, failed: where it was launched from, squat target range, duration as a range (under 30s, 30–59s, 60–119s, 120s+), failure reason category.
  • Badge earned: the badge identifier.
  • Streak changed: what happened, and streak length as a range (0, 1–2, 3–6, 7–13, 14–29, 30+).
  • Permission result: which permission, and allowed or not.
  • Paywall screen action: where it was opened from, which screen and part of it, the action, the identifier of the offer shown, the plan, the outcome, a reason category, and whether it was a review preview.
  • Paywall viewed, plan selected, purchase or restore started, purchase SDK result, final purchase or restore result: which screen it came from, the attempted plan, the outcome, a failure category, a random per-attempt reference, an instrumentation version, a duration range, and bounded diagnostic codes.
  • Reminder setting changed: which reminder, and on or off.
  • Operation failed: which part of the app failed, which operation, an error category, and the app release and build.

Standard app and device context added by the PostHog SDK: app name, version and build number, iOS name and version, device type, device and session identifiers generated by the SDK, language and region, time zone, screen size, and whether the build is a debug or release build.

The app also records whether its verified App Store environment is production, sandbox testing, Xcode testing, or unknown, to separate development activity from production analytics. It asks Apple's StoreKit for signed app-transaction information once per launch; this may contact Apple. Only the environment category is sent to PostHog, not the signed transaction, receipt, Apple ID, or transaction identifiers. If verification or retrieval fails, the category remains unknown.

Crash and error diagnostics: when the app crashes or throws an unhandled error, PostHog collects the exception type, message and stack trace so we can fix it.

What is never sent

The app is built so these cannot be included, and every event is rebuilt from an allowed-fields list before it is sent:

  • Your name, email address or any account identifier. The app never collects these in the first place.
  • Alarm names and labels, exact alarm times, chosen alarm sounds.
  • Your onboarding answers, your wake-up reason, or your signature.
  • Notification text.
  • Camera frames, video, images, or body-pose data.
  • Purchase receipts, prices, storefront details, or raw payment error messages.
  • Your exact squat target, streak length or challenge duration. These are sent only as the ranges shown above.

Location and IP address

The app does not use location services and does not ask for location permission.

Your device's IP address is unavoidably visible to PostHog's servers when a network request reaches them, as with any internet request. The PostHog project is configured to discard the client IP address rather than store it, and location lookup from IP address is switched off on every event sent by the app.

PostHog's own privacy information: https://posthog.com/privacy

6. Masked session replay

PostHog may record a masked visual replay of a session so we can see where the app is confusing to use. This is limited in the following ways:

  • It applies to about 10% of eligible sessions, chosen automatically.
  • Replay uses screenshots of the app's screens with masking applied: all text and text fields, all images, and all system-provided views (such as permission prompts and the App Store purchase sheet) are masked.
  • Console logs and network traffic are not captured.
  • Replay is stopped completely, not merely masked, on: every onboarding screen including the squat demo; the whole wake-up challenge, including all camera use; the wake-up reason and commitment or signature screens; alarm creation, editing, sound choice and time choice; rest days, reminder settings, alarm preferences and default squat target; and the subscription management screen.
  • Because the camera only ever appears inside onboarding and the challenge, camera screens are never eligible for replay.

Session replays are retained by PostHog for 30 days and then deleted.

7. Notifications and alarms

Alarms are scheduled through Apple's system alarm service (AlarmKit) so they can ring through Silent mode and Focus. Scheduling happens on your device. We do not send push notifications and the app has no push server.

The app can also show optional local reminders: an evening reminder, a streak-at-risk nudge and an alarm re-enable nudge. These are created and delivered by iOS on your device. They are optional, and the alarm itself never depends on them.

The Live Activity and Home Screen widget display your next alarm, its name, your squat target and your streak on your own device's screen. Be aware that Lock Screen content is visible to anyone who can see your screen.

8. Purchases

Squatti's Pro features are sold through Apple's App Store. Depending on what is offered to you, they may be available as auto-renewing subscriptions, as a one-time Lifetime purchase, or both. The app uses RevenueCat's SDK, which uses Apple's StoreKit, to manage purchases, restores and access.

  • Apple handles the payment. We never see or receive your card details, billing address or Apple ID.
  • RevenueCat, Inc. processes purchase history, Apple transaction and receipt information, product identifiers, subscription status and expiry, prices and currency, and app and device context such as app version, operating system and locale. This enables purchase validation, access management, restores and subscription analytics.
  • RevenueCat generates an anonymous App User ID. We do not send it your name, email address, advertising identifier, alarm data, camera frames or PostHog installation ID. It is not your Apple ID. Purchase records may connect anonymous IDs when purchases are restored.
  • The app may send existing Apple purchases to RevenueCat when you update, to preserve access. RevenueCat caches subscription information on your device for temporary offline use.
  • PostHog receives purchase and restore stages and outcomes (including cancellation, pending approval, and no purchases found), the attempted plan and screen, and a random reference that links events within one attempt. It also receives an instrumentation version, a duration range, and fixed error categories with recognised SDK and platform codes, including the direct underlying cause where it is recognised. Unknown codes are omitted. It does not receive receipts, prices, storefront details, raw error messages or domains, or RevenueCat customer or transaction identifiers.

Paywall and pricing tests. We may show different people different paywalls, plans, prices and trial offers to learn what works best. RevenueCat decides which offer you see: it may assign you at random using your anonymous App User ID, or by rules based on your country, app version or device platform. RevenueCat and PostHog record which offer you were shown and what you did with it, so we can compare results. Offers are not chosen using your alarms, camera data, onboarding answers or wake-up reason, and they are not tailored to you by profiling.

Apple's handling of your purchase is covered by Apple's own privacy policy.

RevenueCat's privacy information: RevenueCat privacy policy

To find your purchase records, we need the date of your purchase and, if you have it, the order ID from Apple's receipt email. Deleting the app does not delete records already processed by RevenueCat or cancel your Apple subscription.

9. Who we share information with

  • PostHog Inc.: our analytics and diagnostics processor, as described in sections 5 and 6. PostHog processes this data in the United States and may use its own sub-processors and transfer safeguards.
  • Apple: for App Store purchases, alarm scheduling, notifications and (if you enable it) device backup. Apple's own terms and privacy policy apply to those.
  • RevenueCat, Inc.: our purchase, paywall and analytics processor, as described in section 8. Its services and subprocessors may process data outside your country. RevenueCat privacy policy
  • Our email provider: if you contact support, that email is handled by our email provider.

That is the complete list. We do not sell or rent information, do not serve advertising, do not build advertising profiles, and do not track you across other companies' apps or websites. The app contains no advertising SDK, and it does not use Apple's App Tracking Transparency identifier because it does no tracking of that kind.

10. How long data is kept

  • Everything stored on your device (section 3): until you delete it in the app, reset the app, or delete the app. Device backups you have enabled may keep a copy under Apple's rules.
  • Camera frames and body-pose data: not kept at all. They are discarded during analysis.
  • Session replays: 30 days.
  • Analytics events and crash diagnostics: up to 7 years (84 months).
  • RevenueCat subscription records: retained to manage and support subscriptions and meet applicable obligations; contact us as described in section 11 to request access or deletion.

Deleting the app removes its on-device app data. It does not delete analytics records already sent to PostHog or records already processed by RevenueCat. For those, contact us as described below. Deleting the app also does not cancel an Apple subscription.

11. Your choices and your rights

On your device. You can delete individual alarms and history inside the app, and deleting the app removes its local data. You can grant or revoke camera and notification permission at any time in iOS Settings.

Analytics. The app has no in-app analytics opt-out. To request access to, or deletion of, the anonymous analytics records associated with your installation, or to object to this processing, email nagarajanseeni.dev@gmail.com and include the analytics ID shown in the app under Settings → Support. Without that ID we have no way to find your records, because they are not linked to any name or account.

Purchase records. To request access to or deletion of records processed by RevenueCat, email nagarajanseeni.dev@gmail.com and include the date of your purchase and, if you have it, the order ID from Apple's receipt email. RevenueCat may need to keep some records where the law requires it or for legitimate business purposes. Deleting these records does not cancel an Apple subscription; subscriptions are managed through Apple.

Depending on where you live, you may also have rights to access, correct, delete, restrict or object to processing of personal information, to receive a copy of it, and to complain to your local data protection authority. We will respond to requests as required by the law that applies to you. We may need to keep some information where the law requires it.

12. Children

Squatti is not directed to children under 13, or under a higher minimum age where local law sets one. We do not knowingly collect personal information from children. If you believe a child has provided information through the app, contact us and we will delete what we can identify.

13. Security

Data sent to PostHog and RevenueCat travels over encrypted HTTPS connections. Data stored on your device is protected by iOS app sandboxing and by the device protections you have enabled, such as a passcode, Face ID or Touch ID, and device encryption. No method of transmission or storage is completely secure, and we cannot guarantee absolute security.

14. Changes to this policy

We may update this policy when the app, our processors, our retention periods, or the law changes. The effective date at the top identifies the current version. Significant changes will be marked on this page, which the app opens from Settings → Privacy Policy.

15. Contact

Questions, privacy requests, or anything in this policy that is unclear:

Nagarajan Seeni (NaguBuilds)

nagarajanseeni.dev@gmail.com