# Google Play (/docs/integrations/google-play)

Connect a Google Play app to Sift to pull user reviews across every country, monitor sentiment over time, and post developer replies directly from the inbox.

## At a glance [#at-a-glance]

| | |
| --- | --- |
| Inbound: Reviews (rating, text, language, device, version) | ✅ |
| Inbound: Country of each review (derived from reviewer language) | ✅ |
| Inbound: App version each review was left on | ✅ |
| Outbound: Post a developer reply | ✅ |
| Outbound: Update or delete a developer reply | ❌ Google Play API has no update/delete endpoint |
| Multi-app per workspace | ✅ |
| Filter / route by country, version, or rating | ✅ in the inbox |
| Auto-reply bots | ✅ |
| Reviewer follow-up after your developer reply | ❌ Google's API drops it |
| Reviews older than ~7 days (Google's reply window closes) | ⚠️ ingested fine; new replies rejected by Google |

## Set it up [#set-it-up]

{/* setup-screenshot */}
<figure>
  <img src="/assets/screenshots/google-play/setup.png" alt="The Google Play settings page in Sift, showing connected accounts (account names redacted for the docs)." />
  <figcaption>Google Play settings in Sift - manage connected accounts here.</figcaption>
</figure>

Go to [Settings → Integrations → Google Play](https://app.getsift.ai/app/settings/integrations/) and:

1. **Authenticate** with a Google Play Console account that has the **Reply to reviews** role on each app you're connecting.
2. **Pick the apps** Sift should monitor.
3. **Choose a backfill cutoff date**: how far back to pull history on first sync.
4. **Assign each app to a queue** (optional) for routing.

Sift uses the official Google Play Developer API for both reads and replies; no scraping, no third-party tooling.

## What you can do [#what-you-can-do]

**Reply** to a review - Sift posts via Google's Play Developer Reviews API as the connected Play Console account.

**Filter and route** by country, device, version, or rating. **Trigger workflows** on rating drops, specific keywords, or device-specific bug signal. **Apply auto-reply bots** for FAQ patterns or off-hours acknowledgements.

Replies are immutable once posted - Google's API has no update or delete endpoint for developer replies. If you need to revise, post a fresh reply on the same review.

## The ~7-day reply window [#the-7-day-reply-window]

Google Play closes the developer-reply window roughly 7 days after a review is posted. Older reviews still ingest and stay readable in the inbox forever - but if an agent tries to post a reply on one, Google's API rejects it. Sift surfaces the rejection in the inbox so it's clear what happened.

## Backfill + ongoing sync [#backfill--ongoing-sync]

On first connect, Sift backfills history from your cutoff date. After that, ongoing syncs poll for new and updated reviews continuously. If a reviewer edits their review or changes their rating, the existing action updates rather than spawning a duplicate.

## What Sift ingests [#what-sift-ingests]

Every public review on every connected Google Play app - Sift pulls them all. Each review becomes an action in the inbox with:

- **Star rating** (1–5)
- **Review text**
- **Reviewer language** (e.g. `en_US`) - Sift derives a country / locale chip from this for filtering and routing
- **Device model** the reviewer was on (useful when a bug is device-specific)
- **App version** the review was left on
- **Last-modified timestamp**

Reviews thread together by app + review ID so a single review's full history (rating change, edited text, developer reply) lives on one action.

## Not supported today [#not-supported-today]

- **Editing or deleting a developer reply**: Google's API doesn't support it. Post a new reply instead.
- **Reviewer follow-up comments after your developer reply**: Google's review API only exposes one user comment and one developer comment per review record; subsequent user messages aren't surfaced.
- **Per-country / per-version ingestion filters**: Sift pulls everything; filter / route inside the inbox.
- **Pre-launch reports + ANR / crash data**: separate Play Console surfaces, not in scope.
