Google Business Profile to Slack, review themes fast
Your Google Business Profile reviews are telling you what to fix. The problem is you usually read them late, in batches, or not at all because it’s yet another tab to check.
This hits local marketing teams first, but owners and ops leads feel it too. With this GBP Slack themes setup, your team gets clear sentiment themes in Slack without someone manually collecting reviews and writing a summary.
Below, you’ll see exactly what the workflow does, what you need, and how the moving parts fit together so you can act on feedback while it still matters.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Business Profile to Slack, review themes fast
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "Get many reviews", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Sentiment Analysis", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n3@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n4@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "AI Agent1", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "AI Agent2", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model1", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set time period", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter review based on the t..", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map the comment and rating", pos: "b", h: 48 }
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/>Convert to json string"]
n12["<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/>Convert to json string1"]
n13["<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/>Convert to json string2"]
n14["<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/>Restructure the sentiment po.."]
n15["<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/>Restructure the sentiment ne.."]
n16["<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/>Restructure the sentiment ne.."]
n17["<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/>Send message to slack channe.."]
n18["<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/>Send message to slack channe.."]
n19["<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/>Send message to slack channe.."]
n4 --> n14
n5 --> n15
n6 --> n16
n8 --> n0
n0 --> n9
n3 --> n8
n1 --> n11
n1 --> n12
n1 --> n13
n11 --> n4
n12 --> n5
n13 --> n6
n2 -.-> n4
n2 -.-> n5
n2 -.-> n6
n7 -.-> n1
n10 --> n1
n9 --> n10
n15 --> n18
n16 --> n19
n14 --> n17
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 n3 trigger
class n1,n4,n5,n6 ai
class n2,n7 aiModel
class n9 decision
class n11,n12,n13,n14,n15,n16 code
classDef customIcon fill:none,stroke:none
class n11,n12,n13,n14,n15,n16,n17,n18,n19 customIcon
The Problem: Reviews pile up, and the patterns get missed
Reviews don’t hurt you because they’re negative. They hurt you because they’re invisible until the damage is already done. One unhappy customer mentions “rude staff” on Monday, another says “ignored at the counter” on Thursday, and by the time someone checks the profile next week you’ve got a trend, not a one-off. Meanwhile, the positive reviews that should be fed back to the team (so they repeat what worked) get buried under the noise. It’s a constant mental tax: check reviews, copy comments, guess themes, write a summary, then hope someone reads it.
It adds up fast. Here’s where it breaks down in real life.
- Someone has to remember to check GBP, and that task keeps sliding down the priority list.
- Manual summaries are inconsistent, so you can’t compare “this week vs. last week” with any confidence.
- The same issue shows up across multiple reviews, but no one stitches the story together.
- Slack is where work happens, yet the feedback sits somewhere else, which means it doesn’t get acted on.
The Solution: Scheduled review sentiment summaries sent to Slack
This n8n workflow pulls a batch of Google Business Profile reviews on a schedule, filters them to a defined time window, and then runs sentiment analysis with Gemini so you get structured themes instead of a messy comment dump. After the reviews are scored and grouped, the workflow creates separate summaries for positive, neutral, and negative feedback, because those need different responses. Finally, it formats everything into clean Slack Block Kit messages, so your team can scan the highlights in seconds, not minutes. The end result is a set of Slack posts that feel like a weekly (or daily) “voice of customer” report, delivered automatically to the channel where your team already pays attention.
The workflow starts with a scheduled trigger. It fetches and filters reviews by date, maps each comment to its rating, then Gemini-powered agents summarize each sentiment bucket. Slack receives three readable alerts (positive, neutral, negative) with themes you can turn into actions.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say your location gets about 30 new reviews a week. Manually, someone might spend 3 minutes per review to open it, skim it, and copy the useful bits into Slack or a doc, plus another 30 minutes trying to summarize patterns. That’s roughly 2 hours a week, and the “summary” still depends on who wrote it. With this workflow, you set a weekly time window once, let it run on schedule, and your team gets three Slack posts (positive, neutral, negative) after a short processing wait. Call it a few minutes to read, then you’re discussing actions instead of doing admin.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Business Profile API to fetch reviews programmatically.
- Gemini API credentials for sentiment scoring and summaries.
- Slack to deliver the themed reports to a channel.
Skill level: Intermediate. You’ll connect accounts, set a date window, and confirm API permissions for Google Business Profile.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A schedule kicks things off. The workflow runs from a Scheduled Run Trigger, so you can check reviews daily, weekly, or on whatever cadence matches your volume.
A time window keeps the report relevant. Define Time Window sets the period you care about, then the workflow retrieves a batch of reviews and filters them by date so older feedback doesn’t muddy the picture.
Sentiment and themes get generated automatically. Reviews are mapped to include the comment and rating, then a sentiment scoring step classifies the feedback and passes it into Gemini-powered agents that write separate summaries for positive, neutral, and negative items.
Slack gets clean, readable messages. The workflow restructures the summaries into Slack Block Kit format and posts three alerts to your chosen channel, so the team sees themes at a glance.
You can easily modify the time period and the Slack formatting based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Trigger
Set the recurring schedule that starts the review sentiment pipeline.
- Add and open Scheduled Run Trigger.
- Set the schedule Rule to run on the months interval (as shown in the node configuration).
- Connect Scheduled Run Trigger to Define Time Window.
Step 2: Connect Google Business Profile and Filter by Date
Define the review time window and fetch reviews from Google Business Profile, then filter them by update time.
- Open Define Time Window and set period to
yearand time to3. - Open Retrieve Review Batch and set Resource to
review, Operation togetAll, and Limit to1000. - In Filter Reviews by Date, set Left Value to
={{ $json.updateTime }}and Right Value to={{ $today.minus({ [ $('Define Time Window').item.json.period ]: $('Define Time Window').item.json.time }).toISO() }}. - Connect Define Time Window → Retrieve Review Batch → Filter Reviews by Date.
Credential Required: Connect your Google Business Profile credentials in Retrieve Review Batch.
Step 3: Map Review Fields and Run Sentiment Scoring
Normalize review fields, then run sentiment analysis with Gemini.
- Open Map Comment Rating and set the field mappings: Comment to
={{ $json.comment ?? "no comment" }}, Raiting to={{ $json.starRating ?? "0" }}, and Date to={{ $json.updateTime }}. - Open Sentiment Scoring and set Input Text to
={{ $json.Comment }}{{ $json.Raiting }}{{ $json.Date }}. - In Sentiment Scoring, keep the options for batching and categories (Positive, Neutral, Negative) as defined.
- Connect Filter Reviews by Date → Map Comment Rating → Sentiment Scoring.
Credential Required: Connect your googlePalmApi credentials in Gemini Model for Sentiment. This model is linked to Sentiment Scoring as its language model.
Step 4: Assemble Feedback and Generate AI Summaries
Aggregate feedback JSON and create sentiment-specific summary reports using Gemini.
- Keep Build Feedback JSON, Assemble Feedback JSON 2, and Assemble Feedback JSON 3 using the provided JavaScript to build
feedbackpayloads. - Connect the AI agents: Build Feedback JSON → Positive Summary Agent, Assemble Feedback JSON 2 → Neutral Summary Agent, and Assemble Feedback JSON 3 → Negative Summary Agent.
- Sentiment Scoring outputs to Build Feedback JSON, Assemble Feedback JSON 2, and Assemble Feedback JSON 3 in parallel.
- Ensure each Summary Agent keeps the provided Prompt content and Prompt Type set to
define.
Credential Required: Connect your Gemini credentials in Gemini Chat Core. This model powers Positive Summary Agent, Neutral Summary Agent, and Negative Summary Agent (add credentials to the parent model, not the agents).
Step 5: Format Slack Blocks and Send Alerts
Convert AI output into Slack block messages and post to the target channel.
- Keep the JavaScript in Format Positive Slack Blocks, Format Neutral Slack Blocks, and Format Negative Slack Blocks to parse JSON and build Slack block arrays.
- In each Slack node, set Message Type to
blockand Blocks UI to={{ '{ "blocks": ' + JSON.stringify($json.blocks) + ' }' }}. - In Post Positive Slack Alert, Post Neutral Slack Alert, and Post Negative Slack Alert, set Channel to your target Slack channel (replace
[YOUR_ID]). - Connect Format Positive Slack Blocks → Post Positive Slack Alert, Format Neutral Slack Blocks → Post Neutral Slack Alert, and Format Negative Slack Blocks → Post Negative Slack Alert.
Credential Required: Connect your slackOAuth2Api credentials in Post Neutral Slack Alert and Post Negative Slack Alert.
Credential Required: Connect your slackOAuth2Api credentials in Post Positive Slack Alert (no credentials are configured yet).
Step 6: Test and Activate Your Workflow
Run a manual test to verify review filtering, sentiment scoring, AI summaries, and Slack delivery.
- Click Execute Workflow and confirm Retrieve Review Batch returns reviews, then Filter Reviews by Date outputs only the last 3 years.
- Check Sentiment Scoring for sentiment results and verify the three feedback JSON nodes generate
feedbackstrings. - Confirm the Summary Agents return valid JSON and the Slack formatters generate a
blocksarray. - Verify Slack messages appear in the specified channel for positive, neutral, and negative summaries.
- Toggle the workflow to Active to enable the scheduled monthly run.
Common Gotchas
- Google Business Profile API access can be the real blocker. If the workflow can’t fetch reviews, confirm the API is enabled in Google Cloud, your project is approved, and the account has access to the right location.
- If you’re using Wait nodes or external processing, timing can drift. Bump up the wait duration if Slack posts fail because the AI summary nodes returned empty output.
- Gemini prompts that are too generic create fluffy summaries. Add your brand context (what “good service” means to you, what to flag as urgent) or you will keep editing the wording.
Frequently Asked Questions
About an hour if your Google Business Profile API access is already approved.
No. You’ll mostly connect accounts and paste in API credentials. The workflow already handles the hard parts like formatting Slack Block Kit messages.
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 Gemini API usage costs, which depend on how many reviews you summarize.
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 duplicate the “Retrieve Review Batch” step per location or loop through a list of location IDs, then route each location’s summaries to the right Slack channel. Common customizations include changing the Define Time Window logic (daily vs. weekly), editing the agent prompts to match your brand voice, and combining all sentiments into one single Slack post if your team prefers one message.
Usually it’s not Slack or Gemini, it’s GBP permissions. Confirm the Google Business Profile API is enabled in your Google Cloud project, the project is approved for the API, and the authenticated account actually has access to the location you’re querying. If it worked once and stopped, rotate credentials and re-check scopes.
Practically, it can handle hundreds of reviews per run for most small teams. On n8n Cloud, capacity depends on your plan’s execution limits, and on self-hosted it depends on your server. If you’re pulling very large batches, reduce the time window (daily instead of monthly) so the AI summaries stay fast and readable.
Often, yes. This workflow has branching for positive/neutral/negative paths, code-based formatting for Slack Block Kit, and more room for “real logic” without paying extra per step. Zapier and Make can still work, but you may hit limits when you want custom JSON restructuring or more advanced AI prompting. Another practical point: self-hosting n8n keeps costs predictable if you’re processing lots of reviews. If you only need a basic “new review → send Slack message” alert, a lighter tool might be fine. Talk to an automation expert if you want help choosing.
Once this is running, review monitoring stops being a chore and becomes a steady signal. The workflow handles the repetitive sorting and summarizing so you can focus on fixing the real issues.
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.