Skip to content

Repository files navigation

n8n-nodes-google-play

n8n community nodes for Google Play, via the Android Publisher API v3:

  • Google Play — fetch and reply to reviews, and download signed universal APKs.
  • Google Play Trigger — polls one or several apps for new reviews or new production releases.

Looking for the Apple App Store? See @maximiliana/n8n-nodes-app-store.

Installation

Follow the community nodes installation guide and install:

@maximiliana/n8n-nodes-google-play

Credentials

Authentication uses a Google Cloud service account. The credential signs an RS256 JWT with the service account key and exchanges it for a short-lived OAuth2 access token (https://www.googleapis.com/auth/androidpublisher scope). Tokens are refreshed automatically when they expire.

  1. In Google Cloud Console, create (or reuse) a project and create a service account (no roles needed).
  2. Create a JSON key for it and download the file.
  3. In Google Play ConsoleUsers and permissions, invite the service account email and grant it at least View app information and Reply to reviews on the relevant app(s). The release trigger and the APK download additionally need release read access (creating read-only edits and listing generated APKs): granting the Release manager permission group on the app covers everything.
  4. Optional, for the app pickers: in Google Cloud Console → APIs & Services, also enable the Google Play Developer Reporting API (the Android Publisher API has no endpoint to list apps, so the pickers use apps.search). Without it, apps can still be set by package name through expressions.
  5. In n8n, create a Google Play API credential with:
    • Service Account Email: the client_email field of the JSON key.
    • Private Key: the private_key field of the JSON key (escaped \n and pasted formatting are handled automatically).

Operations

Resource Operation Description
Review Get Retrieve a single review by ID
Review Get Many List recent reviews of an app
Review Reply Post or update the developer reply to a review (max 350 characters)
APK Download Universal Download the signed universal APK generated by Google Play for a version

Notes from the underlying API:

  • Only reviews with a text comment, created or modified within the last week, are returned. Older reviews are only available as CSV exports from the Google Play Console.
  • Reviews can optionally be machine-translated with the Translation Language option.
  • Replying again to the same review overwrites the previous reply.

Download Universal APK

Downloads the signed universal APK that Google Play generates for apps published as App Bundles with Play App Signing — the same artifact offered under App bundle explorer → Downloads in the console. Pick a specific version code or use Latest Production Release to resolve the highest version code currently rolled out on the production track. The file is emitted as a binary item (application/vnd.android.package-archive), with packageName, versionCode, fileName, fileSize and the signing key's certificateSha256Hash in the JSON output.

Trigger

The trigger watches one or several apps (multi-select picker, or package names via expression), uses n8n polling (configure the schedule in the node's Poll Times), and supports two events: New Review and New Production Release. Every app keeps its own polling state: a temporary failure in one app never affects the others. For both events the first poll only establishes the baseline and emits nothing (history is not replayed), and executing the trigger manually returns current data so you can inspect the output shape.

New Production Release

Each poll reads the production track of every selected app (through a temporary read-only edit that is deleted afterwards, never committed) and deduplicates releases by a fingerprint (SHA-256 of the package name plus the release's version codes), so each release fires each event at most once. Staged rollouts are handled explicitly with Emit When:

  • Rollout Starts (default): fire as soon as a new release appears in production, even at a partial rollout fraction.
  • Rollout Completes: fire only when the release reaches 100% of users.
  • Rollout Starts and Completes: two events per staged release; a release that goes straight to 100% fires a single rolloutCompleted event.

Each event includes release metadata:

{
  "event": "rolloutStarted",
  "packageName": "com.example.app",
  "appName": "Example App",
  "track": "production",
  "releaseName": "2.1.0",
  "status": "inProgress",
  "versionCodes": [210],
  "versionCode": 210,
  "rolloutPercentage": 20,
  "releaseNotes": [{ "language": "es-ES", "text": "" }]
}

New Review

On each poll the trigger fetches, per app, the reviews newer than the previous poll and emits the ones not seen before, each tagged with its packageName and appName. Options:

  • Lookback Margin (Minutes) (default 15): each poll also re-checks the interval before the previous poll by this margin, to compensate for the delay with which Google Play surfaces new reviews. Overlapping reviews are deduplicated, so a larger margin never produces duplicates.
  • Include Updated Reviews: also trigger when an already-seen review is edited.
  • Simplify: emit a flattened, friendly review object (default) instead of the raw API payload.
  • Translation Language: machine-translate the review texts.

Simplified output

{
  "packageName": "com.example.app",
  "reviewId": "gp:AOqpTOE…",
  "authorName": "Jane",
  "rating": 5,
  "text": "Great app",
  "lastModifiedDate": "2026-08-12T12:00:00.000Z",
  "appVersionName": "2.1.0",
  "device": "a54x",
  "developerReplyText": "Thanks!",
  "developerReplyDate": "2026-08-12T13:00:00.000Z"
}

Rate limits

The Google Play Developer API allows 200 review-read requests per hour per app. A review poll normally costs a single request per app, so even polling every minute stays within the quota — but the quota is shared by every workflow that reads reviews of the same app. A release poll costs three requests per app (create edit, read track, delete edit) against the general API quota (200,000 requests/day), which is negligible at any reasonable polling interval.

Troubleshooting

"Class could not be found. Please check if the class is named correctly." while installing. n8n installs community packages into ~/.n8n/nodes with a shared node_modules; if another community package left an old n8n-workflow 1.x hoisted there, npm reuses it (any version satisfies the * peer range that n8n verification mandates) and older releases of this package failed to load against it. Since 0.3.0 the nodes tolerate old copies, but if you still hit loading issues, refresh the hoisted copy and retry the install:

cd ~/.n8n/nodes && npm install n8n-workflow@latest

Security notes

  • Private keys are stored encrypted by n8n (password-type fields) and never leave the instance: tokens are generated locally and only sent to the official Google endpoints over HTTPS.
  • Use a dedicated service account with the minimum permissions (View app information + Reply to reviews).
  • API error responses are surfaced with their original message, without leaking request headers or credentials.

About

This package is built and maintained by Maximiliana (BUKIT APP, SL), where we use it in production for our own apps. It is offered as-is, on a best-effort basis, with no warranty or support commitment — but it's here, it works, and we intend to keep it that way.

Issues and pull requests are welcome on GitHub. For anything else, reach out at pedro@maximiliana.es.

Google Play and the Google Play logo are trademarks of Google LLC. This project is not affiliated with, endorsed or sponsored by Google; the name and logo are used solely to identify the service the nodes integrate with.

License

MIT

About

n8n community node for Google Play reviews: fetch, reply, and a polling trigger for new reviews

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages