Trustpilot reviews to BigQuery

Every Trustpilot review as a row in your own project, next to the orders that produced it. A review count is trivia. Reviews per thousand orders is an operations metric, and it is one join away.

  • Set up in under five minutes
  • No demo required
Trustpilot BigQuery 38,214 rows

Destination table

northwind-analytics.reviews.trustpilot_reviews

review_date score lang review_text
2026-08-19 1.0 en Parcel sat at the depot for six days, no update.
2026-08-19 5.0 nl Snel geleverd en goed verpakt.
2026-08-18 4.0 en Lovely glassware. Delivery was slower this time.
2026-08-18 5.0 fr Commande conforme, emballage impeccable.
Synced 14 minutes ago

They love how easy we've made it

  • 10 000 Slack notifications

    chewy

    Online Pet Supplies Retailer

  • 6000 reviews routed to Zendesk

    qonto

    European Bank

  • Monitoring 12 platforms

    brevo

    Marketing Software Company

  • 100 000 reviews across 97 tours

    arctic

    Tour operator in Iceland

  • 4500 locations monitored

    bounce

    Luggage Storage & Lockers

  • 5000 AI replies generated

    supersushi

    Sushi Restaurant Chain

How the rows get into BigQuery

There is no BigQuery destination to pick. Reviewflowz keeps a Google Sheet in your own Drive current, with a new Trustpilot review in it within half an hour, and BigQuery reads that sheet as an external table. One CREATE EXTERNAL TABLE and trustpilot_reviews queries like any other table. For a native partitioned table, load the Review API with the job you already run.

A Sheet as external table
Trustpilot Trustpilot reviews then
R Reviewflowz then
Google Sheets Sheet in your Drive every 30 min then
BigQuery External table at query time
B API and a load job
Trustpilot Trustpilot reviews then
R Reviewflowz Premium then
{ } Review API poll or webhook then
BigQuery Native table your load job
BigQuery Road A, run once
CREATE EXTERNAL TABLE
  reviews.trustpilot_reviews
OPTIONS (
  format = 'GOOGLE_SHEETS',
  uris = ['https://docs.google.com/...'],
  sheet_range = 'Reviews'
)

A count is trivia. A rate is an instrument.

Trustpilot invites customers after they buy, so review volume follows order volume. Put reviews beside the order table already in BigQuery and reviews per thousand orders becomes a GROUP BY over the week each order shipped. Four percent one-stars for a quarter, then seventeen in the week of 17 August against flat orders, is something operational that broke on a date.

BigQuery Query editor
-- one-star share by the week the order shipped
SELECT
  o.ship_week,
  o.orders,
  COUNT(r.review_id) AS reviews,
  ROUND(100 * COUNTIF(r.score = 1)
        / COUNT(r.review_id), 1) AS pct_one_star
FROM `northwind-analytics.core.weekly_orders` o
LEFT JOIN `northwind-analytics.reviews.trustpilot_reviews` r
  ON DATE_TRUNC(r.review_date, WEEK) = o.ship_week
GROUP BY o.ship_week, o.orders
ORDER BY o.ship_week
Results 5 rows in 0.6s
ship_week reviews pct_one_star
2026-07-27 214 4.1
2026-08-03 208 3.9
2026-08-10 221 4.4
2026-08-17 233 17.6
2026-08-24 226 5.2

Try it Free for 14 days

Your review history imports the moment you connect, so there is something to reply to from the first minute.

A table, not a report

One row per Trustpilot review across a fixed 28-column header: review id, profile, date, score, title, full text, language, tags and a link back. The text is a STRING, so the complaint that keeps coming back is a WHERE clause instead of a memory. Tags arrive filled, across languages. Your replies are not in the table; reply coverage is the Review API.

BigQuery northwind-analytics.reviews.trustpilot_reviews 28 cols
review_id STRING One row per review, stable
review_date TIMESTAMP When it was posted
score FLOAT64 1.0 to 5.0
title STRING The review headline
review_text STRING The full text, queryable
language STRING Detected from the text
reviewer_name STRING As shown on the profile
profile_name STRING Which Trustpilot profile
tags STRING Themes, filled as reviews arrive
review_url STRING Back to the review on Trustpilot

The header is fixed at 28 columns, with no per-platform tabs. There is no reply column either, so your replies are not in this table.

An alert that looks for you

A dashboard is something people open once they already suspect a problem. A BigQuery scheduled query looks for you: one-star share above eight percent over the trailing seven days, on at least two hundred reviews, written to a table your existing alerting watches. Your TrustScore weights recent reviews more heavily, so that buys a week of warning instead of a month of post-mortem.

BigQuery

Scheduled query

trustpilot_one_star_watch

Every day 07:00
The rule trailing 7 days
-- writes a row only when the trailing week breaks it
SELECT CURRENT_DATE() AS checked_on,
       ROUND(100 * COUNTIF(score = 1)
             / COUNT(*), 1) AS pct_one_star
FROM `northwind-analytics.reviews.trustpilot_reviews`
WHERE review_date >= CURRENT_DATE() - 7
HAVING COUNT(*) >= 200 AND pct_one_star > 8.0
Output table 1 row

checked_on 2026-08-24

Threshold 8.0, base 233 reviews

17.6

Nothing fires on a quiet week. The two hundred review floor is what stops a slow Tuesday from reading as a crisis.

FAQs

Is there a native BigQuery connector?

No, and it would be dishonest to imply one. Reviewflowz syncs a Google Sheet in your own Drive, and BigQuery reads that sheet as an external table with a single CREATE EXTERNAL TABLE statement. If you would rather have a native partitioned table, the Review API plus a scheduled load job gets you there. Both are ordinary work for a data team, and neither needs a demo.

Our Trustpilot reviews have no order id. How does the join to orders work?

On time, not on a key. Trustpilot does not hand you an order reference on a service review, so you bucket reviews by the week they were posted and join that to orders by the week they shipped. That is enough to find the week that went wrong and to turn a count into a rate. It is not enough to name the individual order behind a single review, and no tool reading Trustpilot can do that for you.

How current is the table?

A Trustpilot profile connected through Trustpilot Business is checked every fifteen minutes; one added by its URL is checked a few times a day. The sheet is written every 30 minutes. An external table reads the sheet at query time, so a query you run now sees whatever the last sync wrote. A load job into a native table is as current as its schedule.

Which columns does the table have?

A fixed 28-column header: the review id, the profile, the platform, the title, the full review text, the score, the link, the review date, the detected language, the reviewer name and the tags, among others. There is no reply column, so your replies are not in the table, and there are no per-platform tabs. Rename the columns in a view over the external table if you want warehouse-style names.

Does the first load include our Trustpilot history?

Seeding past reviews is a paid-plan step. Connect the profile through Trustpilot Business and the backfill runs to your plan’s limit; a profile added by its URL brings in its most recent couple of hundred reviews. During the free trial new reviews arrive as they are posted, and the history loads once you subscribe.

What happens when a reviewer edits their review after we fix the problem?

The row updates in place with the new score and text, so a query over it moves with the correction rather than holding a version of the truth Trustpilot no longer shows. New reviews are inserted at the top, so the newest row is always the first one.

Do I need a demo to get started?

No. Connect your Trustpilot profile and the Google Sheet yourself in under five minutes, then run one CREATE EXTERNAL TABLE against it. 14 day free trial, no credit card.

A review count is trivia. Reviews per thousand orders is an instrument.

Set up in under five minutes. No demo required.