Every 30 minutes
Get a Slack alert when a Google review is edited
Every 30 minutes, Google reviews are checked for edits, and a Slack message shows the old and new star rating and text whenever a customer changes their review.
- Runs
- Every 30 minutes
- Apps
- Google Business Profile, Slack
- AI
- Not needed
- Access
- read (business.manage); chat:write
Send this to your assistant
Create a ClickRuntime automation: every 30 minutes, check Google reviews for Rosa's Bakery and post to #reviews in Slack whenever a customer edits a review, showing the old and new stars and text, and whether we had already replied.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Google tells you when a review is new, but not when a customer goes back and changes it. A three-star review becomes one star after a second visit, or a complaint you answered becomes a five-star thank-you, and nobody on the team sees it.
This automation keeps a copy of each recent review and posts to Slack whenever the stars or text change, with the before and after versions and whether you had already replied.
You find out when your reply needs updating, and you get to see when your service recovery worked.
What you get out of it
Edits no longer invisible
Changed stars and text are posted to Slack.
Before and after
Both versions are shown side by side.
Reply check
The message says whether your existing reply may need updating.
Good news too
Upgraded reviews show which follow-ups worked.
No first-run flood
Alerts begin after the first check.
How it works
What happens, step by step
Every 30 minutes, ClickRuntime reads your recent Google reviews.
It compares each one with the version it saw last time.
When a customer has changed the stars or the text, it posts both versions to Slack.
The message says whether you had already replied, so you know if your reply still fits.
Before it runs live
- Connect Google Business Profile
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Google Sheets
- Combine it with other Google Business Profile and Slack steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, notify, state, report_fetched
LOCATION = "accounts/1234567890/locations/9876543210" # Rosa's Bakery
STARS = {"ONE": 1, "TWO": 2, "THREE": 3, "FOUR": 4, "FIVE": 5}
stars = lambda n: "★" * n + "☆" * (5 - n)
@on_trigger
def run(event):
resp = http.get(f"https://mybusiness.googleapis.com/v4/{LOCATION}/reviews",
params={"orderBy": "updateTime desc", "pageSize": 50},
headers={"Authorization": f"Bearer {credentials.connection('google', 'work')}"})
resp.raise_for_status()
known = state.get("known") or {}
first_run = not known
edits = 0
for r in resp.json().get("reviews", []):
now = {"stars": STARS[r["starRating"]], "text": r.get("comment", "")}
before = known.get(r["reviewId"])
known[r["reviewId"]] = now
if first_run or not before or before == now:
continue
reply = r.get("reviewReply")
replied = f"We replied on {reply['updateTime'][:10]}; check the reply still fits." if reply else "No reply from us yet."
notify.slack(f":pencil2: {r['reviewer']['displayName']} edited their review: "
f"{stars(before['stars'])} → {stars(now['stars'])}\n"
f"Before: \"{before['text'] or '(no text)'}\"\nNow: \"{now['text'] or '(no text)'}\"\n{replied}",
channel="#reviews")
edits += 1
state.set("known", dict(list(known.items())[:500]))
report_fetched(edits)
return {"edits": edits}FAQ
Common questions
Why would I care about edited reviews?
Does the first run post every review?
How far back does it look?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Reply to Google reviews from a Slack thread
New Google reviews are posted to a Slack channel, and a reply typed in the review's thread is published as the owner reply on Google within 5 minutes.
See how it worksApprove replies to Google reviews from Slack
Each new Google review is posted in Slack with its mood and a draft reply, and the reply goes live when you approve it.
See how it worksShare weekly Business Profile results in Slack
Every Monday the team sees last week's profile views, calls, direction requests and new reviews in Slack, with a short summary.
See how it worksKeep exploring
Set up “Get a Slack alert when a Google review is edited” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.