Back to all articles

Google Play Data Safety Form: Complete 2026 Walkthrough

By Support URL Generator Team · Published

Advertisement

Google Play rejected your update for an "invalid Data safety form," or you are filling it in for the first time and want to get it right: the form has to describe every piece of user data your app and its SDKs touch, and Google now cross-checks your answers against an automated scan of your app bundle. This is a section-by-section walkthrough for 2026, including a large SDK-to-data-types mapping table. Generate a matching privacy policy from your real SDK list →

What the Data safety form is and why it gets rejected

The Data safety section shows on your Play Store listing as a summary of what your app collects, what it shares, and your security practices. You complete it in Play Console under App content, Data safety. Google's rule is that the declaration must cover all user data collected or shared by your app, "including data collected and handled through any third-party libraries or SDKs" you bundle. It applies across every app version available to users and every region you ship to.

Getting it wrong is not a soft warning. An inaccurate or incomplete form is an "invalid Data safety form" and is grounds to reject the update, block further updates, or remove the app. In 2026 the common trigger is drift: the form still describes last year's SDK set, an SDK was added or upgraded, and Google's binary scan now sees a data flow the form does not mention.

Section 1: Data collection and security

The form opens with a few yes/no questions that decide how much of the rest you have to fill in:

  • Does your app collect or share any of the required user data types? If yes, you move on to the data-types list. "Collect" means the data leaves the device; "share" means it is transferred to a third party.
  • Is all of the user data collected by your app encrypted in transit? This is all-or-nothing — see the dedicated section below.
  • Do you provide a way for users to request that their data is deleted? If yes, you supply a URL. If your app has accounts, there is a separate, stricter account-deletion declaration.
  • Optional badges: an independent security review against the Mobile Application Security Assessment (MASA) programme, and Families policy / "Designed for Families" compliance.

Section 2: Data types

You then pick, from 14 groups, every specific type your app or an SDK collects or shares:

  • Location — Approximate location, Precise location
  • Personal info — Name, Email address, User IDs, Address, Phone number, Race and ethnicity, Political or religious beliefs, Sexual orientation, Other info
  • Financial info — User payment info, Purchase history, Credit score, Other financial info
  • Health and fitness — Health info, Fitness info
  • Messages — Emails, SMS or MMS, Other in-app messages
  • Photos and videos — Photos, Videos
  • Audio files — Voice or sound recordings, Music files, Other audio files
  • Files and docs — Files and docs
  • Calendar — Calendar events
  • Contacts — Contacts
  • App activity — App interactions, In-app search history, Installed apps, Other user-generated content, Other actions
  • Web browsing — Web browsing history
  • App info and performance — Crash logs, Diagnostics, Other app performance data
  • Device or other IDs — Device or other IDs (includes the Advertising ID and any resettable or hardware identifier)

Section 3: the follow-up questions for each data type

For every type you select, Google asks the same set of questions:

  • Collected, shared, or both. "Collected" is transfer off the device for any length of time. "Shared" is transfer to a third party. Data handed to a service provider that only processes it on your instructions is not "shared"; data sent to an advertising network, an attribution partner, or any company that uses it for its own purposes is "shared". Legally compelled transfers and transfers for a user-initiated action also do not count as sharing.
  • Is this data processed ephemerally? Yes only if the data is accessed in memory, not written to persistent storage, and kept no longer than needed to service the request. This is rare; most logging or analytics use fails it.
  • Is collection required or optional? "Users can choose whether this data is collected" (there is a real toggle or the feature is opt-in) versus "Data collection is required to use the app".
  • Purposes. One or more of: App functionality, Analytics, Developer communications, Advertising or marketing, Fraud prevention security and compliance, Personalization, Account management. You answer purposes separately for collection and for sharing.

"Data is encrypted in transit"

You can only answer yes if every network call that carries user data — yours and every SDK's — uses TLS. A single SDK endpoint on plain HTTP, a legacy analytics beacon, or an Android build with android:usesCleartextTraffic="true" and no network security config means you must answer no. Check your network_security_config.xml and run the app through a proxy if you are unsure. Answering yes when a scan finds cleartext is a fast way to an invalid-form rejection.

