Google reviews to Redshift

Redshift already holds the takings, the rota and the footfall. The one thing it does not hold is what the customer said, and that is the column that explains the other three.

  • Reviews syncing in under five minutes
  • No demo required
Amazon Redshift analytics.google_reviews
Google Business Profile 61,482 rows
profile_name Kestrel Market Bellwood
2

Two tills staffed at five on a Friday and half the self-checkouts down

profile_name Kestrel Market Severn Park
5

Marisol walked me to the thing I could not find. Twice.

profile_name Kestrel Express Ashgrove
4

Fine for a quick shop, the queue actually moves

profile_name Kestrel Market Bellwood
1

Self-checkout froze again and nobody came over

26 stores loading into one table COPY 09:34

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 actually reach Redshift

There is no Redshift destination to click inside Reviewflowz. You get a Google Sheet in your own Drive, kept current at :02 and :32 past every hour, with a fixed 28 column header. Amazon AppFlow takes Google Sheets as a source and Redshift as a destination, staging through an S3 bucket you own. AppFlow inserts rather than upserts, so reload the table on each run.

Amazon Redshift Getting rows in No connector
A · No code runs as often as every minute
Google Sheets Sheet AppFlow Amazon Redshift Redshift

AppFlow reads the sheet and writes Redshift, staging through an S3 bucket you own. It inserts, it does not upsert, so you reload rather than append.

B · One job you write you own this step
Google Sheets Sheet export S3 Amazon Redshift Redshift

One COPY with a JOB, and each new file that lands is picked up on its own.

Amazon Redshift Run once
COPY analytics.google_reviews
FROM 's3://kestrel-lake/reviews/'
IAM_ROLE 'arn:aws:iam::4471...:role/redshift-copy'
FORMAT CSV IGNOREHEADER 1
JOB CREATE load_google_reviews AUTO ON;

BigQuery queries a Drive-backed sheet in place. Redshift never does, so every road above runs through a bucket you own.

Join reviews to what you already keep per store

Every multi-site operator keeps a table per store and per week: takings, rota hours against plan, footfall, the last refit. Google reviews arrive tagged with the store, so putting them together is a JOIN. A rating beside sales per visit shows what a bad quarter costs. Beside rota hours, it shows whether the store everyone complains about is the store nobody staffed.

Amazon Redshift

analytics.google_reviews

ops.store_week

ON site_key
from analytics ops
site_key rating rota_gap
BELLWOOD 3.6 -14%
ASHGROVE 4.1 -4%
DUNMORE 4.3 -1%
KIRKHAM 4.5 +2%
SEVERN PARK 4.6 +1%

site_key is yours. It reaches the reviews table through one mapping from the Google listing title, written once.

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.

Find the store behind its own peers

Google Business Profile gives a rating per listing but never puts nine stores side by side. In Redshift a CTE and a window function show eight urban stores within a tenth of 4.5 and the ninth at 3.6. Every store drifting together reads as a price change. One store falling while its neighbours hold reads as a rota gap, a broken card reader or a manager who left.

Amazon Redshift Query editor
-- every store against its own format, not the chain average
WITH by_store AS (
  SELECT s.site_key, s.format, AVG(r.score) AS rating
  FROM   analytics.google_reviews r
  JOIN   ops.stores s USING (profile_name)
  WHERE  r.review_date >= '2026-03-01'
  GROUP BY 1, 2
)
SELECT site_key, format, ROUND(rating, 1) AS rating,
       ROUND(rating - AVG(rating)
             OVER (PARTITION BY format), 1) AS vs_peers
FROM by_store ORDER BY vs_peers
Results 5 of 26 stores
site_key rating vs_peers
BELLWOOD 3.6 -0.9
ASHGROVE 4.1 -0.3
DUNMORE 4.3 -0.2
KIRKHAM 4.5 0.0
SEVERN PARK 4.6 +0.1

Six months of review text, one statement

