Google Maps to Slack, replies drafted and routed
You notice a bad Google review two days late. Now you’re apologizing after the customer already told ten friends. That lag is the real problem, and Google Maps Slack routing fixes it.
Store managers feel it first because they’re the ones putting out fires. Agency teams managing local SEO for clients get hit too. Customer support leads end up dragged into it, even when they had no idea the review existed.
This workflow watches for new Google Maps reviews, drafts a reply with AI, logs everything in Google Sheets, then posts the right alert to the right Slack channel. You will see how it works, what you need, and where teams usually trip up.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Maps to Slack, replies drafted and routed
flowchart LR
subgraph sg0["Every 24 Hours Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Every 24 Hours", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "CONFIG (Edit Here)", pos: "b", h: 48 }
n2@{ icon: "mdi:database", form: "rounded", label: "Get Existing IDs", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "Save to Google Sheets", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Rating 4", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Slack (Alert)"]
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Run an Actor and get dataset", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n8@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", pos: "b", h: 48 }
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Filter Duplicates"]
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Slack (Alert)1"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code in JavaScript"]
n7 --> n11
n4 --> n5
n4 --> n10
n0 --> n1
n2 --> n9
n9 --> n7
n1 --> n2
n1 --> n6
n11 --> n3
n8 -.-> n7
n3 --> n4
n6 --> n9
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n7 ai
class n8 aiModel
class n4,n6 decision
class n2,n3 database
class n11 code
classDef customIcon fill:none,stroke:none
class n5,n9,n10,n11 customIcon
The Problem: Review responses slip, and it costs you trust
Google Maps reviews don’t show up on your calendar. They land whenever they land, and if you’re not checking constantly, they sit there. A glowing 5-star review goes unacknowledged (so the customer feels ignored). A 2-star complaint stays public without a response (so new customers assume you don’t care). On top of that, writing replies is weirdly draining: you have to be polite, specific, on-brand, and fast, even when the feedback is unfair or vague.
It adds up fast, especially when you have multiple locations or multiple clients. Here’s where it breaks down.
- Someone has to remember to check Google Maps every day, and “every day” is exactly what gets skipped during busy weeks.
- Reply quality varies by whoever is available, which means the tone can swing from formal to defensive without anyone noticing.
- Negative reviews often get spotted too late, so you lose the chance to de-escalate while the customer is still paying attention.
- There’s no clean audit trail, so reporting on review volume, sentiment, and response status turns into manual screenshot work.
The Solution: AI-drafted replies + Slack routing + a Sheets log
This n8n workflow runs on a schedule (once every 24 hours by default) and checks your Google Maps listing for new reviews. It pulls the latest reviews using Apify, then compares them against a Google Sheet that acts like a simple database of what you’ve already seen. Only the new reviews move forward. From there, an AI Agent reads the review, generates a short summary, and drafts a reply that matches the star rating (apology and recovery language for low stars, gratitude and reinforcement for high stars). Finally, it logs the review, summary, and draft response to Google Sheets, and posts an alert to Slack with different channels depending on rating.
The workflow starts with the scheduled trigger and your configuration settings (Maps URL, Sheet ID, shop name). Next, it scrapes reviews, removes duplicates, and has AI produce the “what happened” summary plus a ready-to-send response. Slack gets the right message, and Google Sheets keeps the paper trail so nothing disappears.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say your location gets around 10 new Google reviews a week. Manually, you might spend about 5 minutes finding each one, then another 10 minutes writing a careful reply, plus a couple minutes logging it somewhere, which is roughly 3 hours a week. With this workflow, you set it once, then reviews get pulled and drafted automatically on the daily run. You’re mostly just approving and sending, often in a minute or two per review, so you get back about 2 hours most weeks.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for storing review history and drafts
- Slack to alert the right team by rating
- Apify account (get it from Apify, for the Google Maps scraper)
- OpenRouter or OpenAI API key (get it from your OpenRouter/OpenAI dashboard)
Skill level: Intermediate. You’ll connect a few accounts, copy IDs/URLs into a config node, and test one full run end-to-end.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A scheduled check runs daily. n8n kicks off every 24 hours (or whatever timing you choose) so you’re not relying on someone remembering to look at reviews.
Your workflow pulls fresh reviews and ignores repeats. Apify fetches the latest Google Maps reviews from your listing URL, then n8n compares review IDs to what’s already in Google Sheets so only new items continue.
AI writes the summary and the draft reply. The AI Agent produces a short “what the customer said” recap plus a response draft that matches the star rating and your shop name from the configuration.
Slack gets the right alert, and Sheets gets the record. Every processed review is appended to Google Sheets, then an If condition routes low ratings to a support channel and high ratings to a wins channel.
You can easily modify the rating threshold to change what counts as “needs attention” based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Trigger
Start the workflow on a 24-hour schedule so review checks run daily.
- Open Scheduled 24h Trigger and confirm the interval rule is set to run every hour with field set to
hours. - Verify Scheduled 24h Trigger connects to Configuration Settings as the next node.
Step 2: Connect Google Sheets
Provide spreadsheet details and connect the Google Sheets nodes used for deduplication and storage.
- In Configuration Settings, set MAPS_URL to
https://www.google.com/maps/place/YOUR_STORE_ID, SHOP_NAME toMy Store Name, MANAGER_NAME toManager, SHEET_ID toYOUR_GOOGLE_SHEET_ID, and SHEET_NAME toReviews. - Open Fetch Prior Review IDs and set Document to
={{ $json.SHEET_ID }}and Sheet to the list value forReviews. - Open Append to Spreadsheet and confirm Operation is
append, Document is={{ $('Configuration Settings').item.json.SHEET_ID }}, and Sheet is the list value forReviews. - Verify each column mapping in Append to Spreadsheet uses the provided expressions, including
={{ $json.text }},={{ $json.stars }},={{ $json.ai_summary }}, and={{ $json.ai_reply }}.
Credential Required: Connect your Google Sheets credentials in Fetch Prior Review IDs and Append to Spreadsheet.
Step 3: Configure Review Fetching and Deduplication
Pull new reviews from Google Maps and remove any that were already stored.
- In Execute Apify Scraper, keep Operation set to
Run actor and get datasetand Actor set toGoogle Maps Reviews Scraper (compass/Google-Maps-Reviews-Scraper). - Set Custom Body to the exact JSON expression:
={\n "startUrls": [\n {\n "url": "{{ $('Configuration Settings').item.json.MAPS_URL }}"\n }\n ],\n "maxReviews": 10,\n "language": "en",\n "reviewsSort": "newest"\n} - In Exclude Duplicate Reviews, set Mode to
combineand Join Mode tokeepNonMatchesso only new items pass through. - Set Merge By Fields to match field1
reviewerIdwith field2reviewId. - Confirm parallel execution: Configuration Settings outputs to both Fetch Prior Review IDs and Execute Apify Scraper in parallel.
Credential Required: Connect your Apify credentials in Execute Apify Scraper.
⚠️ Common Pitfall: If MAPS_URL is not a valid Google Maps place URL, Execute Apify Scraper will return no reviews.
Step 4: Set Up AI Analysis and Merge Results
Analyze each review with AI, then split the AI response into summary and reply fields.
- In Review Analysis Agent, set Text to
=Review Text: {{ $json.text }} Stars: {{ $json.stars }} Reviewer Name: {{ $json.reviewerName }}. - Keep the custom system prompt in Review Analysis Agent to enforce the
[Summary]and[Reply Draft]format. - Ensure OpenRouter Chat Engine is connected as the language model for Review Analysis Agent (AI sub-node credentials are added to OpenRouter Chat Engine, not the agent).
- In Merge AI Results, leave the JavaScript code as-is to split AI output into
ai_summaryandai_reply.
Credential Required: Connect your OpenRouter credentials in OpenRouter Chat Engine (this powers Review Analysis Agent).
Step 5: Configure Alerts and Routing
Route reviews by rating and send Slack notifications for positive or negative feedback.
- In Branch by Rating, confirm the condition uses value1
={{ $json.reviewId }}and value24. - In Slack Negative Alert, set Text to
🚨 Negative review detectedand choose the negative channel. - In Slack Positive Alert, set Text to
🚨 Positive review received!and choose the positive channel.
Credential Required: Connect your Slack OAuth2 credentials in both Slack Negative Alert and Slack Positive Alert.
⚠️ Common Pitfall: The condition in Branch by Rating compares reviewId to 4. If you intended to branch by star rating, update value1 to ={{ $json.stars }}.
Step 6: Test and Activate Your Workflow
Run a full test to verify scraping, AI enrichment, spreadsheet logging, and Slack notifications.
- Click Execute Workflow to run Scheduled 24h Trigger manually.
- Confirm Execute Apify Scraper returns review items and Exclude Duplicate Reviews filters out any existing records.
- Verify Review Analysis Agent produces AI output and Merge AI Results splits it into
ai_summaryandai_reply. - Check Append to Spreadsheet for new rows in the
Reviewssheet. - Confirm Slack Negative Alert or Slack Positive Alert fires based on the rating condition.
- When everything works, toggle the workflow to Active for daily automation.
Common Gotchas
- Google Sheets credentials can expire or need specific permissions. If things break, check the n8n Credentials page and your Google Cloud Sheets API access first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Apify scraping jobs can fail when the Google Maps URL format changes or the actor runs out of credits. Check the Apify run logs, then confirm the MAPS_URL in your configuration node is still valid.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 45 minutes if your accounts and APIs are ready.
No. You’ll mostly paste in IDs/URLs, connect credentials, and run a test execution.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenRouter/OpenAI usage (usually a few dollars a month at small volumes) and Apify scraping credits.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but you’ll want to loop over a list of MAPS_URL values and write the location name into the row you append in Google Sheets. Most teams duplicate the “Configuration Settings” values into a list, then run the same Apify scrape + duplicate check + AI Agent sequence per location. You can also route Slack messages by location (different channels) by extending the rating check with a second condition.
Usually it’s an expired OAuth token or the Slack app was installed without permission to post to that channel. Reconnect Slack in n8n Credentials, then confirm the target channel still exists and the workflow is pointing to the right one. If you’re using an incoming webhook instead, double-check the webhook URL hasn’t been rotated.
Plenty for a typical local business. On n8n Cloud Starter you’re limited by monthly executions, while self-hosting depends on your server. Practically, if you’re processing a few dozen new reviews per day across locations, you’ll be fine, but Apify and your AI provider will become the main throughput limits.
Often, yes. The tricky part here is not “send message to Slack,” it’s the combination of scraping, deduping against a sheet, branching by star rating, and generating consistent replies with an AI Agent. n8n handles that kind of logic without turning into a fragile chain of paid steps, and you can self-host if you want more control. Zapier or Make can still work if you already have a clean review source and you only need a simple alert. If you want help choosing, Talk to an automation expert.
Once this is running, reviews stop being a “when we get to it” task. The workflow handles the monitoring, drafting, routing, and logging so your team can focus on making things right.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.