What you can monitor
Your reputation is built on the reviews customers leave. A single negative review can deter new buyers, but so can a silent rating — if you're not monitoring, you won't respond, and that counts as indifference. OpenClaw automates the monitoring and drafting so you catch problems early and fix them publicly.
Negative review alerts
Instant alert when a 1 or 2-star review is posted anywhere — on Trustpilot, Google, Amazon, or your own store.
Daily review digest
Morning summary of all new reviews across all platforms, segmented by platform and rating for quick scanning.
Sentiment trend tracking
Weekly rolling average rating and sentiment score — so you see whether your recent changes are working or not.
Response draft generation
Draft a personalised response for flagged reviews — auto-categorise the complaint type and suggest resolution.
Review volume monitoring
Alert if review volume drops sharply — signals a platform issue or a change in customer engagement.
Competitor review watching
Monitor competitor ratings for context — if your average has dropped but theirs is stable, understand why.
Review platforms and APIs
Customer reviews are scattered across multiple platforms. OpenClaw unifies them by calling each platform's API on a schedule and storing results in a consistent format. Here's what's available:
| Platform | Access | What OpenClaw reads | Notes |
|---|---|---|---|
| Trustpilot | Free API (business account required) | Reviews, ratings, dates, response status | Best documented review API |
| Google Business Profile | Free (Google My Business API) | Reviews, ratings, reviewer name | Requires OAuth setup |
| Amazon Seller Feedback | Free (Amazon SP-API) | Seller feedback ratings and comments | Product reviews require a different endpoint |
| Etsy | Free (Etsy Open API) | Shop reviews and ratings | Good for handmade/craft stores |
| Your own store (Shopify/WooCommerce) | Free with store | Product reviews if using native reviews or apps like Judge.me | May require app-specific API |
Trustpilot API setup
Trustpilot is the easiest to set up. Follow these steps to connect:
-
Create a Trustpilot Business account and claim your profile If you don't have one, sign up at trustpilot.com, then claim your business. This is free and takes 5 minutes.
-
Go to Trustpilot Developers and create an API application Visit developers.trustpilot.com, log in with your account, and create a new API application. You'll get your API key immediately.
-
Store your credentials in secrets.env Add two lines:
TRUSTPILOT_API_KEY=your_key_hereandTRUSTPILOT_BUSINESS_UNIT_ID=your_business_unit_id. Find your Business Unit ID in your Trustpilot settings. -
Test: fetch your recent reviews Run a quick test query to the reviews endpoint to confirm your key works and you're pulling reviews successfully.
Core review monitor agent
The review monitor is the heart of the system. It queries one or more review APIs on a schedule, filters for new reviews, and outputs alerts and summaries. It maintains a state file to avoid re-reporting the same review twice.
# AGENTS.md — review-monitor agent
agents:
review-monitor:
description: "Fetch new reviews from all platforms and alert on negatives"
tools:
- trustpilot-api
- google-mybusiness-api
# fallback: http-crawler if API not available
credentials:
trustpilot_api_key: "${TRUSTPILOT_API_KEY}"
trustpilot_business_unit_id: "${TRUSTPILOT_BUSINESS_UNIT_ID}"
google_oauth_token: "${GOOGLE_OAUTH_TOKEN}"
config:
alert_on_stars: [1, 2] # negative = 1 or 2 star reviews
lookback_hours: 24 # check for reviews posted in last 24 hours
state_file: "reviews_seen.json" # track already-processed reviews
deduplication: true # skip reviews already in state_file
platforms: [trustpilot, google, amazon, etsy]
output:
format: markdown
sections:
- new_negative_reviews # 1-2 star, highest priority
- new_positive_reviews # 4-5 star, summarised count
- overall_stats # total count, avg rating
sort_by: stars # negatives first
include_fields:
- platform
- reviewer_name
- rating_stars
- review_text
- review_date
- response_status # has merchant responded?
reviews_seen.json as it processes them. This ensures that a review posted on Monday and still active on Tuesday doesn't trigger two alerts. The state file is your single source of truth for which reviews you've already acted on.
Sentiment trend analysis
A single bad review is noise. But if your 30-day average rating drops from 4.7 to 4.2, that's a signal. OpenClaw tracks these rolling windows so you spot trends early.
# AGENTS.md — sentiment-tracker agent
agents:
sentiment-tracker:
description: "Calculate rolling sentiment and alert on significant drops"
tools:
- trustpilot-api
- google-mybusiness-api
config:
rolling_window_days: 30
metrics:
- avg_rating # average star rating
- review_count # number of reviews posted
- sentiment_score # POSITIVE / NEUTRAL / NEGATIVE classification
classification: text_based # classify by review text, not just stars
alert_thresholds:
rating_drop_week_over_week: 0.3 # alert if avg drops >0.3 points vs last week
sentiment_shift: true # alert if POSITIVE → NEUTRAL shift
platforms: [trustpilot, google]
prompt: |
For each review, classify the text as POSITIVE, NEUTRAL, or NEGATIVE based on language.
A 3-star review with positive language ("Great product, slow shipping") counts as POSITIVE.
A 5-star review with concerns ("Works fine but wish it had X") counts as NEUTRAL.
This text-based classification is separate from the star rating.
Auto-drafting review responses
When OpenClaw flags a negative review, it can draft a response. You always review and approve before posting — OpenClaw never posts automatically. The drafts are categorised by complaint type so responses are specific and helpful.
# AGENTS.md — response-drafter agent
agents:
response-drafter:
description: "Draft personalised responses to flagged reviews"
tools:
- trustpilot-api
- google-mybusiness-api
config:
trigger: negative_review # draft on reviews with 1-2 stars
complaint_categories:
- shipping_delay
- product_quality
- wrong_item
- customer_service
- packaging
- missing_item
state_file: "responses_drafted.json"
prompt: |
For each negative review, perform these steps:
1. Classify the complaint into one of the categories above
2. Acknowledge the specific issue mentioned in the review
3. Apologise sincerely (tone: warm, professional, never defensive)
4. Offer a concrete resolution:
- For shipping delays: offer a discount on next order
- For product quality: offer a replacement or refund
- For wrong/missing item: offer replacement with priority shipping
- For customer service: acknowledge and take responsibility
5. Invite them to contact support directly for faster resolution
6. End with gratitude for their feedback
Output format for each response:
─────────────────────────────────────
REVIEW ID: [id]
PLATFORM: [platform]
COMPLAINT TYPE: [category]
REVIEWER: [name]
RATING: [stars]
─────────────────────────────────────
DRAFT RESPONSE:
[your response here]
─────────────────────────────────────
IMPORTANT: Add a note at the top:
"⚠️ DRAFT — review before posting. Do not post automatically."
HEARTBEAT.md templates
Daily review digest
# HEARTBEAT.md — daily review digest
schedule:
- name: "Daily Review Digest"
cron: "0 7 * * *" # every day at 7 AM
agents:
- review-monitor
output:
file: "daily_review_digest.md"
notify: true
prompt: |
Summarise all reviews from the last 24 hours across all platforms.
Format as:
1. URGENT NEGATIVES (1-2 star reviews) — if any exist, list each with platform,
reviewer name, and first 100 chars of review text
2. NEW POSITIVES — summary line: "X new 5-star, Y new 4-star reviews"
3. SUMMARY — "Total: X reviews, average rating: 4.5 across all platforms"
If no new reviews: "No new reviews in the last 24 hours."
Immediate negative alert
# HEARTBEAT.md — instant negative alert
schedule:
- name: "Negative Review Alert"
trigger: on_new_review
filter: stars <= 2
agents:
- review-monitor
output:
notify: true
notify_channels: [email, slack]
prompt: |
A negative review has just been posted. Send an immediate alert with:
- Platform and reviewer name
- Full review text
- Current store rating (for context)
- A link to the review (so the user can respond directly)
Weekly sentiment report
# HEARTBEAT.md — weekly sentiment report
schedule:
- name: "Weekly Sentiment Report"
cron: "0 8 * * 1" # Mondays at 8 AM
agents:
- sentiment-tracker
output:
file: "weekly_sentiment_report.md"
notify: true
prompt: |
Generate a 30-day rolling sentiment report with:
1. Average rating (30-day window): [X.X stars]
2. Week-over-week change: +/- [X.X] points
3. Sentiment breakdown: X POSITIVE, Y NEUTRAL, Z NEGATIVE (% each)
4. Top complaint category if sentiment is down
5. Action suggestion if rating dropped >0.3 points vs last week
What the daily report looks like
Frequently asked questions
Can OpenClaw post review responses automatically?
No, it drafts responses for human review. Auto-posting review responses is not recommended as tone errors are costly to reputation.
What if I don't have a Trustpilot account?
You can use http-crawler to scrape your public Trustpilot page as a fallback, though this is less reliable than the API and may break if Trustpilot changes their layout.
Can OpenClaw monitor Google reviews?
Yes via the Google My Business API (now called Google Business Profile API), which requires OAuth setup with a Google Cloud project.
How does sentiment tracking work without an NLP model?
OpenClaw uses its underlying language model to classify review text into POSITIVE/NEUTRAL/NEGATIVE. This is reasonably accurate for most short review text.