App: Play Integrity Monitor
Developer: ByteBuddies
Last updated: 2026-10-18
Play Integrity Monitor has no accounts or advertising and does not sell data. Normal checks send a random installation ID and diagnostic request data to our backend. An optional crowdsourcing preview, off by default, collects pseudonymous setup observations after explicit consent. Hashed IDs and keybox fingerprints can link observations; they are not anonymous data. Google Cloud hosts and processes backend data as described below.
Play Integrity Monitor calls the Google Play Integrity API on your behalf to determine whether your device currently satisfies the criteria that Google Wallet and similar apps use when deciding to allow contactless payments. The result is displayed on your device and stored locally so you can see how it has changed over time.
The following is stored in the app's private storage. Android backup may include ordinary settings/history, but excludes the local identity study store. It is never shared with advertisers, analytics providers, or any service other than the app's own backend (described in section 3).
| What | Why | How long |
|---|---|---|
| Random install ID | A UUID generated at first launch, used to apply per-installation rate limits on the backend. It is not linked to your Google account, Android ID, or any other identifier. You can reset it by clearing app data. | Until you clear app data or uninstall |
| Check history | Timestamp, result status, trigger type, device integrity verdict flags, and the raw JSON response for each completed check | 90 days (older entries are deleted automatically) |
| Local identity study state | Initial composite certificate-chain fingerprint, initial probe outcome, consent/targeting claim, current local probe and up to eight pending setup observations. Stored separately in Android storage excluded from backup and device transfer. The initial fingerprint is never sent by the study. | Until app data is cleared or the app is uninstalled; opting out clears current/pending observations and consent, while retaining the local initial comparison |
| App preferences | Auto-check on/off, check schedule times, notification preference, quota counters, last-check timestamps, and server config cache | Until you clear app data or uninstall |
The app does not store:
Each integrity check sends one HTTPS request to the app's backend server (integrity-autocheck-backend-*.run.app), which is operated by ByteBuddies on Google Cloud Run.
The request contains:
| Field | What it is |
|---|---|
| Encrypted Play Integrity token | An opaque token issued by Google's Play Integrity API. The backend sends it to Google for decoding; the raw token is not stored. |
| Request hash | A non-reversible hash of the request context. Used to bind the token to this specific request and detect replays. |
| Install ID | The random UUID described in section 2. |
| Trigger | What started the check (e.g., manual, periodic, boot). |
| Client timestamp | The time the check was initiated, used to verify token freshness. |
| App version | Version code and version name of Play Integrity Monitor. |
| Google Wallet version | Version of Google Wallet on your device, if installed. Sent as a diagnostic aid. |
| Play Services version | Version of Google Play Services on your device. |
| Play Store version | Version of Google Play Store on your device. |
The backend returns a compact decision (ready, likely_blocked, unknown, error) plus the verdict labels from the Play Integrity API. The backend does not return, and the app does not transmit, your Google account identity, location, contacts, or any personal identifiers beyond the install ID.
The backend uses Cloud Firestore to enforce per-installation rate limits. For each install ID it stores:
The backend does not store the raw integrity token, the full decrypted verdict payload, or any account identifiers. Operational request logs contain request IDs, a hash of the installation ID, compact verdicts/reasons and app/service versions. These are pseudonymous diagnostics, not anonymous aggregate counts. Ordinary application logs currently use a 30-day Cloud Logging retention period.
Participation requires accepting the disclosure and claiming that spoofing is configured for this app with the same keybox used for Play Integrity. A local probe is compared with the first observation taken when this feature was first launched. This does not prove spoofing: the initial identity may already be spoofed, and native certificates can rotate.
With a supported normal Integrity check, the opted-in app can send:
These setup analytics never include the initial/current certificate fingerprint, raw certificates, private keys, certificate serial numbers or device model/build fingerprint. No Firebase Analytics or other analytics SDK is added. Events are queued locally and sent with normal checks; the study does not request extra Play Integrity checks. Opting out clears queued observations and stops future sending. Already collected study events remain until ordinary log expiry, currently 30 days.
The consent also describes future shared-keybox monitoring: once available, the current reported keybox fingerprint and installation ID may accompany normal verdicts to associate installs. That group-upload capability is not enabled in the current preview. Its active membership window is 48 hours without a check and failure evidence one hour; these windows do not shorten analytics log retention. No certificates or private keys will be uploaded. Immediate membership deletion and published rollout details must be completed before enabling that capability.
| Service | Purpose | Privacy information |
|---|---|---|
| Google Play Integrity API | Issues the encrypted integrity token that the backend decodes | Google Privacy Policy |
| Google Cloud Run | Hosts the app's backend | Google Cloud Privacy |
| Google Cloud Logging | Stores operational logs and explicitly opted-in setup-study events; current ordinary-log retention is 30 days | Google Cloud Privacy |
| Google Cloud Firestore | Stores rate-limit counters on the backend | Google Cloud Privacy |
The app does not use any advertising SDKs, crash-reporting services, analytics SDKs, or social login SDKs.
| Permission | Why it is needed |
|---|---|
INTERNET |
To reach the backend server and the Play Integrity API |
POST_NOTIFICATIONS |
To send you a local notification when your integrity status changes |
RECEIVE_BOOT_COMPLETED |
To schedule an integrity check shortly after the device boots |
SCHEDULE_EXACT_ALARM / USE_EXACT_ALARM |
To fire daily scheduled checks at the times you configure |
The app does not request permissions for location, contacts, camera, microphone, phone state, or storage.
This app is not directed at children under 13 and does not knowingly collect information from anyone under 13.
All communication between the app and the backend uses HTTPS with TLS. The backend validates package name, signing certificate, request hash, and token freshness before processing any request, rejecting replayed or tampered tokens.
If the data practices described above change materially, this document will be updated and the "Last updated" date at the top will be revised. For significant changes, a notice will be displayed in the app.
Questions or concerns about this privacy policy can be directed to the project repository:
https://github.com/ByteBuddiesGroup/play_integrity_autocheck