Google Sheets + Google Business Profile, replies done
You get a new Google review. You mean to respond quickly. Then the day gets busy, the notification disappears, and suddenly it’s been three days.
This review reply automation hits local marketing managers first, but agency teams and hands-on owners feel it too. Missed replies cost trust, and rushed replies create more problems than they solve.
This workflow watches for new Google Business Profile reviews, drafts a brand-matched reply with AI, posts it, and logs the whole thing in Google Sheets. You’ll see exactly what it does, what you need, and how it fits into your day.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Sheets + Google Business Profile, replies done
flowchart LR
subgraph sg0["Every 30 Minutes Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Every 30 Minutes", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Log to Business Sheet", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Post Reply (GMB)", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "Update Sheet (Success)", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Get Business Configs1", 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/code.svg' width='40' height='40' /></div><br/>Prepare Reply"]
n6["<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/>Log Success"]
n7["<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/>Filter Unreplied Reviews1"]
n8["<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/>No New Reviews1"]
n9@{ icon: "mdi:cog", form: "rounded", label: "Get Reviews (Digital Scalers)", pos: "b", h: 48 }
n10@{ icon: "mdi:robot", form: "rounded", label: "Message a model", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Reviews1", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Has Unreplied Reviews?1", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
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/>Prepare Reply1"]
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/>Log Success1"]
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/>Filter Unreplied Reviews2"]
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/code.svg' width='40' height='40' /></div><br/>No New Reviews2"]
n18@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Reviews", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Has Unreplied Reviews?2", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items1", pos: "b", h: 48 }
n21@{ icon: "mdi:cog", form: "rounded", label: "Get Reviews (Acuyu)", pos: "b", h: 48 }
n22@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route Locations", pos: "b", h: 48 }
n23@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare Data", pos: "b", h: 48 }
n24@{ icon: "mdi:database", form: "rounded", label: "Update Business Config Sheet", pos: "b", h: 48 }
n25@{ icon: "mdi:database", form: "rounded", label: "Log to Business Sheet1", pos: "b", h: 48 }
n26@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare Data1", pos: "b", h: 48 }
n27@{ icon: "mdi:robot", form: "rounded", label: "Message a model2", pos: "b", h: 48 }
n28@{ icon: "mdi:cog", form: "rounded", label: "Post Reply (GMB)1", pos: "b", h: 48 }
n29@{ icon: "mdi:database", form: "rounded", label: "Update Sheet (Success)1", pos: "b", h: 48 }
n30@{ icon: "mdi:database", form: "rounded", label: "Update Business Config Sheet1", pos: "b", h: 48 }
n6 --> n3
n15 --> n29
n23 --> n10
n26 --> n27
n5 --> n13
n18 --> n25
n14 --> n20
n11 --> n1
n13 --> n24
n13 --> n2
n10 --> n5
n22 --> n9
n22 --> n21
n0 --> n4
n20 --> n30
n20 --> n28
n27 --> n14
n2 --> n6
n28 --> n15
n21 --> n16
n4 --> n22
n1 --> n23
n25 --> n26
n3 --> n13
n12 --> n11
n12 --> n8
n19 --> n18
n19 --> n17
n29 --> n20
n7 --> n12
n16 --> n19
n9 --> n7
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 n10,n27 ai
class n12,n19,n22 decision
class n1,n3,n4,n24,n25,n29,n30 database
class n5,n6,n7,n8,n14,n15,n16,n17 code
classDef customIcon fill:none,stroke:none
class n5,n6,n7,n8,n14,n15,n16,n17 customIcon
The Problem: Review Replies Slip, Quality Drops
Review responses are one of those “small” tasks that quietly eat your week. Someone checks Google Business Profile in the morning, someone else checks again after lunch, and nobody is sure what’s been answered. Now add multiple locations. Or multiple clients. It turns into a messy loop of tabs, screenshots, copy-paste replies, and trying to sound like the same brand every time. Worst part: when you finally do respond, it’s rushed, generic, or a little defensive, which is not the tone you wanted out in public.
None of this is hard. It’s just constant. And that’s why it breaks.
- Checking for new reviews across locations turns into a daily “did anyone do this?” moment.
- Teams respond with different wording, so your brand voice drifts without anyone noticing.
- A missed negative review can sit for days, which looks careless to future customers.
- There’s no clean audit trail, so reporting to clients (or leadership) becomes guesswork.
The Solution: Auto-Draft, Auto-Post, and Log Every Reply
This n8n workflow runs on a schedule (every 30 minutes) and acts like a reliable reputation assistant. First, it reads a Google Sheet where you store each business location’s settings, like the Location ID, the preferred tone (friendly, professional, casual), and any context you want the AI to know. Then it pulls in the latest Google Business Profile reviews for each location and filters out anything that already has a reply, so you don’t accidentally double-post. For each new review, it prepares the important details, sends them to an AI model to draft a response that matches your chosen tone, formats the text, and publishes the reply back to Google Business Profile. Finally, it logs what happened in Google Sheets with timestamps so you can track activity, prove responsiveness, and spot patterns over time.
The workflow starts with a scheduled trigger and a settings sheet. From there, each location goes down its own branch: fetch reviews, detect “pending” ones, generate the reply draft, then publish and log the result. If there are no new reviews, it records that too, so your reporting stays honest.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you manage 10 locations and each gets about 3 new reviews a week. Manually, you might spend around 10 minutes per review between checking, drafting, approvals, and logging, which is roughly 5 hours weekly. With this workflow, the “work” is basically keeping the settings sheet up to date (maybe 10 minutes a week) while n8n checks every 30 minutes and posts automatically. The waiting happens in the background, not on your calendar.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for settings, logging, and reporting.
- Google Business Profile API to fetch reviews and publish replies.
- Google Gemini API key (get it from ai.google.dev).
Skill level: Intermediate. You’ll connect Google accounts, add API credentials, and test with a real location before scaling.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A scheduled check runs every 30 minutes. n8n triggers automatically, so you’re not relying on someone to remember to “go check reviews.”
Business settings load from Google Sheets. The workflow reads your configuration sheet for each location, including tone and a bit of business context. This is what keeps replies consistent instead of sounding like random template text.
Reviews are pulled, then filtered. For each location branch, it retrieves recent reviews from Google Business Profile and filters for ones that don’t have replies. It also handles the “no new reviews” case cleanly, so nothing downstream breaks.
AI drafts, Google publishes, Sheets logs. The Gemini node generates a draft reply, formatting code cleans it up, and the publish step posts it to the correct listing. Then Google Sheets is updated with success status and timestamps for an audit trail.
You can easily modify the reply tone and business context to match each location or client. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Interval Trigger
Set the workflow to run on a schedule so it can regularly check for new Google Business Profile reviews.
- Add and open Scheduled Interval Trigger to define when the workflow runs.
- Choose your desired interval in Scheduled Interval Trigger (e.g., hourly or daily) to match your review response cadence.
- Confirm that Scheduled Interval Trigger connects to Fetch Business Settings as shown in the workflow.
Step 2: Connect Google Sheets
Configure all Google Sheets nodes to read business settings, record review data, and update processing status for each location.
- Open Fetch Business Settings and connect your spreadsheet containing business configuration.
- Connect Google Sheets credentials to all sheet nodes: Fetch Business Settings, Record to Sheet A, Record to Sheet B, Update Sheet Status A, Update Sheet Status B, Update Config Sheet A, and Update Config Sheet B.
- Credential Required: Connect your Google Sheets credentials.
Step 3: Set Up Review Retrieval and Routing
Route the workflow by location and pull reviews from Google Business Profile for each branch.
- In Route by Location, configure the conditions that direct data to Retrieve Reviews Digital and Retrieve Reviews Acuyu.
- Open Retrieve Reviews Digital and Retrieve Reviews Acuyu to select the appropriate business location profiles.
- Credential Required: Connect your Google Business Profile credentials in both Retrieve Reviews Digital and Retrieve Reviews Acuyu.
- Confirm that each retrieval node feeds into its respective filter path: Retrieve Reviews Digital → Filter Pending Reviews A and Retrieve Reviews Acuyu → Filter Pending Reviews B.
Step 4: Set Up Review Filtering and Mapping
Filter new reviews, split them into individual items, and map the fields needed for AI drafting and posting.
- Review Filter Pending Reviews A and Filter Pending Reviews B to ensure they correctly detect reviews without a reply.
- In Check Pending Reviews A and Check Pending Reviews B, confirm the “true” path sends to Split Review Items A and Split Review Items B, while the “false” path sends to No New Reviews A and No New Reviews B.
- Verify that Split Review Items A and Split Review Items B each connect to their matching record nodes: Record to Sheet A and Record to Sheet B.
- Open Map Review Data A and Map Review Data B to confirm they output the fields required by the AI draft nodes.
Step 5: Set Up AI Drafting and Posting
Generate reply drafts with Google Gemini, format the response, iterate through items, and publish replies back to Google Business Profile.
- Open Generate Reply Draft A and Generate Reply Draft B and configure the prompt and model settings to match your brand voice.
- Credential Required: Connect your Google Gemini credentials in Generate Reply Draft A and Generate Reply Draft B.
- Verify that each draft flows to formatting: Generate Reply Draft A → Format Reply Text A and Generate Reply Draft B → Format Reply Text B.
- Check that Format Reply Text A and Format Reply Text B pass into Iterate Reviews A and Iterate Reviews B for controlled posting.
- In Publish Reply A and Publish Reply B, select the correct location and ensure the reply text field uses the formatted output.
- Credential Required: Connect your Google Business Profile credentials in Publish Reply A and Publish Reply B.
Step 6: Configure Logging and Status Updates
Record successful replies and update sheet status fields to avoid double-posting.
- Confirm the success chain: Publish Reply A → Log Reply Success A → Update Sheet Status A → Iterate Reviews A.
- Confirm the success chain for the second branch: Publish Reply B → Log Reply Success B → Update Sheet Status B → Iterate Reviews B.
- Ensure Update Sheet Status A and Update Sheet Status B write a status field that marks the review as replied.
Step 7: Test and Activate Your Workflow
Run a full test to confirm reviews are fetched, drafted, and posted correctly before turning on scheduled execution.
- Click Execute Workflow to run a manual test starting from Scheduled Interval Trigger.
- Verify that review data is written to the sheets via Record to Sheet A and Record to Sheet B, and that replies are generated in Generate Reply Draft A and Generate Reply Draft B.
- Confirm successful posting by checking Publish Reply A and Publish Reply B outputs and the updates in Update Sheet Status A and Update Sheet Status B.
- When the test succeeds, toggle the workflow to Active to enable scheduled runs.
Common Gotchas
- Google Business Profile credentials can expire or need specific permissions. If things break, check your Google Cloud OAuth consent screen and API scopes 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.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 20 minutes if your Google accounts and API access are ready.
No. You’ll mostly connect accounts and paste in credentials. The only “technical” part is double-checking your Google permissions so the workflow can publish replies.
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, which is usually small for short review replies.
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, and it’s one of the best parts. You store tone and context in the Google Sheets “business settings” rows, then the workflow routes each location through its own branch and passes those settings into the “Generate Reply Draft” Gemini node. Common tweaks include adding a short signature line, changing how you handle 1-star reviews, and inserting policy language for regulated industries.
Usually it’s expired OAuth credentials or missing API scopes for the Business Profile endpoints. Reconnect the Google account in n8n, confirm the correct project is selected in Google Cloud, and make sure the Business Profile API is enabled. If it only fails sometimes, you may be hitting rate limits while processing many locations at once. In that case, slow down batch sizes or spread locations across runs.
A lot. On n8n Cloud Starter you’re limited by monthly executions, while self-hosting has no execution cap (it depends on your server). Practically, most small teams can handle dozens of locations easily because the workflow only generates replies for reviews that are still pending.
Often, yes. n8n is simply more comfortable for multi-branch logic like “route by location,” filter out already-replied reviews, then batch and log results, and it doesn’t punish you for adding control steps. Zapier or Make can be quicker for a very simple 2-step flow, but they get awkward when you need separate pipelines per business and a clean audit trail in Sheets. Another factor is cost: self-hosted n8n can run unlimited executions, which matters once you’re checking every 30 minutes for many locations. Finally, this workflow already uses AI and formatting steps in a predictable way, so you get consistency without extra glue. If you want help choosing, Talk to an automation expert.
Once this is running, review replies stop being a daily scramble. The workflow handles the repetitive parts, and you get the time (and consistency) back.
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.