Skip to main content

Privacy mistakes

Every mistake on this page happened in a real system. Each one cost a store rejection, a compliance gap, or a long investigation. Read the whole list in your first week. Each item links to the page with the fix.

How it works​

Most mistakes below are one of five patterns. When you review a privacy change, ask the five questions: was the control there first, is there one source of truth, was the claim checked, would a failure be visible, and is it configured in production?

  • Analytics on at boot for everyone. One line enabled analytics before any screen, for guests too. Gate SDKs on the stored decision. Consent model
  • A purpose the server did not know. The app sent a new AI consent purpose; the server registry lacked it, rejected every grant, and recorded nothing. The log line dropped the offending value. Seed server first; log what failed. Consent model
  • A fix that would have re-asked every user. Adding a purpose to the shared first-run notice would have bumped its version for the whole base. One notice version per surface. Consent model
  • Consent copy editable over the air. Translation bundles could change what users agreed to without a release, and the lock everyone assumed existed was never built. Consent model
  • "We never share your messages" while hashes of queries went to analytics. Hashed still means shared. Consent model
  • A client-sent copy hash. Proves nothing. The server owns and hashes the copy. Consent model
  • Bundled tick on a public form. Terms, requested processing and marketing in one box. Split into a mandatory and an optional tick. DPDP
  • Withdrawal harder than the grant. One click to give, an email and ID check to withdraw. Use a signed withdrawal link. DPDP
  • Uploads before consent. Files reached storage before the tick, and abandoned ones stayed forever. DPDP

Marketing​

  • Marketing on the sign-in email account. A complaint could suppress the address account-wide and silently drop sign-in codes. Marketing and email
  • One shared opt-in purpose with no grants. An opt-in-only campaign would reach nobody. Decide the basis per product before launch. Marketing and email
  • Unsubscribe without a campaign id. Nobody could tell which email drove the opt-out. Marketing and email
  • A bulk send by script. It skipped a consent flag and wrote no send log. Marketing and email
  • Emails uploaded to an ad platform by hand. No consent, no disclosure, no record of who was in which upload. Marketing and email
  • No DMARC record. Bulk mail gets filtered and spoofing is invisible. Marketing and email

AI​

  • Store rejection for sending data to an AI with no in-app ask. Policy text alone was not enough. AI processing
  • "The provider does not train on your data" before checking the tier. AI processing
  • The policy named the wrong AI platform and missed two moderation providers. Data map and RoPA

Deletion and requests​

Retention and logs​

Children and age​

Data map and law​

  • "Personal data regional, content global" was not true; a raw device ID sat in the global tier with no erasure path. Data map and RoPA
  • Disclosure offered as the fix for an unlawful transfer. GDPR
  • Region chosen from device language, and unknown countries fell through silently. GDPR vs DPDP
  • A new policy version silently lost its shared sections, including the grievance contact. Staying current
  • Store review bypass code committed to a repository. Breach response

Rules​

Rule

When you find a privacy mistake, add it here and to the page it belongs on, in the same pull request as the fix. A lesson that lives only in chat is lost.

Checklist​

  • You have read every item on this page.
  • Your current feature does not repeat any of the five root causes.