Trustpilot to Google Sheets, reviews ready to export
Copying Trustpilot reviews into a spreadsheet sounds simple until you do it every week. Links break, you miss a page of reviews, and duplicates creep in right when you need a clean export.
Marketing managers trying to refresh testimonial pages feel it first. But agency owners building client proof decks and ops folks keeping datasets tidy run into the same mess. This Trustpilot Sheets automation keeps your review log clean, searchable, and ready to export when you need it.
You’ll see how this workflow pulls reviews, formats two different sheets (raw + HelpfulCrowd-ready), and keeps your rows duplicate-free without babysitting the process.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Trustpilot to Google Sheets, reviews ready to export
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["<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/>Get reviews"]
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Global", pos: "b", h: 48 }
n3["<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/>Parse reviews"]
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "HelpfulCrowd edits", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "General edits", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "General sheet", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "HelpfulCrowd Sheets", pos: "b", h: 48 }
n9@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n2 --> n1
n5 --> n4
n5 --> n6
n1 --> n3
n6 --> n7
n3 --> n5
n9 --> n2
n4 --> n8
n0 --> n2
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,n9 trigger
class n7,n8 database
class n1 api
class n3 code
classDef customIcon fill:none,stroke:none
class n1,n3 customIcon
The Challenge: Keeping Trustpilot Reviews Export-Ready
Trustpilot reviews are great marketing fuel, but collecting them is annoyingly fragile. One person exports a page manually, another person copy-pastes snippets into a doc, and now you have three “sources of truth” that don’t match. It gets worse when you need a specific format for a tool like HelpfulCrowd, because formatting becomes its own mini-project. And if you’re pulling reviews regularly, duplicates are basically guaranteed unless someone is policing IDs and dates like it’s their full-time job (it shouldn’t be).
It adds up fast. Here’s where it typically breaks down.
- Pagination is easy to miss, so you quietly skip reviews and don’t notice until the report looks “light.”
- Manual copy-paste creates duplicates, especially when you re-run the same export later.
- Fields aren’t consistent (names, ratings, dates, links), which makes filtering and sorting painful.
- HelpfulCrowd imports fail when the CSV columns don’t match exactly, so someone ends up reformatting at the last minute.
The Fix: Scrape Trustpilot, Save Clean Rows to Sheets
This n8n workflow pulls reviews from a Trustpilot profile, extracts the review data, and writes it into a Google Sheets template built for two jobs. First, it maintains a raw “trustpilot” sheet where you can keep every review in a consistent, searchable format. Second, it populates a “helpfulcrowd” sheet that follows HelpfulCrowd’s import structure, plus an extra review_id column so the workflow can upsert (update existing rows instead of creating duplicates). You can run it on demand when you need fresh social proof, or schedule it so your review log stays current automatically. Once it’s filled, exporting as CSV for HelpfulCrowd is straightforward.
The workflow kicks off from either a manual launch or a scheduled trigger. It fetches one or more Trustpilot review pages, extracts each review, then maps fields into two formats before updating the right sheets in Google Sheets.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you pull reviews for one brand every Friday. Manually, you might open 5 pages of Trustpilot reviews, copy key fields, then clean duplicates and reformat for HelpfulCrowd. That’s roughly 10 minutes per page plus another 30 minutes of cleanup, so about 1.5 to 2 hours total. With this workflow, you set the Trustpilot business name once, hit run (or schedule it), then export the HelpfulCrowd-ready sheet as a CSV. Your “work” becomes 5 minutes of checking the sheet instead of an afternoon of busywork.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for storing the raw and export-ready logs.
- Trustpilot profile (business name) to scrape the correct review pages.
- Google Sheets API credentials (get them from Google Cloud Console).
Skill level: Beginner. You’ll connect Google Sheets, paste the business name, and run a test.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
Triggering the run. You can start it manually when you want fresh reviews, or let the scheduled trigger run on a cadence (daily, weekly, whatever fits).
Pulling Trustpilot pages. The workflow initializes settings (your Trustpilot business name and pagination), then uses HTTP requests to fetch the review pages you care about.
Extracting and shaping the data. Review content is parsed and expanded into individual review items. From there, the workflow maps fields twice: one mapping for a general “trustpilot” log, and another mapping that matches HelpfulCrowd’s CSV format (including the review_id used for upserts).
Writing to Google Sheets. Two Google Sheets nodes update the right tabs in your template, so you end up with a clean raw log and a separate export-ready sheet.
You can easily modify pagination limits to pull more (or fewer) reviews based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual and Scheduled Triggers
This workflow can run manually or on a schedule. Configure both triggers so you can test and automate the scrape.
- Open Manual Launch Trigger and leave the default settings for manual runs.
- Open Scheduled Run Trigger and set your desired schedule in Rule (the workflow currently uses the default interval).
- Verify both Manual Launch Trigger and Scheduled Run Trigger connect into Initialize Settings.
Step 2: Connect Google Sheets
Both output sheets require Google Sheets credentials to append or update review rows.
- Open Update Main Spreadsheet and select the target spreadsheet Document ID
1yf_RYZGFHpMyOvD3RKGSvIFY2vumvI4474Qm_1t4-jMand Sheet NameConfigured Sheet. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Main Spreadsheet.
- Open Update HelpfulCrowd Sheet and select the same Document ID
1yf_RYZGFHpMyOvD3RKGSvIFY2vumvI4474Qm_1t4-jMwith Sheet NameConfigured Sheet. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Update HelpfulCrowd Sheet.
Step 3: Set Up Review Fetching and Extraction
Define which company to scrape, how many pages to request, and extract review JSON from the Trustpilot HTML responses.
- Open Initialize Settings and set company_id to
n8n.ioand max_page to100. - Open Fetch Review Pages and set URL to
=https://trustpilot.com/review/{{ $json.company_id }}. - In Fetch Review Pages, confirm Query Parameters include sort set to
recency. - In Fetch Review Pages, ensure pagination uses page value
={{ $pageCount + 1 }}, with maxRequests set to={{ $json.max_page }}and requestInterval at5000. - Open Extract Review Data and keep the provided JavaScript code that parses the
#__NEXT_DATA__script tag and returns{reviews: reviews}.
#__NEXT_DATA__ script tag in the HTML. If Trustpilot changes their page structure, the node will return empty review arrays.Step 4: Split and Map Review Fields
Split the reviews array into items and map fields for the general sheet and HelpfulCrowd sheet. Expand Review Items outputs to both mapping nodes in parallel.
- Open Expand Review Items and set Field to Split Out to
reviews. - Note the parallel execution: Expand Review Items outputs to both Map HelpfulCrowd Fields and Map General Fields in parallel.
- In Map General Fields, set Date to
={{ $json.dates.publishedDate }}, Author to={{ $('Extract Review Data').item.json.reviews[0].consumer.displayName }}, Body to={{ $json.text }}, Heading to={{ $json.title }}, Rating to={{ $json.rating }}, Location to={{ $json.consumer.countryCode }}, and review_id to={{ $json.id }}. - In Map HelpfulCrowd Fields, map core fields such as rating to
={{ $json.rating }}, title to={{ $json.title }}, feedback to={{ $json.text }}, customer_name to={{ $json.consumer.displayName }}, status to={{ $json.pending ? 'pending' : 'published' }}, review_date to={{ $json.dates.publishedDate.split('T')[0] }}, verified to={{ $json.labels.verification.isVerified ? 'yes' : 'no' }}, and review_id to={{ $json.id }}.
Step 5: Configure Output to Google Sheets
Finalize the append-or-update operations for both output sheets.
- In Update Main Spreadsheet, keep Operation set to
appendOrUpdateand map columns to the expressions: Body={{ $json.Body }}, Date={{ $json.Date }}, Author={{ $json.Author }}, Rating={{ $json.Rating }}, Heading={{ $json.Heading }}, Location={{ $json.Location }}, and review_id={{ $json.review_id }}. - In Update HelpfulCrowd Sheet, keep Operation set to
appendOrUpdateand map fields from Map HelpfulCrowd Fields, such as title={{ $('Map HelpfulCrowd Fields').item.json.title }}and review_date*={{ $('Map HelpfulCrowd Fields').item.json.review_date }}. - Confirm matching columns are set to review_id in both Google Sheets nodes to prevent duplicates.
Step 6: Test and Activate Your Workflow
Run a manual test to confirm review data is pulled and written to both spreadsheets, then activate the schedule.
- Click Execute Workflow and run Manual Launch Trigger to test the end-to-end flow.
- Verify that Update Main Spreadsheet and Update HelpfulCrowd Sheet append or update rows using review_id as the match key.
- If you see empty outputs, check Fetch Review Pages and Extract Review Data for HTML changes or rate limits.
- Once the test is successful, toggle the workflow to Active to enable Scheduled Run Trigger for production runs.
Watch Out For
- Google Sheets credentials can expire or need specific permissions. If things break, check the n8n Credentials screen and confirm the connected Google account still has access to the sheet.
- If you’re using scheduled runs, processing times can vary depending on how many pages you pull. If downstream steps update before all items are expanded, adjust batch sizing or add a little buffer time.
- Trustpilot page structure can change without notice. If the extracted fields suddenly look empty, inspect the HTTP response and update the extraction logic so it matches the current HTML.
Common Questions
About 30 minutes if your Google Sheets access is ready.
Yes. You won’t write code, but you will copy a Google Sheets template and connect credentials in n8n.
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 Google API usage (usually negligible for small pulls).
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.
You can adjust what gets pulled and where it lands. Most people start in Initialize Settings to change the Trustpilot business name and pagination, then tweak Map General Fields if they want extra columns in the raw log. If you only care about HelpfulCrowd exports, you can slim down the raw sheet mapping and focus on Map HelpfulCrowd Fields. Some teams also add a third destination (like Excel 365 or Mailchimp) once the core log is stable.
Usually it’s an expired OAuth connection or the sheet permissions changed. Reconnect the Google Sheets credential in n8n, then confirm the same Google account can open and edit the target spreadsheet. If the node can see your Drive but can’t write rows, it’s often a missing permission on that specific file or tab name mismatches.
For most small brands, it handles typical weekly pulls easily.
Often, yes, because this isn’t a simple “Trustpilot app to Sheets” connector situation. You’re fetching pages, extracting review objects, expanding items, then writing into two different schemas (raw plus HelpfulCrowd-ready), which is where Zapier scenarios can get clunky or expensive. n8n also gives you self-hosting if you want unlimited runs, and it’s easier to control pagination logic when you need it. That said, if your use case is literally “send a notification when a new review arrives,” Zapier or Make can be faster to set up. If you want a second opinion, Talk to an automation expert.
Once this is running, your Trustpilot reviews stop being a messy asset and start being a reliable dataset. Set it up, keep it scheduled, and export whenever a campaign needs fresh proof.
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.