Monitor Product Reviews & Auto-Summarize Sentiment in n8n
Monitor Product Reviews and Auto-Summarize Sentiment in n8n
A single 1-star review with "terrible experience, never again" can sit unanswered for a week while you're busy shipping. By the time you notice it, three more have piled on. The fix is a scheduled n8n workflow that collects reviews, scores sentiment, and alerts the right person before a bad thread turns into a public incident.
This guide shows you exactly how to build it — nodes, configuration, and a real example JSON prompt — and how to run it continuously on your own n8n instance without managing a server.
What the Workflow Does
At a high level:
- Schedule Trigger wakes the workflow every hour (or every 15 minutes during business hours).
- HTTP Request nodes fetch raw review data from one or more sources (Google Business API, Trustpilot, App Store Connect, Shopify reviews, a custom endpoint — your choice).
- Split in Batches fans out the review list so each item is processed individually.
- IF checks whether the review has already been processed (using a timestamp or review ID stored in a Google Sheet or simple database node) to avoid double-alerting.
- AI/LLM node sends the review text to an LLM that scores sentiment (positive / neutral / negative) and extracts up to three themes (e.g., "shipping delay", "wrong item", "great packaging").
- Switch branches on the sentiment score: negative reviews go to a Slack/email alert; positive ones get queued for a weekly "wins" digest.
- Set normalises the output into a flat object before writing to your log sheet.
The result: your team sees negative reviews within minutes of them appearing, with the key complaint theme already extracted — no manual reading required.
Building It Step by Step
1. Schedule Trigger
Drop in a Schedule Trigger node. Set the interval to Every Hour for most shops. If you're running a high-volume SaaS or a sale event, switch to Every 15 Minutes — n8n handles the polling, and the AI node only runs when there is actually something new to score.
{
"rule": {
"interval": [{ "field": "hours", "hoursInterval": 1 }]
}
}
2. Fetch Reviews via HTTP Request
Add an HTTP Request node for each source. For a typical Trustpilot integration you would target their Business API:
GET https://api.trustpilot.com/v1/business-units/<id>/reviews
Headers:
Authorization: Bearer {{ $env.TRUSTPILOT_TOKEN }}
Query:
orderBy: createdat.desc
perPage: 50
For Google Business Profile reviews (via the My Business API), the URL pattern is:
GET https://mybusiness.googleapis.com/v4/accounts/<account>/locations/<location>/reviews
Both return a JSON array of review objects. The fields you need are: reviewId (or equivalent), starRating, comment, createTime.
Tip: If you're pulling from Shopify's Product Reviews API or a WooCommerce endpoint, the field names differ (rating vs starRating, body vs comment). Use a Set node immediately after the HTTP Request to normalise everything into a consistent schema:
{
"reviewId": "{{ $json.id }}",
"rating": "{{ $json.starRating }}",
"reviewText": "{{ $json.comment }}",
"createdAt": "{{ $json.createTime }}"
}
3. Deduplication with Google Sheets (or Postgres)
Add a Google Sheets node (or a Postgres / MySQL node if you have a database handy) in "Read" mode. Pull the list of already-processed reviewId values. Then add an IF node that passes a review through only when its reviewId is not in that list.
After processing, write the new reviewId back to the sheet with another Google Sheets node in "Append" mode. This simple pattern keeps the workflow idempotent across every scheduled run.
4. AI Sentiment + Theme Extraction
This is where the real value lives. Add the AI/LLM node (the "Basic LLM Chain" or "AI Agent" node in n8n's AI section). Set the model to whatever you prefer — GPT-4o-mini is fast and cheap for this task, but any capable model works.
Use a System Message like:
You are a customer-review analyst. Given a product review, return ONLY valid JSON with:
- sentiment: "positive", "neutral", or "negative"
- score: a number from 1 (very negative) to 5 (very positive)
- themes: an array of up to 3 short phrases (e.g., ["late delivery", "wrong size"])
- urgency: "low", "medium", or "high"
Do not include any explanation outside the JSON block.
And a User Message that passes the review text:
Review ({{ $json.rating }} stars): {{ $json.reviewText }}
The node returns structured JSON you can directly access in downstream nodes as $json.sentiment, $json.themes, $json.urgency.
5. Branch on Sentiment
Add a Switch node with three branches:
| Condition | Route |
|---|---|
$json.sentiment === "negative" |
Immediate Slack / email alert |
$json.sentiment === "positive" |
Append to weekly digest sheet |
$json.sentiment === "neutral" |
Log only, no alert |
For the negative branch, a Slack node (or Send Email node) with this message template surfaces the right information instantly:
*New negative review ({{ $json.rating }}★ — urgency: {{ $json.urgency }})*
Themes: {{ $json.themes.join(", ") }}
"{{ $json.reviewText }}"
Source: {{ $json.source }} | Created: {{ $json.createdAt }}
Now your support team has the complaint theme and urgency level before they even open the review platform.
6. Weekly Digest for Positive Reviews
For positive reviews, append the row to a Google Sheet. Add a second scheduled workflow (trigger: every Monday at 9 AM) that reads the week's positive rows, sends them to the LLM node with a prompt asking it to summarise common praise themes, and emails the digest to your product team.
Closing the loop this way means you act on negatives in real-time and harvest product intelligence from positives weekly — all automated.
Pitfalls to Avoid
- Rate limits: Most review APIs cap requests per minute. Add a Wait node set to 1-2 seconds between batches if you're processing more than ~20 reviews at once.
- LLM hallucinations on short reviews: A review like "ok" gives the model little to work with. Add an IF node that skips AI analysis for reviews shorter than 10 words and labels them
neutral / low-urgencyby default. - API credential rotation: Trustpilot and Google tokens expire. Store them in n8n's built-in Credentials manager (not hardcoded in nodes) so rotating them takes 30 seconds rather than hunting through every node.
- Don't alert on every neutral review: Teams stop reading alerts when too many are noise. The Switch node's neutral branch should log silently.
Running This on AgentRoost
Building the workflow is one thing. Keeping it running 24/7 — with the LLM node actually calling an AI model — is another.
On a self-hosted n8n you need a server, SSL, persistent storage, and your own OpenAI/Anthropic API key billed separately. The AI cost is unpredictable and arrives as a surprise line item.
On AgentRoost you get your own n8n instance — your login, your workflows, your data, accessible at https://<your-id>.agentroost.app — and the AI nodes are already wired to included credits. You own the instance; AgentRoost handles the infrastructure so you don't have to.
How to set it up:
- Sign up at agentroost.app (email/password, Google, Microsoft, or Discord).
- Pick the n8n framework, give your instance a name.
- Your private n8n editor opens in about 2 minutes at your public subdomain.
- Build the workflow above. When you drop in the AI/LLM node and run it, it works — no API key, no billing dashboard, no surprise invoice.
- Activate the workflow. The Schedule Trigger takes over; reviews are monitored around the clock.
Pricing starts at $19.99/mo all-in, which covers the compute, the included AI credits, HTTPS, and persistent workflow state. Hundreds of LLM models available, switch anytime. 14-day money-back guarantee, cancel whenever.
Compare plans · See the n8n framework
What You End Up With
A workflow that wakes up every hour, fetches fresh reviews across all your sources, skips anything already seen, runs AI sentiment scoring with theme extraction, and pings your team only when something actually needs attention — automatically, indefinitely, without you touching a server.
For e-commerce and SaaS teams that care about reputation and support response time, this is one of the highest-ROI automations you can ship in an afternoon.
Frequently asked questions
Do I need an OpenAI or Anthropic API key to use the AI node in n8n?
Not on AgentRoost. Your n8n instance comes with AI/LLM credits already included in the subscription, so the AI nodes work out of the box. On a self-hosted n8n you would need to supply your own key and pay separately.
Which review platforms can this workflow pull from?
Any platform that exposes an API or webhook — Trustpilot (Business API), Google Business Profile (My Business API), Shopify Product Reviews, WooCommerce, App Store Connect, Play Store (via third-party scrapers), or your own internal review endpoint. Use one HTTP Request node per source and normalise with a Set node before the AI step.
How do I prevent the same review from triggering multiple alerts?
Store processed review IDs in a Google Sheet, Postgres table, or any database n8n can reach. Before the AI node, an IF node compares the incoming review ID against that list and skips items already seen. After processing, append the new ID to the log.
Can I cancel my AgentRoost subscription if I don't need it anymore?
Yes. Subscriptions are monthly with no lock-in, and there is a 14-day money-back guarantee. You can cancel from your account dashboard at any time.
Will the workflow keep running when I close my browser?
Yes. Your n8n instance on AgentRoost runs on dedicated hardware continuously. The Schedule Trigger fires on its configured interval regardless of whether you have the editor open.