automations / n8n · updated 2026-07-20
Negative Play-review Slack alerts
Every day, pull an app's newest Google Play reviews and push the 1- and 2-star ones into Slack with text, date, and permalink. A dedup step suppresses already-alerted reviews on later runs — at-least-once alerting: the first scheduled run covers the existing backlog, and a failed execution can repeat its alerts.
100 newest reviews per day cost $0.008 — about $0.24 per month per app, whether or not any alert fires.
What's inside
- 1.Every day (schedule trigger)
- 2.Get new reviews (HTTP Request → run-sync-get-dataset-items, sort: newest, one item per review)
- 3.Split by success (IF on {{ $json.success }})
- 4.Only 1-2 star reviews (Filter on {{ $json.score }} ≤ 2)
- 5.New reviews only (Code node: suppresses already-alerted review_ids via workflow static data — at-least-once, so a failed execution can repeat alerts)
- 6.Slack alert (HTTP Request → your Slack incoming webhook: stars, text, date, permalink — batched one message per ~1.1s to respect Slack's webhook rate limit, with retry on failure)
- 7.Failure row (false branch: app_id, code, request_id — not billed)
Set it up
Open the workflow on GitHub (button above), click Raw and copy that URL, then in n8n: Workflow → Import from URL. Open Get new reviews and replace YOUR_APIFY_TOKEN; set appIds to your app's package name. Open Slack alert and replace YOUR_SLACK_INCOMING_WEBHOOK_URL with a webhook from api.slack.com/messaging/webhooks. Then SAVE and PUBLISH (activate) the workflow — the schedule only fires, and the dedup memory only persists, while it is active. Expect the first scheduled run to alert every matching review currently in the newest 100; manual test runs always alert everything. The token comes from Apify Console → Settings → API tokens; the free tier works, and the run bills per delivered row on your Apify account.
Ways to extend it
- Swap the static-data dedup for a durable processed-ID store — a Sheets or database upsert on review_id. It reduces repeats and preserves dedup state across failed runs; the template still does not guarantee exactly-once Slack delivery.
- Loosen the Filter to score ≤ 3 during a rocky release, or add a keyword condition (crash, refund) at any rating.
- Duplicate the HTTP node with a competitor's package name and route to a separate channel.
- Point the webhook at Discord or Teams instead — any incoming-webhook URL works with the same JSON body pattern.
Going deeper: the n8n transcripts guide — the same run-sync HTTP pattern, step by step; the Python/pandas export guide for working with the same review rows. Actor pricing: what a Google Play Reviews Scraper run costs. Error codes the failure branch can carry: the error-code reference.