"Users can request data deletion" and the Delete Account URL

There are two related things here. The first is a general data-deletion request method: a URL where any user can ask you to delete their data. The second applies if your app supports account creation — Google's account-deletion policy, enforced since May 31, 2024 (the original deadline was December 7, 2023), requires both:

  • an in-app path to delete the account and its associated data, and
  • a public web URL where users can request account and data deletion without reinstalling the app.

The URL must be functional, not behind a login wall, and it must feature the deletion request prominently rather than bury it in a generic support page. You declare, per data type, whether it is deleted or retained; retention is allowed only for narrow reasons such as security, fraud prevention, or legal compliance, and you must state those in your privacy policy. Play shows the URL and a data-deletion badge in the Data safety detail page on your listing. Use the account deletion page generator to produce a compliant page, and see the Google Play account deletion requirement for the full policy.

SDK to Data safety data types

Most rejections come from SDK data that the developer never declared. Work from the SDKs your app actually links — generate a dependency tree (gradlew app:dependencies) or use the SDKs list in Play Console — and map each one. The table below covers the common cases in a default configuration. Every SDK name links to a full privacy-policy clause; the app SDK privacy policy clauses hub explains the "tracking" and processor-versus-controller distinctions that decide the "Shared" column.

SDKPlay Data safety data typesCollected / SharedTypical purposes
Google Analytics for FirebaseDevice or other IDs; App activity (App interactions, In-app search history, Other actions); App info and performance (Diagnostics)Collected; shared only if Google ad features or data-sharing settings are enabledAnalytics, App functionality (Advertising if ad features on)
Firebase CrashlyticsApp info and performance (Crash logs, Diagnostics); Device or other IDsCollected; not sharedApp functionality, Analytics
Firebase Performance MonitoringApp info and performance (Diagnostics, Other app performance data); Device or other IDsCollected; not sharedAnalytics, App functionality
Firebase Cloud MessagingDevice or other IDs (registration token); Messages (Other in-app messages, if you send content payloads)Collected; not sharedApp functionality
Firebase AuthenticationPersonal info (Email address, Name, User IDs; Phone number for phone auth)Collected; not sharedApp functionality, Account management
Google Sign-InPersonal info (Name, Email address, User IDs)Collected; not sharedApp functionality, Account management
Sign in with ApplePersonal info (Name, Email address or private relay, User IDs)Collected; not sharedApp functionality, Account management
Google AdMobDevice or other IDs (Advertising ID); Location (Approximate); App activity (App interactions, Other actions)Collected and SharedAdvertising or marketing, Analytics, Fraud prevention
Meta Audience NetworkDevice or other IDs; App activityCollected and SharedAdvertising or marketing, Analytics
AppLovin MAXDevice or other IDs; App activity; Location (Approximate)Collected and SharedAdvertising or marketing, Analytics
Unity AdsDevice or other IDs; App activityCollected and SharedAdvertising or marketing, Analytics
ironSource LevelPlayDevice or other IDs; App activityCollected and SharedAdvertising or marketing, Analytics
AppsFlyerDevice or other IDs; App activity (App interactions, Other actions); Location (Approximate, from IP); Financial info (Purchase history) if you send revenue eventsCollected and SharedAdvertising or marketing, Analytics, Fraud prevention
AdjustDevice or other IDs; App activity; Location (Approximate)Collected and SharedAdvertising or marketing, Analytics, Fraud prevention
BranchDevice or other IDs; App activityCollected and SharedAdvertising or marketing, Analytics, App functionality (deep links)
AmplitudeDevice or other IDs; App activity (App interactions, In-app search history, Other actions)Collected; not shared (processor)Analytics
MixpanelDevice or other IDs; App activityCollected; not shared (processor)Analytics
PostHogDevice or other IDs; App activity (none as a third party if you self-host)Collected; not sharedAnalytics, App functionality
SegmentDevice or other IDs; App activity; Personal info (any traits you pass)Collected and Shared (fan-out to downstream destinations)Analytics, App functionality
SentryApp info and performance (Crash logs, Diagnostics); Personal info (only if you attach user context)Collected; not sharedApp functionality, Fraud prevention and security
OneSignalDevice or other IDs (push token); App activity; Location (Approximate, optional)Collected; shared with OneSignal as processor — declare per your contractApp functionality, Analytics
RevenueCatFinancial info (Purchase history); Device or other IDs (app user ID)Collected; not sharedApp functionality, Analytics, Fraud prevention
StripeFinancial info (User payment info, Purchase history); Personal info (Name, Email address, Phone number, Address)Collected and Shared (Stripe is an independent controller for fraud and compliance)App functionality, Fraud prevention
SuperwallApp activity (App interactions); Financial info (Purchase history); Device or other IDsCollected; not sharedAnalytics, App functionality
SupabaseWhatever you store: Personal info, App activity, Files and docsCollected; not shared (your sub-processor)App functionality