The full review text is a VARCHAR column, so the word that keeps coming up is an ILIKE and a GROUP BY instead of an afternoon of reading. Reviewflowz detects each review's language and writes it as its own column, and tags arrive filled in. Count six months of reviews mentioning the self-checkouts, split by store, before the regional meeting does.

Amazon Redshift Query editor
-- six months of review text, one statement
SELECT s.site_key,
       COUNT(*) AS reviews,
       SUM(CASE WHEN r.review_text ILIKE '%self-checkout%'
                THEN 1 ELSE 0 END) AS mentions
FROM   analytics.google_reviews r
JOIN   ops.stores s USING (profile_name)
WHERE  r.review_date >= DATEADD(month, -6, CURRENT_DATE)
GROUP  BY 1
ORDER  BY mentions DESC
Results 5 of 26 stores in 1.2s
site_key reviews mentions share
BELLWOOD 214 61 29%
KIRKHAM 178 14 8%
SEVERN PARK 152 9 6%
DUNMORE 131 7 5%
ASHGROVE 96 5 5%

FAQs

Is there a native Redshift connector?

Not from Reviewflowz, and it would be dishonest to imply one. What Reviewflowz gives you is a Google Sheet synced into your own Drive on every plan, plus the Review API and webhooks on Premium. AWS supplies the other half. Amazon AppFlow takes Google Sheets as a source and Redshift as a destination, staging through an S3 bucket you own, which is configuration rather than code. If you would rather own the pipeline, export the rows to S3 yourself and load them with a COPY JOB. Both are more work than the BigQuery version of this page, where BigQuery queries the sheet in place. Neither is more than an afternoon.

Does the store really land on every row?

Yes. Reviewflowz creates one review profile per Google listing, so every review row carries the listing it belongs to. It arrives as column B of the synced sheet, headed Profile Name, and it is the listing title as Google holds it rather than an id of yours. Map those titles onto your own site keys once when you create the table, and after that it is an ordinary join key.

How current is the table?

The sheet resyncs at :02 and :32 past every hour, so everything downstream can be scheduled against those two marks. AppFlow runs a scheduled flow as often as once a minute. A COPY JOB with AUTO ON loads each new file as it arrives rather than on a timer, and a COPY you run at 3am makes the table as current as 3am.

Which columns arrive?

The synced sheet has a fixed 28 column header and one row per review: the review id, the profile name, the platform, the title, the full text, the score, a link back, the review date, the detected language, the reviewer’s name, the tags, and the rest. There is no reply column and there are no per-platform tabs, so it maps onto one flat Redshift table with nothing to reshape.

Can we choose what flows out?

Yes. Pick which review profiles the sheet covers, and add a score filter if you want one, so the estate team gets every store while a support view gets one to three stars and nothing else.

Does the first load include our Google review history?

Yes, on a paid plan. One click seeds the sheet with every past Google review across your listings, so the trend line starts full rather than filling in over the next quarter. During the free trial new reviews arrive as they are posted, and the history loads once you subscribe.

What happens when a reviewer edits or deletes their review?

The row updates in place, keyed on the review id in column A, and when a review comes off your Google listing its row goes on the next sync. That has one consequence worth designing for. AppFlow inserts rather than upserts, and an append-only COPY keeps the old version alongside the corrected one. Reload the table, or upsert on review_id, and Redshift moves with the correction instead of holding a version of the truth Google no longer holds.

Does this work with Redshift Serverless?

Yes. Auto-copy is generally available on Redshift Serverless workgroups and on RA3 provisioned clusters, and AppFlow writes to either. Nothing on this page depends on which one you run.

Do I need a demo to get started?

No. Connect your Google Business Profile and the Google Sheet yourself in under five minutes. 14 day free trial, no credit card. The AWS half is yours to wire up, and it has the same shape as every other load you already run.

Redshift knows everything about the store except what the customer said

Set up in under five minutes. No demo required.