Your SDKs Collect Data You Do Not Declare. That Leads to Rejection
25 Feb 2026 · 6 min read · Erik van Kammen
Google requires every app on the Play Store to have a Data Safety section. It describes what data your app collects, how it's used, and whether it's shared with third parties.
Filling it out feels like a form. But getting it wrong has real consequences.
Inaccurate declarations can lead to policy warnings, enforcement actions, reduced visibility, or in severe cases, suspension. And the tricky part isn't your own code. It's the SDKs you didn't know were collecting data.
The Data Safety form in Google Play Console asks about:
Google defines specific data types and categories. Your declarations need to match what the app binary actually does at runtime.
If your app only uses code you wrote, mapping data practices to the form is manageable. You know what you collect.
But most apps include third-party SDKs. And those SDKs can collect data you didn't explicitly ask for.
Common examples:
Each of these creates a data collection event that needs to be reflected in your Data Safety declaration. If the SDK docs don't mention it clearly, and many don't, your declaration will be incomplete.
The Data Safety form expects you to know exactly what data every component in your binary collects.
SDK documentation quality varies wildly:
For well-maintained SDKs, you can find data safety guidance. For smaller libraries, vendored code, or older dependencies, you're often guessing.
Binary analysis helps here. Instead of relying on documentation, analyze the compiled APK or AAB to detect actual data collection signals: network endpoints, identifier access, permission usage, and data storage patterns.
Google doesn't just take your word for it.
They verify Data Safety declarations through a combination of automated review, policy audits, and user reports. The specifics of their automated analysis aren't public, but the trend is toward more sophisticated verification.
When Google finds a mismatch between your declaration and actual app behavior, you receive a policy notice. Depending on severity, consequences range from a warning with a deadline to reduced visibility or suspension.
Relying on incomplete or outdated declarations is risky.
The practical challenge is translating SDK behavior into Google's data type categories.
Here's how common SDK behaviors map to Google's data type categories:
| SDK Category | Data Collected | Google Data Safety Type |
|---|---|---|
| Analytics (e.g. Firebase Analytics) | Device ID, usage events, sessions | App activity, Device or other IDs |
| Crash reporting (e.g. Crashlytics) | Stack traces, device model, OS version | Crash logs, Device or other IDs |
| Advertising (e.g. AdMob) | Advertising ID, coarse location, app usage | Advertising ID, Approximate location |
| Social auth (e.g. Facebook SDK) | Profile name, email, profile photo | Personal info |
| Location services | GPS coordinates, coarse location | Precise location, Approximate location |
| Device identifiers | Android Advertising ID, unique device ID | Device or other IDs |
Analytics SDKs vary widely. Some only collect app interaction events, others pull device info and location data. Check the specific SDK's behavior rather than assuming based on category.
You can't declare data practices accurately if you don't know what's in your binary. Start with a full SDK inventory of the compiled APK or AAB, not just your build.gradle dependencies.
For each SDK, record: - what data it collects - whether collection is required or optional - whether data is shared with the SDK provider - whether the user can request deletion
Translate each SDK's data practices into Google's specific data type categories. This is tedious but necessary.
SDK updates can change data collection behavior. A minor version bump in an analytics SDK might add a new data signal. Treat dependency updates as triggers to review your Data Safety declaration.
After building your release artifact, scan the binary for actual data collection indicators. Compare detected behavior against your declaration.
Your code might collect email and password. But if Firebase Analytics is embedded, it collects additional data. Your declaration needs to cover all of it.
Some developers select "My app doesn't collect or share any user data" because their own code doesn't. But SDKs in the binary do. Google checks the binary, not your intent.
You filled out the Data Safety form at launch. Since then, you've updated three SDKs, added a new analytics provider, and integrated a crash reporter. The form still reflects the original state.
Google distinguishes between data you collect (store or use on the server) and data you share (send to third parties). Google's definitions include exceptions for service providers processing data on your behalf, but the line between a service provider and a third party requires careful evaluation of your SDK agreements. When in doubt, declaring the data practice is safer than omitting it.
Google requires that apps offering account creation also provide in-app account and data deletion options. This is related to but distinct from Data Safety declarations. If your Data Safety section says users can request data deletion, the functionality needs to exist in-app.
Some SDKs let you disable certain data collection via configuration. If you've opted out, you don't need to declare it. But verify that the opt-out actually works in the binary. Configuration flags that are supposed to disable telemetry don't always do what they claim.
Manually auditing every SDK in your dependency tree doesn't scale. Teams ship updates weekly. Dependencies change constantly.
A more sustainable approach:
AppCompliance scans APK and AAB files to detect embedded SDKs, dangerous permission declarations, and privacy-related patterns. This gives you a factual baseline for your Data Safety declaration instead of relying solely on SDK documentation.
No tool can fill out the Data Safety form for you. Some decisions require judgment (whether collection is optional, whether you offer deletion). But having accurate binary-level data makes those decisions easier and keeps your declaration honest.
Everything technical in this post is checkable from the build itself, and that is exactly what AppCompliance does: upload an iOS or Android build, and minutes later you have every issue that would get it rejected, with the exact fix next to it.
One email when we open the doors. No spam, just the launch.