Notes on the table:

  • Processor versus third party decides "Shared". Analytics, crash, backend and auth SDKs that only act on your instructions are "collected, not shared". Ad networks and attribution partners use the data for their own measurement and modelling, so they are "shared".
  • Self-hosting removes the transfer. Run PostHog, Sentry or Supabase on your own infrastructure and there is no third-party sharing — you still declare collection.
  • Advertising ID. If any SDK reads it, declare Device or other IDs, and remember that apps targeting Android 13 or later must also declare the com.google.android.gms.permission.AD_ID permission.
  • Configuration expands the row. Enabling revenue events, a customer user ID, IP geolocation, or extra SDK modules adds data types beyond what is listed here.
  • Keep three things in sync: this form, your App Store privacy label, and your hosted privacy policy. Reviewers on both stores compare them.

How mismatches trigger enforcement

Google runs static and dynamic analysis on your bundle. When the scan sees a data flow — AdMob or a Firebase library sending a device identifier to Google, a crash reporter uploading diagnostics, an SDK deriving approximate location from an IP address — and your form does not declare it, the form is marked invalid. The most common misses are the ones that "feel like infrastructure": crash reporting, push tokens, and attribution SDKs initialised in a wrapper library. Because the check runs on every submission, an app that passed for a year can be rejected right after a Play Console policy update with no code change on your side. The fix is always the same: rebuild the form from the current dependency list rather than editing last year's answers.

Pre-submission checklist

  • Produce a full dependency list and flag every SDK that opens a network connection.
  • For each SDK: collected? shared? which data types? required or optional? processed ephemerally?
  • Confirm every endpoint is HTTPS; check usesCleartextTraffic and the network security config.
  • Add a data-deletion request URL. If the app has accounts, add the account-deletion URL and confirm the in-app path works without reinstalling.
  • Re-open and re-verify the form after every SDK add, removal, or major version bump.
  • Diff the form against your App Store privacy label and your published privacy policy.
  • Keep a dated screenshot of the submitted form for your records.

Reply template for a Data safety rejection

Hello,

Re: Data safety declaration - com.example.app

We have re-reviewed our Data safety form against our current SDK set
(app version 3.4.0). Changes made:

- Device or other IDs: now declared as Collected and Shared, purpose
  Advertising or marketing, for the Google AdMob SDK.
- App info and performance (Crash logs, Diagnostics): now declared as
  Collected for Firebase Crashlytics.
- Location (Approximate): now declared as Collected, derived from IP by
  our attribution SDK.
- Data deletion: added https://example.com/delete-account and confirmed
  the in-app path Settings - Account - Delete account.

All user data in transit is encrypted with TLS. Our privacy policy at
https://example.com/privacy lists the same processors and purposes.
Please re-review.

Thank you,
Sam Lee

This article is practical guidance, not legal advice; you alone are responsible for making complete and accurate declarations for your app.

Related

Pair this with Sign in with Apple and account deletion for the token-revocation side, the Google Play account deletion requirement for the deletion URL policy, app SDK privacy policy clauses for per-SDK policy text, the Firebase privacy policy generator guide for Firebase-heavy stacks, and the account deletion page generator for the public request page.

Advertisement

Need a Support URL for Your App?

Generate a compliant, professional support page in under a minute. Our easy-to-use generator creates everything you need for App Store and Google Play submissions.