HabitStories

Privacy Policy

Effective date: May 1, 2026  ·  Last updated: April 24, 2026

Plain-English summary

Your child's first name and birth date stay on your device. We do not upload them to our servers.

To generate a story, we send the minimum context needed: an anonymous device identifier, the scenario and story world you picked, your child's age band (not exact birth date), favorite animal type, narrator voice/tone choices when selected, your subscription receipt status, and anonymous usage events.

We don't use advertising identifiers. We don't track you across other apps or websites.

You can delete everything by opening Settings → Data & Privacy → Reset App Data. To also remove the server-side record, email us with the device ID shown in Settings → About.

1. What we collect

1.1 On your device only

1.2 Sent to our servers

1.3 Bonus / referral system (only if you use it)

1.4 Sign in with Apple (optional)

If you tap "Sign in with Apple" in Settings (required only to claim invite rewards):

1.5 Anonymous analytics (PostHog)

We use PostHog to understand which scenarios are picked, where users drop off, and whether new features help. These events are never linked to your child's data. Typical events:

PostHog is configured with autocapture: false — we only send events we explicitly code. No IDFA, no cross-app tracking.

1.6 Crash & performance data

We use Apple's built-in crash reporting. You can opt out in iOS Settings → Privacy & Security → Analytics & Improvements → Share With App Developers.

2. Third-party services we use

ServicePurposeData sent
Alibaba Cloud DashScopeAI text + text-to-speech generationStory generation context (scenario, world, age band, favorite animal type, optional tone/voice). No child first name or birth date.
Cloudflare Workers + R2API hosting, audio file storageEverything in §1.2 passes through here
SupabaseStory metadata, bonus ledger, referral trackingEverything in §1.2 and §1.3
RevenueCatSubscription managementYour Apple Transaction ID, subscription status
Apple (App Store, SIWA)Payments, optional authApple handles payment data directly — we never see your card
PostHogProduct analyticsEvents in §1.5

We have a data-processing agreement with each vendor where applicable. None of them receive your child's first name or birth date. Story-generation vendors receive only the selected story context needed to produce the audio.

3. Children's privacy

HabitStories is a tool for parents, not a product for children. The account holder is always an adult. Your child should not use the device unsupervised while HabitStories is open.

Because of this, we do not target children under 13 for data collection. The child's first name and birth date stay local to your device. Story generation uses only the selected story context needed to produce the audio, such as age band, scenario, world, and favorite animal type.

If you discover a child has somehow created an account directly (which our UX doesn't support), email [email protected] and we'll delete the associated device record immediately.

4. Your rights

4.1 Delete your data

4.2 Export your data

Email [email protected]. We return a JSON dump of every row linked to your device ID within 14 days.

4.3 Opt out of analytics

iOS Settings → Privacy & Security → Tracking: HabitStories — toggle off. We also honor the system-level ATT prompt.

5. How long we keep data

DataRetention
Story metadata on server180 days, then purged
Audio files on R230 days after last access
Bonus / referral records24 months, then anonymized
Crash logs90 days
PostHog events365 days
Device → Apple ID bindingUntil you delete, or anonymized after 24 months inactivity

6. Where your data lives

If you're in the EU/UK and this matters to you, email us and we'll clarify or suspend your record.

7. Security

All data in transit is encrypted via HTTPS/TLS. On-device data is protected by iOS device encryption. We apply standard security practices to our server-side infrastructure.

8. Changes to this policy

We'll update this document when things change. Material changes will be flagged in the app on next launch with a short summary. The "Effective date" at the top always reflects the current version.

9. Contact

[email protected]

We're a small team. A real person reads every message, usually within 24 hours.