Every new review gets a short reply draft in your tone in a Google Sheet. Rules check each draft, and 1-2 star or sensitive reviews go to an Owner first tab with an email. Nothing is posted for you.
Fastest setup: open setup-page/index.html (in this download). It fills the workflow settings in your browser, then Test it sends four test reviews to your n8n and explains any failure in plain words. About 15 minutes in total (an estimate). SETUP-GUIDE.md has the same steps by hand. Later, Something stopped working? on the same page reruns every check.
Who it is for: Owner or manager of a restaurant, salon, shop or other local business with 10-200 new online reviews a month and no time to answer each one well.
Format: n8n workflow (JSON) · Version: 1.1.0 · Tested on: n8n 2.45.6 (engine dry run, mocked external services)
What it does
You send each new review to the webhook. The AI drafts a short reply in your tone, using the reviewer's first name and what they actually said. Plain rules then check the draft: no refund, discount or free-item promises in public, no email addresses, phone numbers or links, no admitting fault or liability, a sensible length and your sign-off. Reviews of 1-2 stars, reviews with sensitive words (refund, injury, lawyer and others you choose) and drafts that fail a check go to the Owner first tab and you get an email. Other drafts go to the Drafts tab for you to copy and post. Nothing is posted automatically. If the AI is down or gives a bad answer, a safe template reply is used; for 1-3 star reviews it also goes to Owner first. The same review id is never drafted twice.
What you need
- n8n (self-hosted free, or n8n Cloud on your plan)
- An OpenAI API key or other OpenAI-compatible endpoint (you pay the provider per call)
- A Google account for the sheet
- An SMTP email account for owner emails and failure alerts
- A way to send each new review to the webhook (form, Sheets export or your review tool's webhook); this workflow does not read Google or Yelp for you
5-minute setup
- In n8n, open Workflows → Import from File and pick
workflow.json. - Make a Google Sheet with two tabs named
DraftsandOwner first. Put this header row in both:received_at, platform, review_id, rating, reviewer, location, review, draft_reply, drafted_by, status, notes. - Open the node Set review settings. Replace every value that starts with
REPLACE_WITH. The table below says what each one is. - Click each node with a red warning and pick or create its credential: Header Auth (webhook), OpenAI (Ask AI model), Google Sheets OAuth2, SMTP.
- Open Workflow settings → Error workflow and pick this same workflow. Then put your email in the two
REPLACE_WITHfields of Email failure alert. - Click Publish (or Activate). Then do the sample test below.
Try it with the sample
Send the sample with curl (replace the URL and header value with yours):
curl -X POST "https://YOUR-N8N/webhook/new-review" -H "X-Api-Key: YOUR_VALUE" -H "Content-Type: application/json" -d '{"review_id":"g-1","rating":5,"text":"Lovely pasta and quick service.","reviewer_first_name":"Sam","platform":"google"}'
You should get {"ok":true,"route":"ready"} and a new row in the Drafts tab.
Test it offline first (no n8n needed)
With Node.js 18 or newer, run this in the unzipped folder:
node tests/run_offline.js
It runs the workflow's own Code nodes from workflow.json on the 13 test cases in tests/cases.json, with stand-ins for the AI, Google Sheets, email and webhook replies. It should end with 33/33 checks pass. Add --verbose to see every check. It needs no account, no internet and no npm install. Change a setting or the code, then run it again to see what your change affects.
Settings you can change
| Setting | Default | What it is |
|---|---|---|
business_name |
REPLACE_WITH_BUSINESS_NAME |
Your business name as customers know it |
signoff |
The team at REPLACE_WITH_BUSINESS_NAME |
How replies are signed |
tone |
warm, specific, brief, no marketing language |
Voice for the drafts |
contact_line |
Please contact us directly so we can make this right. |
What unhappy reviewers are asked to do (no email or phone in public replies) |
escalate_words |
refund,lawyer,legal,sue,injury,injured,sick,food poisoning,discrimination,racist,police,unsafe,scam,fraud,stolen |
Words that always send a review to you first |
ai_base_url |
https://api.openai.com/v1 |
Any OpenAI-compatible endpoint |
ai_model |
gpt-5-mini |
Model name |
sheet_id |
REPLACE_WITH_YOUR_GOOGLE_SHEET_ID |
Sheet for drafts |
drafts_tab |
Drafts |
Drafts ready for your one-click approval |
owner_tab |
Owner first |
Sensitive reviews that need you |
sender_email |
REPLACE_WITH_SENDER_EMAIL |
From address (SMTP) |
alert_to_email |
REPLACE_WITH_YOUR_EMAIL |
Who approves sensitive replies |
dedupe_hours |
8760 |
Never draft twice for the same review id (1 year) |
What goes in and what comes out
Inputs: New review as JSON to a webhook (review id; star rating; text; first name; location; platform) from a form; export or your review tool
Outputs: Row in the Drafts tab with the reply to approve; Row in the Owner first tab with the reason; Owner email for sensitive reviews; Duplicate and invalid-input responses
AI disclosure and limits
Built by Oarsman AI's AI agents and checked by the automated test report shipped with it. The AI step can be wrong: it can misread a document, mislabel a message or write an awkward sentence. That is why every AI answer is checked by plain rules, doubtful results go to a person, and nothing leaves your business without the approval step described in the README. We do not see your data: it stays in your accounts.
Limits: - Does not read reviews from Google, Yelp or other sites; you send them in. - Does not post replies; you copy the approved reply to the review site. - One review per request. - Replies are in the language of your tone setting and prompt; other languages are not checked by the rules.
Not tested by us: - a live OpenAI call (the AI step was mocked with fixed answers) - live Google Sheets, SMTP and n8n Cloud - reply quality with a real model on your reviews - the Error Trigger email (needs a published workflow)
Files
- oarsman-review-reply-drafter-v1.1.0.zip
- SETUP-GUIDE.md
- setup-page
- CHANGELOG.md
- QA-REPORT.json
- README.md
- SPEC.md
- SUPPORT.md
- TROUBLESHOOTING.md
- VERSION
- VIDEO-SCRIPT.md
- diagram.mmd
- diagram.png
- logic.js
- preview.png
- tests
- workflow.json
Help
Self-serve: see TROUBLESHOOTING.md (fixes and FAQ). There is no call, chat or email support. Fixes ship as new versions at your download link. Refund: 14 days, works as described, through the checkout platform.