Google reviews → AI reply drafts + bad-review alerts
Every new Google review gets a suggested reply, and 1–3 star reviews alert your team instantly.
How it works
- Detect a new review on your Google Business Profile.
- AI writes a short, warm reply in the reviewer's language.
- Low ratings go to Slack as urgent; others get the suggested reply to post.
Diagram
Build it
Pick your tool — same automation, step by step.
Copy and paste straight into an n8n canvas (Ctrl+V), or download and use Import from File. Then connect your own credentials and replace every YOUR_… placeholder. AI steps use a Claude model node — swap it for OpenAI, Gemini or Ollama if you prefer.
Show code (216 lines)
{
"name": "Google reviews → AI reply drafts + bad-review alerts (Flowngn)",
"nodes": [
{
"parameters": {
"content": "## Google reviews → AI reply drafts + bad-review alerts\nEvery new Google review gets a suggested reply, and 1–3 star reviews alert your team instantly.\n\n**Setup**\n1. Open each node and connect your own credentials.\n2. Replace every YOUR_… placeholder.\n3. Test once, then activate.\n\nFree template from Flowngn",
"height": 260,
"width": 340
},
"id": "26068bc2-eac9-4e99-a8cb-b57353c0cc3b",
"name": "Setup notes",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-420,
-60
]
},
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyHour"
}
]
},
"account": {
"__rl": true,
"value": "YOUR_ACCOUNT_ID",
"mode": "list"
},
"location": {
"__rl": true,
"value": "YOUR_LOCATION_ID",
"mode": "list"
},
"event": "reviewAdded"
},
"id": "26068bc2-eac9-4e99-a8cb-b57353c0cc3b",
"name": "New review",
"type": "n8n-nodes-base.googleBusinessProfileTrigger",
"typeVersion": 1,
"position": [
0,
0
]
},
{
"parameters": {
"promptType": "define",
"text": "=Write a short, warm, professional reply from YOUR_BUSINESS to this Google review, in the reviewer's language. Thank them by first name. If the review is negative, apologise, don't argue, and invite them to contact YOUR_CONTACT. Never offer refunds or discounts.\n\nRating: {{ $json.starRating }}\nReviewer: {{ $json.reviewer?.displayName }}\nReview: {{ $json.comment || '(no text)' }}"
},
"id": "26068bc2-eac9-4e99-a8cb-b57353c0cc3b",
"name": "Draft reply",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.5,
"position": [
300,
0
]
},
{
"parameters": {
"model": {
"__rl": true,
"value": "claude-sonnet-5",
"mode": "list"
},
"options": {}
},
"id": "26068bc2-eac9-4e99-a8cb-b57353c0cc3b",
"name": "Claude model",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"typeVersion": 1.3,
"position": [
300,
220
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose"
},
"conditions": [
{
"id": "c1",
"leftValue": "={{ ['ONE', 'TWO', 'THREE'].includes($('New review').item.json.starRating) }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "26068bc2-eac9-4e99-a8cb-b57353c0cc3b",
"name": "3 stars or less?",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
600,
0
]
},
{
"parameters": {
"select": "channel",
"channelId": {
"__rl": true,
"value": "#reviews",
"mode": "name"
},
"text": "=🚨 {{ $('New review').item.json.starRating }}-star review from {{ $('New review').item.json.reviewer?.displayName }}:\n> {{ $('New review').item.json.comment }}\n\n*Suggested reply:*\n{{ $json.text }}",
"otherOptions": {}
},
"id": "26068bc2-eac9-4e99-a8cb-b57353c0cc3b",
"name": "Alert #reviews (urgent)",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.2,
"position": [
900,
0
]
},
{
"parameters": {
"select": "channel",
"channelId": {
"__rl": true,
"value": "#reviews",
"mode": "name"
},
"text": "=⭐ New {{ $('New review').item.json.starRating }}-star review — suggested reply:\n{{ $json.text }}",
"otherOptions": {}
},
"id": "26068bc2-eac9-4e99-a8cb-b57353c0cc3b",
"name": "Post draft to #reviews",
"type": "n8n-nodes-base.slack",
"typeVersion": 2.2,
"position": [
900,
220
]
}
],
"connections": {
"New review": {
"main": [
[
{
"node": "Draft reply",
"type": "main",
"index": 0
}
]
]
},
"Draft reply": {
"main": [
[
{
"node": "3 stars or less?",
"type": "main",
"index": 0
}
]
]
},
"3 stars or less?": {
"main": [
[
{
"node": "Alert #reviews (urgent)",
"type": "main",
"index": 0
}
],
[
{
"node": "Post draft to #reviews",
"type": "main",
"index": 0
}
]
]
},
"Claude model": {
"ai_languageModel": [
[
{
"node": "Draft reply",
"type": "ai_languageModel",
"index": 0
}
]
]
}
},
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"meta": {
"templateCredsSetupCompleted": false
},
"tags": []
}In Make, create a new scenario and add these modules in order:
- Google My Business › Watch Reviews
- Anthropic Claude › Create a Prompt (or OpenAI › Create a Completion)
- Router with two routes: “3 stars or less?” (yes / no filters)
- If yesSlack › Create a Message
- If noSlack › Create a Message
- Every module run uses Make operations — the free plan includes a monthly quota.
- Module and step names can differ slightly as Make and Zapier update their apps.
In Zapier, create a new Zap and add these steps in order:
- Google Business Profile — New Review
- Anthropic (Claude) — Send Message (or ChatGPT — Conversation)
- Paths by Zapier: “3 stars or less?” (yes / no)
- If yesSlack — Send Channel Message
- If noSlack — Send Channel Message
- Zaps with more than two steps need a paid Zapier plan.
- Webhooks, Filters/Paths and Code by Zapier are premium features on some Zapier plans.
- Module and step names can differ slightly as Make and Zapier update their apps.
Tips
- Reply to every review — it helps your Maps ranking — but keep a human posting the final reply.
Related flows
AI triage for support emails
AI labels every support email (billing, bug, question) and routes it to the right place.
Catch unhappy customers from feedback forms
AI reads every feedback response and alerts you instantly when it's negative.
Translate foreign-language support emails
AI translates non-English support emails and posts the translation to Slack.