Trustpilot to Google Sheets, review trends you can act on
Your Trustpilot reviews are telling you what to fix, what to ship, and what to stop doing. But in most teams, they sit there. Someone checks them “when they remember,” copies a few quotes into a doc, and the real patterns never make it into planning.
This Trustpilot Sheets automation hits product managers first because roadmap decisions depend on real feedback. But CX leads chasing churn signals and growth marketers hunting proof points feel the same drag. You end up reacting late, not acting early.
This workflow pulls protected Trustpilot reviews through Bright Data, cleans the text, extracts structured fields, summarizes themes with OpenAI, then logs everything into Google Sheets (plus optional webhook alerts). You’ll see how it works, what you need, and where teams usually trip up.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Trustpilot to Google Sheets, review trends you can act on
flowchart LR
subgraph sg0["When clicking ‘Test workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Test workflow’", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set URL and Bright Data Zone", pos: "b", h: 48 }
n2["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Perform Bright Data Web Requ.."]
n3@{ icon: "mdi:robot", form: "rounded", label: "Markdown to Textual Data Ext..", pos: "b", h: 48 }
n4@{ icon: "mdi:robot", form: "rounded", label: "Structured JSON Data Extractor", pos: "b", h: 48 }
n5@{ icon: "mdi:database", form: "rounded", label: "Google Sheets", pos: "b", h: 48 }
n6@{ icon: "mdi:code-braces", form: "rounded", label: "Create a binary data for Str..", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "Write the structured content..", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Summarization Chain", pos: "b", h: 48 }
n9["<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/merge.svg' width='40' height='40' /></div><br/>Merge the responses"]
n10["<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/>Code to extract the first el.."]
n11@{ icon: "mdi:cog", form: "rounded", label: "Aggregate the responses", pos: "b", h: 48 }
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Initiate a Webhook Notificat.."]
n13@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n14@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model for Struct..", pos: "b", h: 48 }
n15@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model for Summar..", pos: "b", h: 48 }
n13 -.-> n3
n9 --> n11
n8 --> n9
n11 --> n5
n11 --> n12
n11 --> n6
n1 --> n2
n4 --> n10
n2 --> n3
n10 --> n9
n0 --> n1
n3 --> n4
n3 --> n8
n15 -.-> n8
n14 -.-> n4
n6 --> 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 n3,n4,n8 ai
class n13,n14,n15 aiModel
class n5 database
class n2,n12 api
class n6,n10 code
classDef customIcon fill:none,stroke:none
class n2,n9,n10,n12 customIcon
The Problem: Trustpilot reviews are useful, but hard to operationalize
Checking Trustpilot manually sounds simple until you do it every week, for multiple products, across competitors, with a team that needs answers. The pages are inconsistent, the content is messy (headings, markdown, repeated blocks), and anti-bot protections make “just scrape it” a frustrating rabbit hole. Then comes the real tax: someone has to translate raw reviews into themes, sentiment, and “what changed since last week.” That’s time you could spend actually fixing onboarding, pricing confusion, or reliability issues that are literally written out for you.
It adds up fast. And the friction compounds when you try to scale beyond one product page.
- A weekly review check turns into about 2 hours of copying, cleaning, and pasting into a spreadsheet.
- Teams miss early churn signals because nobody is summarizing patterns, just reading a few loud reviews.
- Anti-bot protections break basic scrapers, so the “automation” quietly becomes manual again.
- Without structured fields (date, rating, product, sentiment), you can’t trend anything with confidence.
The Solution: Automatically extract, summarize, and log Trustpilot reviews
This workflow turns Trustpilot into a steady stream of usable data. It starts by taking a review page URL you define, then uses Bright Data’s Web Unlocker to retrieve the content even when anti-bot layers get in the way. Next, it cleans up the scraped markdown into readable plain text, which makes the downstream AI work far more consistent. OpenAI then extracts structured fields (think product name, date, rating, and sentiment) and also generates a concise “what’s going on” summary you can actually skim. Finally, the workflow aggregates everything and appends it into Google Sheets, while also sending a webhook notification so the right channel or system gets the update right away.
The workflow begins with a manual trigger (easy to swap for a schedule later). Bright Data pulls the raw page content, OpenAI turns it into structured data plus themes, and Google Sheets becomes your ongoing review log. If you want an audit trail, it also writes the processed output to disk.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you track 3 Trustpilot pages (your product plus two competitors) and you do a weekly check. Manually, you might spend about 20 minutes per page to load, scroll, copy, and clean text, then another hour pulling themes and writing a summary, so roughly 2 hours total. With this workflow, you kick it off in under 5 minutes and let it process in the background while Bright Data and OpenAI do the heavy lifting. Your Google Sheet updates automatically, and the summary lands where your team will actually see it.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Bright Data to unlock and fetch Trustpilot pages.
- Google Sheets to store the review log and summaries.
- OpenAI API key (get it from your OpenAI dashboard).
Skill level: Intermediate. You’ll connect credentials, paste a URL, and adjust a couple prompts if you want brand-specific summaries.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A trigger starts the run. In the provided workflow, you click Manual Start in n8n. Many teams later swap this for a schedule (daily or weekly) once they trust the outputs.
The workflow pulls the review page reliably. A “set” step assigns the Trustpilot URL and your Bright Data zone, then an HTTP Request calls Bright Data Web Unlocker to retrieve the content even when basic requests get blocked.
Messy text becomes structured data and themes. The scraped markdown is converted to plain text, then OpenAI extracts fields like review date, rating, and sentiment. A second chain generates a concise summary of overall themes, so you’re not reading every line to find the signal.
Results go where your team works. The workflow aggregates outputs, appends rows in Google Sheets, writes a structured file to disk for traceability, and sends a webhook notification for real-time routing.
You can easily modify the source URL logic to track multiple products, then switch the outputs to other tools based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
This workflow starts manually so you can validate the data flow before enabling automation.
- Add and open Manual Start Trigger to serve as the workflow entry point.
- Leave Manual Start Trigger parameters at their defaults for manual testing.
Step 2: Connect Bright Data and Set the Review Source
Define the review page and proxy zone, then fetch the raw content from Bright Data.
- Open Assign Source URL & Zone and set the url value to
https://www.trustpilot.com/review/brightdata.com. - In the same node, set the zone value to
web_unlocker1. - Open Bright Data API Request and set URL to
https://api.brightdata.com/requestand Method toPOST. - In Bright Data API Request → Body Parameters, set zone to
={{ $json.zone }}, url to={{ $json.url }}, format toraw, and data_format tomarkdown. - Credential Required: Connect your httpHeaderAuth credentials in Bright Data API Request.
Step 3: Set Up AI Processing and Structured Extraction
Convert the fetched markdown into clean text, then extract structured review JSON and generate a summary in parallel.
- Open Convert Markdown to Text and set Text to
=You need to analyze the below markdown and convert to textual data. Please do not output with your own thoughts. Make sure to output with textual data only with no links, scripts, css etc. {{ $json.data }}. - Confirm Convert Markdown to Text uses the message
You are a markdown expert. - Open Extract Structured Review JSON and set Text to
=Extract the review mentioned below {{ $json.text }}, keeping the provided JSON Schema Example. - Open Generate Summary Chain and ensure Chunking Mode is
advanced. - Convert Markdown to Text outputs to both Extract Structured Review JSON and Generate Summary Chain in parallel.
- Credential Required: Connect your openAiApi credentials to OpenAI Chat Engine, which is the language model for Convert Markdown to Text.
- Credential Required: Connect your openAiApi credentials to OpenAI Structured Engine, which is the language model for Extract Structured Review JSON.
- Credential Required: Connect your openAiApi credentials to OpenAI Summary Engine, which is the language model for Generate Summary Chain.
Step 4: Combine, Select, and Aggregate the Outputs
Normalize the AI results, merge them, and aggregate for downstream outputs.
- Open Select First Output and set JavaScript Code to
return $input.first().json.output. - Ensure Select First Output feeds into Combine Outputs alongside Generate Summary Chain.
- Open Aggregate Results and set Aggregate to
aggregateAllItemData. - Verify the flow: Generate Summary Chain → Combine Outputs → Aggregate Results.
Step 5: Configure Output Destinations
Send the aggregated data to Google Sheets, a webhook, and a local JSON file in parallel.
- In Update Review Spreadsheet, set Operation to
appendOrUpdate, Document ID to[YOUR_ID], and Sheet Name toSheet1. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Review Spreadsheet.
- Open Send Webhook Notification and set URL to
[YOUR_WEBHOOK_URL], with Body Parameters → summary set to={{ $json.data }}. - Open Build Binary Payload and keep Function Code as provided to create a Base64 JSON payload.
- Open Save Structured File and set Operation to
writewith File Name set to=d:\TrustPilot-StructuredData.json. - Aggregate Results outputs to Update Review Spreadsheet, Send Webhook Notification, and Build Binary Payload in parallel.
[YOUR_WEBHOOK_URL] and [YOUR_ID] with real values before testing, and ensure the file path in Save Structured File exists on the n8n host machine.Step 6: Test and Activate Your Workflow
Run a manual execution to validate each branch, then enable the workflow for production use.
- Click Execute Workflow on Manual Start Trigger to run a full test.
- Confirm that Update Review Spreadsheet appends or updates a row and that Send Webhook Notification sends the summary payload.
- Check the local file system for
d:\TrustPilot-StructuredData.jsoncreated by Save Structured File. - When all outputs succeed, toggle Active to enable the workflow for ongoing use.
Common Gotchas
- Bright Data credentials can expire or need specific permissions. If things break, check your Bright Data Web Unlocker zone and token configuration in n8n credentials first.
- If you’re using Wait nodes or external processing, timing can vary. Bump up the wait duration if downstream nodes fail because the Bright Data response hasn’t arrived yet.
- Default prompts in AI nodes are generic. Add your product context and brand voice to the extraction and summary prompts early, or you will be editing outputs forever.
Frequently Asked Questions
About 30 minutes once you have your Bright Data and OpenAI keys.
No. You’ll mostly connect accounts and paste in your Trustpilot URL and Bright Data token. The only “technical” part is choosing what fields you want the extractor to pull.
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 Bright Data usage plus OpenAI API costs (often a few cents per run, depending on how much text you process).
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 upgrades. You can swap the single “Assign Source URL & Zone” setup for a list of Trustpilot URLs (your products and competitors), then loop through them and run the same Bright Data request each time. Common customizations include extracting extra fields (review title, company response, feature mentions) and changing the summary style to an executive brief or a “top pain points” digest.
Usually it’s an expired token or the wrong Web Unlocker zone name. Regenerate the Bright Data Web Unlocker token, confirm you’re sending it as a Bearer header in n8n, and double-check the zone in the “Assign Source URL & Zone” step. If it still fails, the target URL may be redirecting or returning a different page layout, so inspect the raw response saved to disk to see what actually came back.
A lot, as long as your plan and server can keep up. On n8n Cloud, your limit is mainly monthly executions, so the ceiling depends on how often you run it and how many pages you loop through. If you self-host, there’s no execution cap, but you’re limited by CPU/RAM and how fast Bright Data and OpenAI can respond. Practically, most small teams start with weekly runs across a handful of products, then scale to daily monitoring once the sheet format and alerts are dialed in.
Often, yes, because this job needs scraping, text cleanup, structured extraction, and batching. n8n handles branching and more complex logic without turning every extra step into a pricing surprise, and self-hosting is a real option if you want volume. Zapier or Make can still work if you already have clean inputs and only need to push summaries into a spreadsheet. If you’re unsure, Talk to an automation expert and you’ll get a straight recommendation.
Once this is running, reviews stop being “something we should look at” and become a living input to product, CX, and marketing. Set it up once, then use the patterns to make faster calls.
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.