What stores require
A public URL to a privacy policy that (1) names the data you collect, (2) why, (3) with whom you share it, (4) user rights. Plus App Privacy labels in App Store Connect that match the policy. Missing either = rejection.
Sections your privacy policy must cover
- Who you are (company name, contact email)
- What data you collect (categories + fields)
- How you collect it (direct input, automatic, third parties)
- Why you collect it (purposes)
- Who you share it with (processors: Stripe, Supabase, RevenueCat, etc.)
- User rights (access, delete, portability, opt-out)
- Data retention periods
- Security measures (encryption in transit/at rest)
- International transfers (if any)
- Children’s data handling (COPPA if under 13)
- How to contact you for privacy requests
- “Last updated” date
Copy-ready template
Replace bracketed parts with your details. Save at yourapp.com/privacy and link from the App Store listing and Play Console.
# Privacy Policy for [APP NAME]
Last updated: [DATE]
[APP NAME] ("we," "our") is operated by
[COMPANY NAME or your name]. This policy
explains what we collect, why, and your rights.
Questions: privacy@[yourdomain].com.
## What we collect
Account info: email, name, profile photo.
Usage data: screens viewed, features used,
session duration (anonymous analytics).
Device info: device model, OS version, language,
crash logs.
Payment info: processed by Stripe / Apple / Google;
we never see full card numbers.
Content you create: [describe: tasks, messages,
posts, etc.].
[List any other data types your app collects.]
## How we collect it
Directly from you when you sign up or use
the app; automatically via the app; from
third-party login providers if you sign in
with Apple, Google, or similar.
## Why we collect it
To provide and improve the app; authenticate
your account; process payments; send
transactional messages (receipts, reminders);
prevent fraud and abuse; comply with legal
obligations.
## Who we share it with
Third-party service providers acting on our
behalf:
- [Supabase / Firebase] — data hosting
- [Clerk / Auth0] — authentication
- [Stripe / RevenueCat] — payments
- [Sentry] — error tracking
- [PostHog / Mixpanel / Amplitude] — analytics
We do not sell your personal data.
## Your rights
You can access, correct, or delete your data
at any time from in-app Settings, or by
emailing privacy@[yourdomain].com. For
EU/UK users: you have additional rights
under GDPR including data portability and
objection. For California users: you have
rights under CCPA/CPRA including to know,
delete, and opt out of sale/sharing (we do
not sell your data).
## Data retention
We retain your data while your account is
active. If you delete your account, we delete
it within 30 days, except where retention is
required by law (e.g., payment records for tax).
## Security
Data is encrypted in transit (TLS) and at rest
(AES-256). We follow industry practices for
access control and incident response. No system
is perfectly secure; we will notify you of any
breach affecting your data within 72 hours.
## International transfers
Your data may be processed in the United States
or other countries. Where required, we use
Standard Contractual Clauses to protect
transfers.
## Children
[APP NAME] is not directed to children under 13
(or 16 in the EU). We do not knowingly collect
data from them. If we learn we have, we delete
it promptly.
## Changes
Material changes to this policy will be posted
here with a new "Last updated" date and notified
in-app.
## Contact
[COMPANY NAME]
[Address if required by law in your jurisdiction]
privacy@[yourdomain].comApp Store Privacy labels (nutrition labels)
In App Store Connect → App Privacy, declare each data type collected:
- Contact Info: email, name, phone (if collected).
- User Content: posts, messages, photos if the user uploads them.
- Identifiers: user ID, device ID.
- Usage Data: product interaction, analytics.
- Diagnostics: crash data, performance data.
- Purchases: if you use Stripe or IAP.
Mark each as “linked to user” or “not linked.” Check “used to track” only if you actually cross-app or cross-site track (almost never for an indie app). Labels must match your privacy policy — reviewers compare.
Google Play Data Safety form
Play Console has its own “Data Safety” form that maps to roughly the same categories as Apple. Fill it in parallel when you submit your first Play Store release. Mismatch between the form and the policy is the top cause of Play rejections.
Where to host the policy
- A
/privacyroute on your marketing site (the cleanest). - A Notion page with public access (works, but looks amateur).
- A GitHub-hosted README (works, also looks amateur).
- A Vercel or Netlify static page (clean, free, cheap to maintain).
Whatever you pick, the URL must be stable — if it ever 404s, your app is out of compliance.
Updating when you add features
Any time you add a new SDK (Sentry, PostHog, RevenueCat, etc.) or a new data collection surface, update the policy before the feature ships. Also update App Store Privacy labels and Play Data Safety. This is boring; it is also how you avoid a rejected update 6 months in.
Common mistakes to avoid
- Copying a policy from another app without changing the data you collect.
- Listing services you do not actually use (looks generic, hurts trust).
- Forgetting to update when you add an analytics SDK.
- Mismatch between App Privacy labels and the policy text.
- No contact email. Privacy laws require one.