# JustReview: full documentation
> Every JustReview help article and blog post in one file, so an assistant can read the
> whole product in a single fetch. Short version with pricing and install snippet:
> https://justreview.co/llms.txt
Generated: 2026-08-16. Source: https://justreview.co/docs/
Sections keep their canonical URL so answers can cite the right page.
==============================================================================
# Documentation
==============================================================================
---
## JustReview Help Center
Source: https://justreview.co/docs/
Summary: Guides for installing your reviews widget, connecting review sources and customising how reviews look on your website.
## Install the widget on your platform
## Go further
**Regenerate the code after every change.** Widget settings are baked into the snippet on your
site. If you change colours, sources or layout in the dashboard, generate the code again and
replace the old snippet, otherwise nothing changes on your website.
**Add your domain to the whitelist.** The widget only renders on domains listed in
[Settings](https://app.justreview.co/#/settings). This is also why the widget does not show
inside your CMS admin preview, only on the live site.
Still stuck? Email [contact@justreview.co](mailto:contact@justreview.co) with your website
address and a screenshot, and we will look at it.
---
## Email, password and deleting your account
Source: https://justreview.co/docs/account/change-email-and-delete-account/
Summary: Why the email field is locked, how to change your password, and how to delete your account from the panel, along with what happens to your reviews.
## Changing the account email
The email field in [Settings](https://app.justreview.co/#/settings) is **read-only on purpose**. It is
your login and it ties your account to your billing, so changing it by yourself could separate you from
your subscription or lock you out.

To change it, write to [contact@justreview.co](mailto:contact@justreview.co) **from the current account
address** and give us the new one. If you no longer have access to the old mailbox, tell us and we will
confirm your identity another way, for example against your billing details.
Typical reasons this comes up, all fine with us:
- the business changed domain,
- the account was created by an agency or a former employee and needs handing over,
- you signed up with a personal address and want a company one.
If your subscription was paid from a different address, mention that too, so we link both in one go
rather than leaving you on a plan the system cannot match to your account.
## Changing your password
This one you do yourself, in the **Password** card at the bottom of
[Settings](https://app.justreview.co/#/settings). No need to write to us.
1. Enter your **current password**, then the new one twice.
2. The new password must be **at least 8 characters**, different from the current one, and it cannot be
your email address.
3. Press **Change password**.
You stay signed in in the browser you are using, and every other device is signed out. The panel tells
you how many sessions it closed. In the rare case where we cannot tell which session is yours, we close
all of them, including this one, say so, and sign you out.
If you cannot get in at all, use the reset link on the login screen instead. When the reset email does
not arrive, see
[password reset email is not arriving](/docs/troubleshooting/password-reset-email-not-arriving/).
## Handing the account over to someone else
Same route as the email change: write to us. Do **not** create a second account and reconnect
everything, because your reviews, widget settings and the snippet already on your website all belong to
the first account. A new account starts empty and the widget on your site keeps pointing at the old one.
## Deleting your account
You can do this yourself, without waiting for us. Open [Settings](https://app.justreview.co/#/settings),
go to the **Delete account** card at the bottom and press **Delete account**. The dialog has two steps on
purpose: the first shows what you are about to lose, the second asks for your password.
Two things worth doing before you start:
1. **Export your reviews if you want to keep them.** Once the account is gone, so is the data. The
export is in [All reviews](https://app.justreview.co/#/reviews).
2. **Remove the JustReview snippet from your website.** After deletion the widget has nothing to load, so
leaving the code behind means an empty space and a pointless request on every page view.
### Step one: what you are about to lose
The first screen is not a generic warning, it reads your actual account: which address is being deleted,
how many collected reviews stop being served, and how many connected sources get disconnected. Your login
email is released and anonymised.
If you are on a paid plan, this screen is also where you learn that **the subscription is cancelled
immediately and the current period is not refunded**. If you would rather use up the time you have
already paid for, cancel now and come back to delete at the end of the period. See
[cancelling and refunds](/docs/troubleshooting/cancelling-and-refunds/).
On a monthly Plus, Pro or Ultimate subscription this screen also offers you a **free month**. One click
on *Keep my account, take the free month* and your next renewal costs nothing: no card details, nothing
to cancel afterwards, and your widgets, sources and reviews stay exactly as they are. It is one offer per
account, so it will not appear a second time, and it does not apply to yearly plans, lifetime licences,
or accounts without a live subscription.
If your access came from a lifetime (AppSumo) deal, deleting the account ends it for good. The licence
cannot be restored, moved to another account, or bought again.
### Step two: confirmation
The second screen asks for your **password**, a tick confirming you understand the removal is permanent,
and optionally what made you leave. Then *Delete my account permanently* does it, and you are signed out.
Two cases where the panel deliberately stops instead: **administrator accounts** cannot be deleted this
way, and if your subscription cannot be cancelled automatically we abort before removing anything and ask
you to contact support. Nothing is left half-deleted.
Then email is still the way in: write to [contact@justreview.co](mailto:contact@justreview.co) and we
will verify you another way, for example against your billing details. If you can log in, use the panel,
it is immediate.
## What deletion removes
Your sign-in details are anonymised, your connected sources and their access tokens are deleted, and the
reviews collected under the account stop being served anywhere. Every widget you have embedded on your
website stops working, and the account can no longer be logged into.
What it does **not** touch: the reviews on Google, Facebook or any other platform. Those belong to the
platform and to the people who wrote them. Deleting your JustReview account has no effect there, which
also means you can come back later and reconnect.
## Your data and GDPR
If you need a data export, deletion confirmation, or a data processing agreement for your own compliance
records, write to [contact@justreview.co](mailto:contact@justreview.co) and say what you need. Where the
review data comes from and on what basis is explained in
[where our reviews come from](/docs/scraping-reviews-is-it-legal/).
## Cancelling versus deleting
They are not the same thing:
- **Cancelling** stops the charges. Your account stays, downgraded, and your reviews stay with it, so
you can return without importing everything again. See
[cancelling and refunds](/docs/troubleshooting/cancelling-and-refunds/).
- **Deleting** removes the account and its data. There is no undo.
If you are unsure, cancel. It is reversible.
---
## Different reviews per product page?
Source: https://justreview.co/docs/account/reviews-per-product/
Summary: The honest answer about per-product review filtering, the workarounds that do exist, and which one fits a shop with many product pages.
**Short answer: no.** Reviews are shown per account, not per product. The widget on a product page
displays the same set as the one on your home page.
We would rather tell you this before you buy than after.
## Why
Most sources we collect from publish reviews **about the seller or the business**, not about individual
products. A Google or Facebook review is about your company. There is nothing in that data to attach to a
specific product page.
Where product-level reviews do exist, matching them reliably to your catalogue would need a shared
identifier, and platforms do not expose a consistent one. Guessing by product name produces wrong matches,
which is worse than none.
Not in the widget settings, and not through the embed code. If you read otherwise anywhere, it is out of
date.
## What people usually want, and what actually works
**"I want social proof on the product page."** Use the widget as it is. Reviews of your business on a
product page still work: they answer "can I trust this shop", which is the actual objection at that point,
and often matters more than an opinion on that exact item.
**"I want stars in Google for my products."** The structured data we output is a business-level rating, not
a product rating. Google shows it for the page carrying the widget. See
[stars in Google results](/docs/getting-started/stars-in-google-results/).
**"I have my own per-product reviews from my shop software."** Two options, both real:
- **[Import them from CSV](/docs/getting-started/import-reviews-from-csv/)** and display them alongside
everything else. Still not filtered per product, but the content is yours.
- Keep your shop platform's native product reviews on product pages, and use JustReview for
business-level social proof on the home page, checkout and landing pages. Plenty of customers run both,
and they answer different objections.
**"I sell on a marketplace with product reviews."** Those reviews come in, but as part of your account's
pool, not tied to catalogue entries.
## If this is a deal breaker
Say so at [contact@justreview.co](mailto:contact@justreview.co). Per-product filtering is a recurring
request and demand shapes what gets built. Telling us which platform your product reviews live on is more
useful than a general vote.
---
## Show the same widget twice on one page
Source: https://justreview.co/docs/adding-multiple-times-the-same-widget-on-page/
Summary: Place two or more copies of the same widget type on a single page by giving each one its own CSS class, with a ready code example.
By default each widget type renders once per page. To show two Testimonials blocks with different
settings, or the same Summary in two places, give each copy its own CSS class and pass that class
to the init function.
1. **Build the first widget and click "Generate Code for your website".**

2. **Give the container a class of your choice and pass the same class to the function.**
The class name is the third argument. It is what tells JustReview which container to fill, so
**every copy needs a different class**.
```html
```

Part 1 of the snippet (the library) belongs on the page exactly once, no matter how many widgets
you show. Only the configuration block and the container repeat.
This does not work for **JustReview Badge** or **JustReview Stars**. The Badge attaches itself to
the corner of the viewport, so a second copy has nowhere to go.
## Common mistakes
- **Same class on both copies.** Both init calls target the first match, so you see one widget or
a duplicate of the same one.
- **Class passed only to the `
`, not to the function.** Without the third argument the widget
looks for its default container and ignores your class.
- **Class name mismatch**, for example `reviews-home` in the HTML and `reviews_home` in the script.
The names must be identical.
---
## Your platform is not in the guides
Source: https://justreview.co/docs/developers/other-platforms/
Summary: How to install the widget on any CMS or site builder, including IdoSell, DUDA, Subbly, MODX and Mobirise, with one universal snippet.
We have step-by-step guides for the most common platforms. Everything else follows the same three-part
pattern, and almost every builder has the two places you need.
Platforms customers regularly ask about that are not yet in the guides: **IdoSell, DUDA, Subbly, MODX,
Mobirise**, plus most self-built sites.
## What you are looking for
1. **A place for site-wide code**, ideally injected before the closing `
` tag.
Depending on the platform it is called: *Custom code*, *Code injection*, *Site-wide code*, *Header and
footer scripts*, *Tracking code*, *Custom HTML in the theme*. Put **part 1 and part 2** of the snippet
there.
If the only field available is in the `
` rather than the footer, use it. The widget still works,
it is only slightly worse for page speed.
2. **A place for an HTML block on the page** where the reviews should appear.
Called: *HTML block*, *Custom HTML*, *Embed code*, *Raw HTML*, *Code widget*. Put **part 3** there.
That is the whole job. If your platform has both, the widget will work.
## If there is no site-wide code field
Some closed builders on cheaper plans do not allow custom scripts at all. Then put **all three parts into
one HTML block** on the page where the widget should appear. It works, with two caveats: the widget only
exists on that page, and if you add several such blocks the library loads more than once, which can break
rendering.
On several platforms custom code requires a higher plan. Squarespace is the clearest example. If you cannot
find the field, check whether your plan includes it before assuming something is broken.
## After installing, always check these
1. **Your domain is in the whitelist** in [Settings](https://app.justreview.co/#/settings), matching what
visitors actually type, including or excluding `www` as appropriate.
2. **The container from part 3 is present** on the page you are looking at. The library alone renders
nothing.
3. **You are looking at the live site, not the editor preview.** Most builders do not run custom code in
the editor, and the whitelist blocks it there anyway.
4. **The cache is cleared**, both the platform's and any CDN in front of it.

Full checklist: [widget still not visible](/docs/troubleshooting/no-reviews-or-api-code-is-invalid/) and
the [JavaScript reference](/docs/developers/widget-javascript-reference/).
## Builders that serve custom code from an iframe
Some builders, Wix being the known case, run your code inside an iframe hosted on **their** domain, not
yours. The whitelist then sees their domain and blocks the widget. Two ways out: whitelist that host, or
clear the whitelist so the widget runs anywhere. Details in
[the Wix guide](/docs/wix-code-embed-instruction/).
If you hit this on another builder, the symptom is the same: everything looks correct and nothing renders.
Write to us with your site address and we will tell you which host to whitelist.
## Want a guide for your platform?
Write to [contact@justreview.co](mailto:contact@justreview.co) with the platform name. If several
customers use it, we will add a guide with screenshots. Send the names of the two fields you found and it
gets written faster.
---
## Widget JavaScript reference
Source: https://justreview.co/docs/developers/widget-javascript-reference/
Summary: Every init function and configuration option in the embed snippet, for developers and agencies integrating JustReview.
For developers and agencies. If you just want the widget on your site, use the
[installation guides](/docs/other-sites-universial-tutorial/) instead, the dashboard generates this code
for you.

## Structure of the snippet
Three parts. Part 1 loads the library **once per page**. Part 2 initialises one widget. Part 3 is the
container that decides where it renders.
```html
```
`YOUR_USER_ID` is the hashed identifier from
[Settings](https://app.justreview.co/#/settings). It is safe in public HTML, it only allows reading the
reviews you chose to publish.
## The functions
| Function | Widget | Plan |
|---|---|---|
| `initBadge` | floating badge with your rating | Free |
| `initSummary` | average, count and rating breakdown | Plus |
| `initTestimonials` | carousel of full reviews | Plus |
| `initCounters` | review counts per source | Plus |
| `initReviewsPage` | full reviews page with optional form | Pro |
| `initStars` | inline stars | Pro |
Signature:
```js
initTestimonials(userId, options, containerClass);
```
The third argument is optional and only needed when you show
[the same widget more than once on a page](/docs/adding-multiple-times-the-same-widget-on-page/).
## Options
### Shared
**`services`** (array of strings) limits the widget to selected sources. Empty or omitted means every
connected source.
```js
services: ["google", "facebook", "etsy.com"]
```
Use the internal source names. Domain-style sources carry the domain, for example `etsy.com`,
`booking.com`, `apps.apple.com`. The generated code from the dashboard already contains the correct
values, which is the safest way to get them right.
**`styles`** (object) sets colours, radii and positioning. The dashboard colour pickers write into this.
**`showJustReviewLogo`** (boolean) shows or hides our logo. Hiding it is **White Label**, available from
**Plus**.
### `initBadge`
| Option | Type | What it does |
|---|---|---|
| `enableAggregateRatings` | boolean | outputs structured data for Google. **Pro+**, and your brand name must be set |
| `disableBadge` | boolean | does not render the visible badge. Combined with the above, gives structured data only |
| `disableOnMobile` | boolean | hides the badge on small screens. In the panel: **Hide on mobile**, from **Plus** |
| `fadeOutWhenScrollingOnMobile` | boolean | fades the badge out while scrolling on mobile. In the panel: **Fadeout at mobile on scroll** |
The badge is the only widget that emits structured data. See
[stars in Google results](/docs/getting-started/stars-in-google-results/).
### `initSummary`
| Option | Type | What it does |
|---|---|---|
| `displayHeader` | boolean | shows the default heading |
| `displayCustomHeader` | boolean | use your own heading instead |
| `customHeader` | string | the heading text |
### `initCounters`
| Option | Type | What it does |
|---|---|---|
| `displayReviewsAmount` | boolean | shows the number next to each source |
| `config` | object | per-source display settings |
### `initStars`
| Option | Type | What it does |
|---|---|---|
| `displayLogo` | boolean | shows the JustReview logo next to the stars |
| `displaySummary` | boolean | shows the rating and count next to the stars |
### `initReviewsPage`
| Option | Type | What it does |
|---|---|---|
| `config` | object | layout, sorting and paging |
The review form and moderation live in this widget, see
[collect your own reviews](/docs/getting-started/collect-your-own-reviews/).
## Reinitialising after content loads
The widget initialises on page load. Elements added later by JavaScript never get processed, so call the
init function again after your new content is in the DOM. Full recipe, including a `MutationObserver`
fallback, in
[widget missing on dynamically loaded content](/docs/troubleshooting/widget-not-updating-dynamic-pages/).
## Things that will bite you
Changing anything in the dashboard does not change what your site renders. The configuration is inside the
`init` call on your page. Regenerate and replace it, or edit the object by hand.
The widget will not render on a domain that is not in
[Settings](https://app.justreview.co/#/settings). This includes staging domains and builder preview
domains. Wix serves custom code from an iframe on its own host, which needs whitelisting separately, see
[the Wix guide](/docs/wix-code-embed-instruction/).
Two copies of `justreview.js` on one page can break rendering. With several widgets, part 1 appears once
and part 2 repeats.
**Do not minify or self-host `justreview.js`.** It is served with the caching and headers it needs, and a
modified copy breaks subresource integrity for everyone.
**Asynchronous loading and script combiners.** Optimisation plugins that defer or bundle scripts change the
execution order, which is the most common cause of a widget that worked and then stopped. Exclude
`justreview.js` from JavaScript optimisation.
---
## Browse, filter and export your reviews
Source: https://justreview.co/docs/getting-started/all-reviews-filters-and-export/
Summary: Find any review in seconds with the filter bar: source, rating, language, visibility and date. Then export everything to CSV.
Everything JustReview collected for you lives in
[All reviews](https://app.justreview.co/#/reviews). On an account with thousands of reviews the filter
bar is the difference between finding one in three seconds and not finding it at all.

## The filters
**Source.** One platform at a time, for example only Google, only Facebook.
**Rating.** Pick a star level. The quickest way to see everything negative: filter 1 and 2 stars.
**Language.** Handy on multilingual stores, and it tells you whether
[filtering by page language](/docs/how-to-use-the-filter-by-page-language-function/) has enough
material in a given language to be worth switching on.
**Status.** Visible or hidden, if you use
[Review Curation](/docs/getting-started/turn-reviews-on-and-off/).
**Date range.** Narrows to a period, for example to check whether anything arrived after a campaign.
**Text search.** Searches review content and author name. Use it when a customer writes in and you need
their review: search their name or a phrase they used.
Filters combine. "Google, 1 to 2 stars, last 30 days" is one click each.
Comparing your total against a platform's? Filter by that source and read the count. That is the number
to compare, not what a widget displays, because a widget can be limited to a subset. See
[why counts differ](/docs/troubleshooting/review-counts-do-not-match/).
## Export to CSV
The export gives you everything currently in your account: author, text, rating, date, source and
language, plus an internal ID, the review link and its visibility status.

What it is good for:
- **A backup** before any bigger change.
- **Reporting**, for instance average rating per month in a spreadsheet.
- **Moving reviews you collected yourself** to another tool. Reviews imported from external platforms
stay subject to those platforms' terms.
Round-tripping an export back through [CSV import](/docs/getting-started/import-reviews-from-csv/)
creates duplicates for anything that came from a connector, because a CSV row and an API-fetched review
are not recognised as the same record.
## On very large accounts
Above a few thousand reviews the list takes a moment to build. Narrow with filters first instead of
scrolling: the filters run before the list renders, so a filtered view is faster than an unfiltered one.
---
## Collect your own reviews with a form
Source: https://justreview.co/docs/getting-started/collect-your-own-reviews/
Summary: Let customers leave reviews directly on your website, with moderation before anything is published and a form you can link to.
Besides pulling reviews from external platforms, JustReview can collect them **on your own site**. The
Reviews Page widget can include a form where a customer leaves a rating and a comment.
This is the answer for businesses whose customers do not use review portals at all: local services,
B2B, anything sold offline.
Both the form and the moderation switch are Ultimate features, inside the **JustReview Page** widget.
## Switching the form on
1. Open the **JustReview Page** widget in [Widgets](https://app.justreview.co/#/widgets).

2. Turn on **Display review form**. It is **off by default**, so the reviews page shows only existing
reviews until you enable it.
3. **Turn on "Check review before publish".** Strongly recommended, see the warning below.
4. Generate the code again and replace the snippet on your site.
**"Check review before publish" is off by default**, which means anything submitted through the form
appears on your website immediately, with no review by you.
On a public page that is a bad default to leave alone. Switch it on, and new submissions wait for your
approval in [All reviews](https://app.justreview.co/#/reviews) instead of publishing themselves.
## Approving submitted reviews
With moderation on, a submitted review lands in your account as hidden. Open
[All reviews](https://app.justreview.co/#/reviews), filter by status, read it and switch it on to publish.
See [turn reviews on and off](/docs/getting-started/turn-reviews-on-and-off/).
## Sending customers straight to the form
Link to your reviews page with `#leave-review` at the end and the form scrolls into view and opens by
itself. Ideal for a post-purchase email:
```
https://yourwebsite.com/reviews#leave-review
```
Full details in [link straight to the review form](/docs/how-to-scroll-to-and-open-comment-form-in-justreview-page/).
## What happens to these reviews
**They stay yours and stay on your site.** We do not publish them to Google, Facebook or anywhere else,
and there is no way to push them out. If you want reviews on your Google listing, the customer has to
leave them there. The shortest path is a link that opens the review window straight away, or a printed
QR code on the table or the receipt: our free
[Google review link and QR code generator](/tools/google-review-link-generator) builds both from your
Maps profile, with no account and no email.
**They are labelled as your own collected reviews**, not attributed to any external platform. We will not
present your own data as coming from a source it did not come from.
**They count towards your [plan limit](/docs/getting-started/plans-and-limits/)** like every other review.
**They appear in widgets alongside imported ones**, and you can include or exclude them per widget through
the **Services** selection.
## Getting customers to actually use it
The form works. Getting traffic to it is the real task.
- **Ask by email after purchase**, with the `#leave-review` link. This single thing outperforms everything
else.
- **Ask once, at the right moment**, when the product has arrived or the service is done.
- **Keep the ask short.** Every extra field costs you responses.
- **Do not offer rewards for positive reviews.** In the EU that runs straight into consumer protection
rules, and platforms remove incentivised reviews.
Moderation exists to stop spam and abuse, not to remove criticism. A visible four-star review with a real
reservation converts better than a wall of fives, and selectively hiding negatives to mislead is what the
[Omnibus Directive](https://eur-lex.europa.eu/eli/dir/2019/2161/oj) prohibits.
---
## Reading your dashboard
Source: https://justreview.co/docs/getting-started/dashboard-explained/
Summary: What the numbers, trend chart and rating breakdown on the dashboard actually tell you, and which of them signal a problem with a source.
The [dashboard](https://app.justreview.co/#/dashboard) is the first thing you see after logging in. It
answers three questions: how many reviews you have, whether they are still coming in, and how they are
distributed.

## Connected sources
Each connected platform gets a tile with its review count. Sources you have not connected are shown too,
so you can see what is available on your plan.

**Use it as a health check.** If a tile you connected months ago shows a suspiciously round or low
number, that is your first signal something stopped. Confirm in
[All reviews](https://app.justreview.co/#/reviews) by filtering that source and looking at the newest
date, then read
[reviews stopped updating](/docs/troubleshooting/reviews-stopped-updating/).
## Total reviews and average rating
The total is **all reviews stored in your account, across every source**, including any you hid and any
imported from CSV. It is the number your
[plan limit](/docs/getting-started/plans-and-limits/) applies to.
A widget can be limited to selected sources, ratings or languages, so it legitimately displays fewer.
When comparing numbers, always start from the dashboard or All reviews, never from a widget.
## Reviews over time
The chart shows how many reviews arrived in each period, and can be narrowed by source and by sentiment
over ranges from 30 days up to 5 years.
Two things it is genuinely good for:
**Spotting a dead connector.** A line that drops to zero and stays there is a connection that expired,
not customers going quiet. Expired Google and Facebook connections are also flagged on the Connectors
screen and we email you when it happens, so the chart is a second pair of eyes rather than your only
warning.
**Checking whether asking works.** Send a review request campaign, then look at the following weeks. If
the line does not move, the campaign did not land.
## Rating breakdown
How many reviews at each star level. Worth a look for one reason: **the shape matters more than the
average**. A 4.6 built from many fives and a few ones reads differently to a 4.6 built from mostly
fours, and it tells you whether you have a consistency problem or isolated incidents.
Filter 1 and 2 stars in [All reviews](https://app.justreview.co/#/reviews) to read them together. That
is usually the most useful ten minutes you can spend in the panel.
## An empty dashboard
If you just signed up and everything is at zero, nothing is broken. Connect a source and the first
[Google or Facebook](/docs/getting-started/supported-sources/), both are available on Free.
---
## Email notifications about new reviews
Source: https://justreview.co/docs/getting-started/email-notifications/
Summary: Turn the new-review summary on or off, pick weekly or daily, and choose between all reviews and only the bad ones.
JustReview can email you when your connected sources bring in new reviews, so you do not have to open
the dashboard to find out. Everything is in the **Review notifications** card at the bottom of
[Settings](https://app.justreview.co/#/settings).

## The three settings
1. **Email me when new reviews are collected** is the master switch. It is on by default. Turn it off
and nothing from this channel reaches you, including the low-rated review alert below.
2. **Frequency** is *Weekly* or *Daily*. Weekly is the default. Daily does not mean one email every
day, it means at most one: if nothing new came in, nothing is sent.
3. **What to include** is *All new reviews* or *Only negative (1–2★)*. Pick the second one if you only
want to hear about reviews that need a reply.
Press **Save** under the card. The change applies to the next send.
## What is in the email
A summary, not a copy of every review:
- how many new reviews arrived, split into positive (4–5★), neutral (3★) and negative (1–2★),
- how many came from each connected source,
- the best and the worst of the new batch, quoted,
- a link straight to your dashboard.
On *Only negative* the email drops the positives and shows the low-rated ones alone.
## "New" means new to you, not new in our database
Sources are re-read on a schedule, and a re-read pulls the same reviews again. We keep a per-account
record of what we have already told you about, keyed on the review's own identifier at the source, so
a routine refresh never counts as a fresh batch. You get an email when there is something you have
genuinely not seen.
## The first email after an import
The very first summary works differently: it is titled **Your reviews are ready in JustReview** and
it arrives once, after your first import has finished, no matter which frequency you picked. The same
one-time email is sent when you connect another source and it pulls in a large history.
A first import can run for hours, so a summary sent while it is still going would report a partial
count. We wait for the batch to settle before sending, which usually means the next day.
## Instant alert about a bad review
Separately from the summary, a review of **1 or 2 stars** triggers an email of its own, checked every
half hour, so you can respond while it still matters. Three things keep it quiet:
- **at most one alert every 6 hours** per account, so a run of bad reviews produces one email listing
them, never one per review,
- **only reviews from the last 60 days**, because a five-year-old complaint appearing in our database
today is not an event you can react to,
- **no alerts for history imports**, so connecting a source with years of feedback does not fire a
storm. Those reviews still appear in the regular summary.
The alert uses the same **Review notifications** switch. There is no separate opt-out, because two
switches for one kind of email would only be confusing.
## Where the emails go, and how to stop them
They go to the address on your account, the one in the Email field in Settings. That field is
read-only, so if it is the wrong mailbox see
[account email, password and deleting your account](/docs/account/change-email-and-delete-account/).
Every notification has an unsubscribe link in the footer. It switches off **only** this channel and
leaves the rest of our email alone, exactly like unticking the box in Settings. It works the other way
round too: unsubscribing from our other emails does not stop these.
## If nothing arrives
1. Check that the switch in Settings is actually on and that you pressed **Save**.
2. Check spam and any filters or rules on your mailbox.
3. Remember the cadence: on *Weekly* the gap between two summaries is a full week, and on *Only
negative* an inbox with no new low-rated reviews is the correct outcome.
4. Still nothing? See
[password reset email is not arriving](/docs/troubleshooting/password-reset-email-not-arriving/) —
the causes are the same for any email we send — or write to
[contact@justreview.co](mailto:contact@justreview.co).
---
## How JustReview works
Source: https://justreview.co/docs/getting-started/how-justreview-works/
Summary: Collect reviews from 30+ external sources and display them on your website in three steps: connect a source, build a widget, paste one line.
JustReview pulls the reviews your customers already left on external platforms, Google, Facebook,
Amazon and around thirty more, and displays them on your own website through ready-made widgets.
We do not create reviews and we do not change what your customers wrote. We gather what exists and
put it where it sells: on your site.
## The three steps
1. **Connect your review sources.**
In [Connectors](https://app.justreview.co/#/connectors/google) you link the platforms where your reviews
live. Google and Facebook use their own sign-in screen. Other sources need an identifier or a
profile link.

2. **Build a widget.**
In [Widgets](https://app.justreview.co/#/widgets) pick the format that fits the spot on your page,
set the colours, and choose which sources it should show.

3. **Paste the code on your website.**
Click **"Generate Code for your website"** and paste the snippet where the reviews should appear.
We have a step-by-step guide for every popular platform.
## What you get
**Social proof where it converts.** Reviews on the product page and at checkout, not on a profile
someone has to go looking for.
**Everything in one place.** Reviews from all your platforms in one dashboard, with filters by source,
rating, language and date.
**Stars in Google results.** From the Pro plan the widget can output structured data, which lets
Google show a star rating next to your page in search results. See
[stars in Google](/docs/getting-started/stars-in-google-results/).
## What JustReview does not do
Being straight about the limits saves you time:
- **Reviews are shown per account, not per product.** There is no filtering by product, ASIN or URL,
so a product page shows the same set as the home page. There are working ways around this, see
[different reviews per product](/docs/account/reviews-per-product/).
- **One account covers one business.** Separate businesses or brands need separate accounts. Several
locations of the **same** business fit in one account on Ultimate, see
[multiple locations](/docs/getting-started/multiple-locations/).
- **We do not publish anywhere else.** Reviews collected through your own form stay on your site,
they are not sent to Google or Facebook.
- **We do not translate reviews.** You can, however, show only reviews matching the page language,
see [filter by page language](/docs/how-to-use-the-filter-by-page-language-function/).
## Two rules that prevent most problems
Widget settings are baked into the snippet on your site. Change anything in the dashboard, then
generate the code again and replace the old snippet. Otherwise your website keeps showing the
previous configuration.
The widget only renders on domains listed in [Settings](https://app.justreview.co/#/settings). This
is also why it stays invisible inside your CMS admin preview and only shows on the live site.
## Next steps
---
## Import reviews from a CSV file
Source: https://justreview.co/docs/getting-started/import-reviews-from-csv/
Summary: Bring in reviews you already hold, from a previous review tool, your shop software or a platform export, using a ready CSV template.
Useful when you are moving from another review tool, recovering history that fell outside a
platform's time window, or you collected reviews yourself and want them on your site.
CSV import is available from **Plus**. On Free the option is locked.
## The file format
One header row, then one row per review. **Both a header row and at least one data row are
required.**
The separator is detected automatically: if the header contains more semicolons than commas, we read
it as semicolon-separated, which means an export straight out of Excel usually works untouched.
Only **one column is mandatory**: the review text.
| Column | Required | Accepted header names | If missing |
|---|---|---|---|
| Review text | **yes** | `content`, `text`, `review`, `comment`, `body`, `tresc`, `opinia` | file rejected |
| Author | no | `author`, `name`, `reviewer`, `autor` | becomes `Anonymous` |
| Rating | no | `stars`, `rating`, `score`, `star`, `ocena`, `gwiazdki` | becomes 5 |
| Date | no | `date`, `created`, `data` | becomes today |
| Link | no | `url`, `link` | empty |
| Language | no | `lang`, `language`, `jezyk` | becomes `en` |
Header names are case-insensitive, so `Author` and `author` both work.
### Example
```csv
author,content,stars,date,lang
Anna Kowalska,"Fast shipping, exactly as described.",5,2026-03-14,en
Marek,"Good product, packaging could be better.",4,2026-04-02,pl
,"Very happy with the service.",5,,en
```
The third row has no author, so it will show as `Anonymous`.
## How values are handled
**Rating** is rounded and clamped to the 1 to 5 range. A `4,5` with a comma works, so European
exports do not need converting. Anything above 5 becomes 5, anything below 1 becomes 1.
**Date** accepts common formats. If a date cannot be read, today's date is used rather than failing
the whole row.
**Language** is what the [page language filter](/docs/how-to-use-the-filter-by-page-language-function/)
uses later. Worth filling in if your site is multilingual.
**Rows with empty review text are skipped**, and reported back as skipped.
## Import it
1. Open [Connectors](https://app.justreview.co/#/connectors/csv-import) and choose **CSV import**.

2. Upload your file.
3. Check the result. You get back how many reviews were **imported** and how many **skipped**.
## Things worth knowing before you import
Duplicates are detected by author, rating and review text together. Upload the same file twice and
the second pass reports everything as skipped instead of doubling your reviews.
The flip side: two genuinely different reviews with the identical author name, identical rating and
identical text count as one. In practice that is almost always an actual duplicate.
A row from a CSV and the same review fetched from a platform API are **not** recognised as the same
thing, so you would end up with both. If you are filling a gap in history, trim the export to the
dates you are actually missing first.
**Imported reviews count towards your plan limit.** If the file is larger than your remaining room,
we import what fits and tell you the limit was reached.
**Maximum 20 000 rows per file, and 5 MB per file.** Whichever you hit first, split the file.
A very large export can exceed 5 MB well below 20 000 rows.
**Imported reviews are attributed to JustReview**, not to Google, Facebook or any other platform. We
will not label your own data as coming from a source it did not come from. In widgets they appear as
your own collected reviews.
**They are visible immediately** after import.
## Common problems
**"CSV must have a content column".** Your text column is named something we do not recognise. Rename
it to `content` and re-upload.
**"CSV needs a header row and at least one data row".** The file has only a header, or is empty.
**Everything reported as skipped.** Either the reviews are already in your account, or the text column
is empty for every row. Open the file in a plain text editor and check that the text really is in the
column named in the header.
**Fewer reviews than the file contains.** You hit your plan limit, or rows had empty text. Both are
in the response.
---
## Multiple locations in one account
Source: https://justreview.co/docs/getting-started/multiple-locations/
Summary: Connect several Google or Facebook listings to one JustReview account, with an honest note on what the widget can and cannot separate.
If your business has several branches, each with its own Google listing, you can connect them all to one
account instead of paying for several.
Up to **5 profiles per source** are included, so 5 Google listings plus 5 Facebook pages. Multiple
locations work for **Google and Facebook only**, other sources connect one profile each.
## How to add another location
1. Open [Connectors](https://app.justreview.co/#/connectors/google) and pick **Google** or **Facebook**.
2. Sign in and select the **next** listing. Your existing one stays connected, the new one is added
alongside it.
3. Repeat for each location. The panel shows how many you have used out of your limit.

Reviews from all connected locations flow into one pool and appear together in
[All reviews](https://app.justreview.co/#/reviews) and in your widgets.
## Read this before you buy
This is the limitation people are most often surprised by, so it is better said up front: reviews from all
your locations are displayed **together**. There is no per-location filter in the widget and no way to put
"only the Kraków branch" on the Kraków page.
If you need each branch page to show only its own reviews, one account with multiple locations is **not**
the right setup. Separate accounts per branch is, because each has its own widget and its own pool.
What multiple locations **is** good for:
- **One combined rating and review count** across the whole business, which for a chain is usually the
stronger number.
- **One dashboard** instead of logging into several accounts.
- **One subscription** instead of several.
What it is **not** good for:
- Branch-specific pages that need branch-specific reviews.
- Franchise setups where each owner needs their own access.
## More than five locations
Five per source is included with Ultimate. Above that, extra locations are available as a paid add-on.
Write to [contact@justreview.co](mailto:contact@justreview.co) with how many you need and we will set it
up.
## Removing one location
You can disconnect a single profile without touching the others. **Disconnecting a location removes the
reviews collected from it**, while the rest stay. The panel tells you the count before you confirm.
## One business, not several businesses
Multiple locations mean **branches of the same business**. Separate companies or unrelated brands need
separate JustReview accounts, since they have different names, different ratings and usually different
websites.
If you are an agency managing several clients, each client needs their own account. Write to us if you
handle a number of them, that is a conversation worth having directly.
## Troubleshooting
**Profile limit reached.** The panel shows a note about the limit and an upgrade button. You have used your five for that source, ask us about the add-on.
**Upgrade prompt instead of the profile list.** The feature needs Ultimate. Note that some lifetime deal tiers grant a plan name
without the review allowance this feature requires, so if you believe you are on the right plan and still
see this, write to us and we will check your account.
**A new location shows no reviews.** Each connection imports separately and in the background. Give it
time, then check by filtering that source in All reviews.
**One location stopped updating.** Access is granted per profile, so it can expire for one listing and not
the others. Reconnect that one, see
[reviews stopped updating](/docs/troubleshooting/reviews-stopped-updating/).
---
## Plans, limits and what each one includes
Source: https://justreview.co/docs/getting-started/plans-and-limits/
Summary: How the review limit works, which features need which plan, and what happens when you hit the ceiling. Nothing is ever deleted.
## The review limit is a total, not a monthly allowance
This is the single most misunderstood thing about our pricing, so it goes first.
| Plan | Review limit |
|---|---|
| Free | 100 |
| Plus | 1 000 |
| Pro | 10 000 |
| Ultimate | 20 000 |
It is the **total number of reviews stored in your account across all sources**. It does not reset
every month. If you have 980 reviews on Plus, you have room for 20 more, not 1 000 more this month.
Once you reach the ceiling, imports stop. Existing reviews keep displaying, but nothing new comes in
until you upgrade. If your count is sitting on exactly 100, 1 000, 10 000 or 20 000, that is your
answer, not a bug.
## Which feature needs which plan
**Free**
- Google and Facebook sources
- JustReview Badge widget
**Plus and above**
- Amazon, eBay, Allegro, Booksy, Trusted Shops, Reviews.io, Yell sources
- **Import from CSV**
- Summary, Testimonials and Counters widgets
- **White Label**: the **Show JustReview logo** switch in each widget
**Pro and above**
- Reviews Page and Stars widgets
- **Generate Rich Snippet Data**, the structured data that lets Google show stars
- **Best reviews first**, labelled **Best reviews on top** in the Reviews Page widget
- **Filter by page language**
**Ultimate**
- **All remaining sources**, roughly two thirds of the catalogue, including Etsy, Yelp, Tripadvisor,
Google Shopping, Booking, Airbnb, Walmart, AliExpress, Capterra, G2, Sitejabber, Product Hunt,
Google Play, Apple App Store and the professional directories
- **Review Curation**, switching individual reviews on and off
- **Multiple locations** in one account
- **Replies** to Google reviews
The current comparison table is always on the [pricing page](https://justreview.co/#pricelist).
## Trial
Paid plans start with a **7-day trial**. You give card details up front, and you can cancel inside
the trial without being charged.
## Lifetime deals from AppSumo
If you bought a lifetime deal, your plan is tied to the tier you purchased and does not renew, so
there is nothing to pay monthly.
Cancelling can remove lifetime access, which is not what you want and is awkward to restore. If you
need to change anything about a lifetime account, write to
[contact@justreview.co](mailto:contact@justreview.co) first.
## Changing plans
Upgrades and downgrades happen in [Payments](https://app.justreview.co/#/payments). An upgrade takes
effect immediately.

**If your plan does not change right after payment**, log out and back in first, then read
[paid but still on Free](/docs/troubleshooting/paid-but-still-on-free/). The usual cause is paying
with a different email address than your account uses.
## When you are over the limit after a downgrade
Downgrading does not delete reviews. You keep what you have, but imports stay paused until your count
is back under the new ceiling. On Ultimate you can hide reviews you do not need, though hiding does
not reduce the stored count. In practice: downgrade only when your review volume genuinely fits the
smaller plan.
## Billing
We charge in **EUR**. Invoices and the payment method live in the billing portal, reachable from
[Payments](https://app.justreview.co/#/payments). If you are a VAT-registered company in the EU and
need reverse charge on the invoice, write to us and we will correct it.
---
## Stars in Google search results
Source: https://justreview.co/docs/getting-started/stars-in-google-results/
Summary: Turn on structured data so Google can show a star rating next to your page, including how to do it without a visible badge.
Those stars under a search result are a rich result. They come from **structured data** in your page's
HTML, and JustReview can output it for you.
The setting is called **Generate Rich Snippet Data** and starts on **Pro**.
## How to switch it on
1. **Set your brand name** in [Settings](https://app.justreview.co/#/settings).
This is not optional. The structured data carries your brand name, and **without it nothing is
generated at all**. If stars never appear, check this first.

2. **Open the JustReview Badge widget** and enable **Generate Rich Snippet Data**.
The structured data is produced by the **Badge widget only**. No other widget emits it, so a page
carrying just Testimonials will not get stars.

3. **Generate the code again and replace the snippet on your site.**
4. **Check it with Google's tester.**
Paste your page address into the
[Rich Results Test](https://search.google.com/test/rich-results). It should report an
`AggregateRating` with your rating value and review count.
## Stars without a visible badge
A common and reasonable request: you want the rating in Google, but not the floating badge in the corner
of the page.
That works, and it is one line in the snippet. The visible badge and the structured data are two
independent switches.
```js
initBadge("YOUR_USER_ID", {
enableAggregateRatings: true, // structured data for Google
disableBadge: true, // do not render the visible badge
// ...the rest of your settings
});
```
There is no toggle for this in the dashboard yet, so the generated code will not contain it. Add
`disableBadge: true` yourself after pasting the snippet, and add it again whenever you regenerate the
code.
Do **not** hide the badge with CSS instead. `display: none` leaves the element on the page while making
it invisible, which is the situation Google's guidelines warn about. `disableBadge` never renders it at
all, which is the clean way.
## What the data contains
An `AggregateRating`: your average rating, the number of reviews, and a best rating of 5, attached to
your brand name. It reflects the sources selected in that Badge widget, so it matches what a visitor
sees.
## Google shows the stars when it decides to
Correct structured data makes you **eligible** for a rich result. It does not entitle you to one.
- **It takes time.** Google has to recrawl the page. Days to weeks is normal.
- **It can appear and then disappear.** Google decides per page and per query.
- **Some queries never show it**, whatever your markup says.
So: confirm with the Rich Results Test that the data is correct, then be patient. If the tester is happy,
your side of the job is done.
Google expects the rating to match what the page is about, so a business rating belongs on your home
page, an about page or a services landing page. Keep it off individual product pages, where it would
read as a rating of that one product. Place it where it fits and it simply works.
## This is a business rating, not a product rating
The data describes your **business**, because that is what the reviews are about. It cannot be attached
to individual catalogue items, see [reviews per product](/docs/account/reviews-per-product/).
## Stars are not showing
1. **Brand name empty** in Settings. Nothing is generated without it.
2. **Setting on but code not regenerated.** The snippet on your site still holds the old configuration.
3. **No Badge widget on the page.** Only Badge emits the data.
4. **Plan below Pro.** The data is not emitted even with the toggle on.
5. **Google has not recrawled yet.** If the Rich Results Test sees the rating, wait.
6. **Google chose not to show it.** Normal, varies by query, nothing to fix.
---
## Supported review sources
Source: https://justreview.co/docs/getting-started/supported-sources/
Summary: Every platform JustReview can collect reviews from, what each one needs from you, which plan it requires and how often it refreshes.
Around thirty sources, plus your own reviews collected through a form on your site and CSV import.
## How to read the table
The **"What you provide"** column matters: getting this wrong is the number one cause of
[the "No reviews or Api Code is Invalid" message](/docs/troubleshooting/no-reviews-or-api-code-is-invalid/).
## Free plan
| Source | What you provide |
|---|---|
| **Google** (Business Profile) | Sign in with Google, then pick your listing from a list |
| **Facebook** | Sign in with Facebook, then pick your page |

## Plus and above
| Source | What you provide |
|---|---|
| Amazon | Seller identifier |
| eBay | **Account name**, not a link |
| Allegro | **Account name** |
| Reviews.io | **Account name** |
| Booksy | **Link** to your profile |
| Yell | **Link** to your profile |
| Trusted Shops | **TS-ID** plus your Trusted Shops email and password |
## Ultimate
The full profile URL, copied from your browser's address bar:
Etsy, Yelp, Tripadvisor, Google Shopping, Booking.com, Airbnb, Walmart, AliExpress, Capterra, G2,
Sitejabber, Product Hunt, Google Play, Apple App Store, Yellow Pages, OpenTable, Angi, Thumbtack,
Zillow, Avvo, Martindale, Vitals, Zomato, RateMDs, Healthgrades, ZocDoc, WebMD.
## Not tied to any platform
| Source | Plan | What it is |
|---|---|---|
| **Your own review form** | Ultimate (Reviews Page widget) | Customers leave reviews directly on your site. See [collecting your own reviews](/docs/getting-started/collect-your-own-reviews/) |
| **CSV import** | Plus | Reviews you already hold. See [import from CSV](/docs/getting-started/import-reviews-from-csv/) |
## Good to know
Each source connects to one profile. Several locations of the same business are possible on Ultimate,
see [multiple locations](/docs/getting-started/multiple-locations/). Separate businesses need separate
JustReview accounts.
Fetching runs in the background. Small profiles are done in minutes, large ones can take hours. After
that, reviews refresh on a schedule rather than the moment someone posts.
Both are access **you grant**, and it lapses in normal use, for example when you change your password
or lose admin rights on the listing. When that happens imports go quiet without an obvious error, see
[reviews stopped updating](/docs/troubleshooting/reviews-stopped-updating/).
## Your platform is not on the list
Two things worth knowing:
- **Reviews with no platform behind them** can still get onto your site through CSV import or your own
review form. That covers plenty of local businesses whose customers do not use review portals at all.
- **Requests for new sources genuinely influence the roadmap.** Write to
[contact@justreview.co](mailto:contact@justreview.co) with the platform and a link to your profile
there.
Some platforms are deliberately **not** supported, because their terms forbid it or they asked us to
stop. We respect those requests, see [where our reviews come from](/docs/scraping-reviews-is-it-legal/).
---
## Turn individual reviews on and off
Source: https://justreview.co/docs/getting-started/turn-reviews-on-and-off/
Summary: Hide a single review from your widgets without touching the original on the source platform, and bring it back at any time.
Review Curation is available on **Ultimate**. On lower plans the switch is visible but locked.
Every review in [All reviews](https://app.justreview.co/#/reviews) has a switch. Off means it stops
appearing in your widgets. It stays in your account, and you can switch it back on at any time.

## What hiding does and does not do
**Does:** removes the review from every widget on your website, immediately.
**Does not:** change or delete anything on Google, Facebook or wherever it came from. The review is
still public there, and still counts towards your rating **on that platform**.
Visibility of a review belongs to the account owner. We do not touch it on your behalf, and neither
should anyone with access to your dashboard, without asking you first.
## Legitimate uses
**Spam and off-topic.** A review that is clearly not about your business, or is a competitor's
advertisement.
**Duplicates.** The same customer left the same review on two platforms and it shows twice.
**Reviews about something you no longer sell.** A two-star review of a discontinued product does not
inform anyone.
**Language mismatch you cannot solve otherwise.** Usually better handled by
[filtering by page language](/docs/how-to-use-the-filter-by-page-language-function/).
## Where to be careful
Hiding every negative review is tempting and counterproductive, for two reasons.
**It does not work commercially.** A wall of nothing but five stars reads as fake. A visible four-star
review with a real reservation builds more trust than a hundred perfect ones.
**It can put you on the wrong side of the rules.** In the EU, the
[Omnibus Directive](https://eur-lex.europa.eu/eli/dir/2019/2161/oj) requires that displayed reviews are
not selectively filtered to mislead consumers. Hiding spam is fine. Hiding criticism to inflate your
rating is the thing the rules are aimed at.
A better answer to a critical review is a reply. On Google you can respond, and the response shows
publicly next to the review.
## Removing a review for good
Hiding affects only your widgets. To have a review **removed** it has to happen on the platform where
it was posted, because that is where it lives. Google and Facebook both have reporting flows for
reviews that break their rules.
---
## Install the widget on GoDaddy
Source: https://justreview.co/docs/godaddy-code-embed-instruction/
Summary: Add your JustReview widget to a GoDaddy Website Builder site using Site-wide Code and an HTML element, step by step with screenshots.
This guide covers GoDaddy Website Builder (Website + Marketing) and uses the JustReview
Testimonials widget as the example. Every other widget works the same way.
1. **Build your widget and click "Generate Code for your website".**


2. **Open your GoDaddy dashboard: Website + Marketing → Website Builder → Manage.**

3. **Click Edit Site.**

4. **Open Site Settings.**

5. **Go to the Site-wide Code tab and paste part 1 and part 2 before the closing `` tag.**
Part 1 loads the library and belongs there **only once**, even with several widgets. Part 2 is
the configuration for one widget, so add one part 2 per widget.

6. **Back in Website Builder, add an HTML element where the widget should appear and paste part 3.**

7. **Publish the site.**

The widget only renders on domains listed in your
[Settings](https://app.justreview.co/#/settings), so the builder preview stays empty. Publish and
check the live site. Your website address must match the whitelist entry.

Widget settings live inside the snippet on your site. After changing anything in the dashboard,
generate the code again and replace part 2 in Site-wide Code.
## Widget still not visible?
1. **The site is published.** Builder previews do not count.
2. **Domain whitelist** in [Settings](https://app.justreview.co/#/settings) matches your address.
3. **Part 3 is present** on the page you are viewing.
4. The **Badge widget needs at least one review** before it shows anything.
---
## Link straight to the review form
Source: https://justreview.co/docs/how-to-scroll-to-and-open-comment-form-in-justreview-page/
Summary: Send visitors to your JustReview Page and have the review form scroll into view and open automatically, using a link with a hash.
Useful when you email customers asking for a review, or add a "Write a review" button somewhere on
your site. The link opens your reviews page, scrolls to the form and expands it, so the customer
does not have to hunt for it.
1. **Enable the option in the JustReview Page widget.**
It is the first option in the widget settings.

2. **Add `#leave-review` to the end of your page URL.**
```
https://yourwebsite.com/reviews#leave-review
```

3. **Regenerate the code and replace the snippet on your site.**
The option is stored inside the snippet, so the old code keeps the old behaviour.
This option is available on **Ultimate**. See [pricing](https://justreview.co/#pricelist).
## Nothing happens when I open the link
- **The option is switched off** in the widget, or the code on your site was not regenerated after
switching it on.
- **The URL is missing the `#leave-review` part**, or your CMS strips the fragment from links.
Check the address bar after clicking.
- **The page has no JustReview Page widget on it.** The link only works on the page where that
widget is embedded.
- **A sticky header covers the form.** The scroll lands correctly but the form sits under the
header. Add scroll padding in your own CSS:
```css
html { scroll-padding-top: 90px; }
```
---
## Filter reviews by page language
Source: https://justreview.co/docs/how-to-use-the-filter-by-page-language-function/
Summary: Show only reviews written in the language of the current page, with options to always include English or pin a specific language.
On a multilingual website, a German visitor seeing Polish reviews is noise. This option makes the
widget show only reviews matching the language of the page they are on.
## How the language is detected
The widget reads the `lang` attribute of the `` tag and displays only reviews in that
language.
```html
```
This means the filter is only as good as your markup. If every page declares `lang="en"`, every
page gets English reviews regardless of its actual content.

## The three settings
**Filter by page language** shows only reviews in the language taken from the ``
attribute.
**Include ENG** additionally shows English reviews next to the page language. Useful when your
local-language reviews are still few and you do not want a nearly empty widget.
**Choose lang ISO code** pins the language manually instead of reading it from the page. Use this
when your markup is unreliable, or on a single-language page that differs from the rest of the site.
The settings combine. Pinning `de` plus **Include ENG** shows German and English reviews together.

Available for **JustReview Testimonials** and **JustReview Page** on the **Pro** plan and above.
See [pricing](https://justreview.co/#pricelist).
Like every widget setting, this one is stored in the snippet on your site. Generate the code again
and replace it, otherwise nothing changes.
## The widget went empty after I enabled this
That usually means the filter is working correctly and you simply have no reviews in that language.
1. **Check what `` your page declares.** View source and look at the very first tag. A
page declaring `lang="en-GB"` is matched as English.
2. **Turn on Include ENG** so the widget falls back to English reviews.
3. **Check the language mix of your reviews** in [All reviews](https://app.justreview.co/#/reviews),
where you can filter by language.
4. **Consider pinning the language** with the ISO code if your CMS outputs the wrong `lang` value.
---
## Install the widget on any website
Source: https://justreview.co/docs/other-sites-universial-tutorial/
Summary: Add your JustReview widget to any website where you can edit the HTML source. Works with every platform and hand-coded sites.
This is the universal method. Use it on any site where you can edit the HTML source, or as a
reference when your platform is not listed in this help center.
If you use WordPress, Shopify, PrestaShop, Wix, Squarespace, GoDaddy or Shoper, follow the guide
for your platform instead. The steps are the same, but you get the exact screens to click.
1. **Build your widget in the dashboard.**
Open [app.justreview.co](https://app.justreview.co/#/widgets) and pick the widget you want.
Adjust the colours and layout in **Customize**, and choose which review sources to display
in **Services**.

2. **Check the live preview.**
Below the **Customize** and **Services** sections there is a **Live Preview** window that
reflects your changes in real time. Get it looking right here before you copy any code.

3. **Pick the review sources to display.**
In the **Services** section, select which connected sources should appear in this widget. A
source has to be connected first, see [Connectors](https://app.justreview.co/#/connectors/google).

4. **Click "Generate Code for your website".**

5. **Copy the three parts of the snippet.**
A dialog opens with up to three code blocks. Each has a copy icon in its top-right corner.

6. **Paste part 1 and part 2 before the closing `` tag.**
Part 1 loads the JustReview library. Part 2 is the configuration object holding the settings
you just chose. **Part 2 must sit directly below part 1**, otherwise the widget may not work.
```html
```
7. **Paste part 3 where the widget should appear.**
Part 3 is the container element. Put it exactly where you want the widget rendered on the page.
Some widgets, such as the Badge, attach themselves to the corner of the screen and have no
part 3 at all.
```html
```
The widget only renders on domains listed in your
[Settings](https://app.justreview.co/#/settings). If the list does not include your address, the
widget stays invisible. This is also why the widget does not appear inside your CMS admin preview,
only on the live website.
The settings are baked into the snippet on your site. Change anything in the dashboard, then
generate the code again and replace the old snippet, otherwise your website keeps showing the
previous configuration.
---
## Install the widget on PrestaShop
Source: https://justreview.co/docs/prestashop-code-embed-instruction/
Summary: Add your JustReview widget to a PrestaShop 1.7 theme by editing head.tpl, footer.tpl and your page template, step by step with screenshots.
This guide covers PrestaShop 1.7 and uses the JustReview Testimonials widget as the example. Every
other widget works the same way.
1. **Build your widget and click "Generate Code for your website".**


2. **Add the library to your theme templates.**
Both files live in your theme:
```
httpdocs/themes/{your_theme}/templates/_partials/head.tpl
httpdocs/themes/{your_theme}/templates/_partials/footer.tpl
```
Paste part 1 and part 2 at the end of these files. Part 1 loads the library and belongs there
**only once**, even when you display several widgets. Part 2 is the configuration for one widget,
so add one part 2 per widget.
`footer.tpl`:

`head.tpl`:

3. **Paste part 3 where the widget should appear.**
Put the container `
` into the template that renders that spot, for example `index.tpl` for
the home page or `product.tpl` for product pages.
```html
```
4. **Clear the PrestaShop cache.**
Go to **Advanced Parameters → Performance** and clear the cache, otherwise the shop keeps
serving the old compiled template and your change appears to do nothing.
Editing the parent theme directly means a theme update can overwrite your changes. If your theme
supports a child theme, put the edits there.
The widget only renders on domains listed in your
[Settings](https://app.justreview.co/#/settings), which is why it stays invisible in the back office
preview. Your shop address must match the whitelist entry.

Widget settings live inside the snippet on your shop. After changing anything in the dashboard,
generate the code again and replace part 2 in your templates.
## Widget still not visible?
1. **PrestaShop cache** cleared after the edit (**Advanced Parameters → Performance**).
2. **Domain whitelist** in [Settings](https://app.justreview.co/#/settings) matches your shop address.
3. **Part 3 is present** in the template that renders the page you are looking at.
4. **Smarty compilation** set to recompile while you test, so template edits take effect.
5. The **Badge widget needs at least one review** before it shows anything.
---
## Where our reviews come from
Source: https://justreview.co/docs/scraping-reviews-is-it-legal/
Summary: How JustReview obtains the reviews it displays, what stays under your control, and how a platform can ask us to stop.
Every review JustReview displays already exists somewhere public, written by your customer about
your business. We do not create reviews, we do not edit their content, and we never invent them. All
we do is bring them together in one widget on your own website.
## The four ways a review reaches your account
**1. Official platform APIs.** For Google and Facebook you connect your own business profile
through the platform's own sign-in screen. You grant access, the platform issues a token, and we
read only the reviews of the profiles you selected. You can revoke that access at any time in your
Google or Facebook account, and the connection stops working immediately.
**2. Licensed data providers.** Sources beyond Google and Facebook are delivered through a
third-party data provider we pay for. We do not operate our own crawlers against those platforms.
**3. Your own import.** With CSV import you upload reviews you already hold, for example from a
previous review tool or your shop software.
**4. Reviews collected by you, through us.** The JustReview Page widget includes a review form on
your website. Those reviews belong to you, are moderated by you, and are not published anywhere
outside your site.
## What stays under your control
- **Which sources are connected**, in [Connectors](https://app.justreview.co/#/connectors/google).
- **Which reviews are visible.** On the Ultimate plan you can switch individual reviews on and off
in [All reviews](https://app.justreview.co/#/reviews).
- **Which reviews appear in each widget**, chosen per widget in the **Services** section.
- **Removing everything.** Disconnect a source and its reviews stop being displayed. Delete your
account and the data goes with it.
Review text, rating, author name and date are shown as the source has them. Hiding a review removes
it from your widget, it does not alter or delete it on the original platform.
## Reviews and the law
We are not lawyers and this page is not legal advice. Two things are worth knowing.
**Review content is not ours, and it is not yours either.** It belongs to the person who wrote it.
That is precisely why we display reviews with author and rating attached, instead of rewriting them
into marketing copy. Presenting reviews truthfully, without selectively hiding negative ones to
mislead, is what consumer protection rules in the EU and elsewhere expect. The
[EU Omnibus Directive](https://eur-lex.europa.eu/eli/dir/2019/2161/oj) requires traders who display
reviews to say how they make sure those reviews come from real customers. If you show reviews on
your site, that obligation is yours, and the source labels in our widgets are there to help you
meet it.
**Displaying a review is not the same as owning the platform's data.** We show reviews for
businesses that ask us to, about themselves. We do not resell review databases and we do not
recreate another platform's directory.
## For review platforms
If you operate a review platform and want your service excluded from JustReview, or want to discuss
an official integration, write to [contact@justreview.co](mailto:contact@justreview.co). We act on
such requests: several sources have been removed from the product at the platform's request, and we
would rather have a working partnership than a dispute.
## For business owners
If a review about your business is false or breaks the rules of the platform it was posted on, the
removal has to happen **on that platform**, because that is where it lives. Hiding it in JustReview
only affects your own widget. Google and Facebook both have their own reporting flows for this.
---
## Install the widget on Shoper
Source: https://justreview.co/docs/shoper-code-embed-instruction/
Summary: Add your JustReview widget to a Shoper store using the custom JS field and template files, without editing the theme code by hand.
This guide uses the JustReview Testimonials widget as the example. Every other widget works the
same way. Shoper splits the snippet across two different places, so follow the order below.
1. **Build your widget and click "Generate Code for your website".**


2. **Add part 2 to the custom JavaScript field.**
Go to **Wygląd i Treści → Wygląd Sklepu → Obecny Szablon Graficzny**, open **Własny Skrypt JS**
and paste part 2 at the bottom of the file.
**Leave out the `` tags.** This field already is a JavaScript file, so
including the tags breaks it.

3. **Add part 1 to `footer.tpl`.**
Open **Edycja zaawansowana**, find `footer.tpl` and paste part 1. It loads the library and
belongs there **only once**, even when you display several widgets.

4. **Paste part 3 where the widget should appear.**
Still in **Edycja zaawansowana**, open the template that renders the target page, for example
`index.tpl`, and paste part 3 there.


The widget only renders on domains listed in your
[Settings](https://app.justreview.co/#/settings). Your shop address must match the whitelist entry.

Widget settings live inside the snippet on your shop. After changing anything in the dashboard,
generate the code again and replace part 2 in **Własny Skrypt JS**.
## Widget still not visible?
1. **Part 2 has no `
```
Where you call it depends on your platform:
**Infinite scroll or AJAX filters.** Most scripts fire an event or accept a callback when the new
batch is inserted. Call `refreshJustReview()` there.
**A generic fallback: watch the container.** When there is no event to hook into, observe the grid
and reinitialise when new nodes appear.
```html
```
**Single-page apps.** Call it after each route change, in the hook your framework gives you for
"navigation finished".
Part 1 of the snippet (the library) still belongs on the page exactly once. Only the init call is
repeated. Injecting the script tag again on every load can break rendering.
On aggressive infinite scroll the observer can fire many times per second. Debounce the call by
100-200 ms so you are not reinitialising on every inserted node.
## Widget worked and then stopped completely
That is a different problem. Check, in order:
1. **Your domain whitelist** in [Settings](https://app.justreview.co/#/settings) still matches your
address. A migration from `http` to `https`, or adding `www`, changes it.
2. **The container element is still on the page.** Theme updates and page-builder edits remove it
surprisingly often.
3. **A caching or optimisation plugin** started deferring, combining or minifying the script. Exclude
`justreview.js` from JavaScript optimisation.
4. **The snippet was regenerated in the dashboard but not replaced on your site**, so it still carries
old settings.
---
## Install the widget on Wix
Source: https://justreview.co/docs/wix-code-embed-instruction/
Summary: Add your JustReview widget to a Wix site using an HTML Box, including the iframe domain whitelist gotcha that silently breaks it.
This guide uses the JustReview Testimonials widget as the example. Every other widget works the
same way.
Wix is the one platform where the domain whitelist needs special attention, see the warning below.
1. **Build your widget and click "Generate Code for your website".**


2. **In the Wix Editor, add an HTML Box, then click Edit Code.**


3. **Paste all three parts of the code into the box.**
Wix is different here: everything goes into the same HTML Box, parts 1, 2 and 3 together.

4. **Publish the site.**
Wix puts custom code into an iframe served from its own domain, not yours. The whitelist check sees
that domain, so your normal address will not match. Two ways out:
- **Whitelist the Wix iframe host.** Take your Wix domain and replace every dot with a dash, then
add `.filesusr.com`. For `www.example.com` that gives:
```
www-example-com.filesusr.com
```
- **Or clear the domain whitelist field entirely**, which lets the widget run on any domain.
Nothing renders inside the Wix dashboard. Publish the site and check the live page.
Widget settings live inside the snippet in your HTML Box. After changing anything in the dashboard,
generate the code again and replace it.
## Widget still not visible?
1. **The iframe host is whitelisted** in the `filesusr.com` form above, or the whitelist is empty.
2. **The site is published.** Editor previews do not count.
3. **All three parts** are inside the same HTML Box.
4. **The HTML Box is tall enough.** Wix gives it a fixed height, so a taller widget gets clipped.
Drag the box bigger.
5. The **Badge widget needs at least one review** before it shows anything.
---
## Install the widget on WordPress
Source: https://justreview.co/docs/wordpress-code-embed-instruction/
Summary: Add your JustReview widget to WordPress using the theme editor, a post or page, Elementor or Divi Builder. All four ways, with screenshots.
This guide uses the JustReview Testimonials widget as the example. Every other widget works the
same way.
## Add the library to your theme
1. **Build your widget and click "Generate Code for your website".**


2. **Open the theme editor: Appearance → Theme File Editor.**

3. **Edit `footer.php` and paste part 1 and part 2 before the closing `` tag.**
Part 1 loads the library and belongs on the page **only once**, even when you display several
widgets. Part 2 is the configuration for one widget, so add one part 2 per widget.

Save with **Update File**.
Editing `footer.php` directly means a theme update can wipe your changes. Safer options: use a
[child theme](https://developer.wordpress.org/themes/advanced-topics/child-themes/), or a snippet
plugin such as WPCode that injects code before ``.
## Place the widget on the page
Part 3 of the snippet is the container that decides where the widget renders. Pick the method that
matches how you build pages.
Paste part 3 into the template file at the spot where the widget should show up.

Add a **Custom HTML** block (or switch the classic editor to the **Text** tab) and paste part 3
there.

Add an **HTML** widget to your layout, then paste part 3 into it.



Divi needs the three parts split across different places.
1. Add a **Code** module inside a new section and paste your container `
`.



2. Add the library files (part 1).

3. Add the JustReview configuration script (part 2).
Do not forget to save.
The widget only renders on domains listed in your
[Settings](https://app.justreview.co/#/settings), so the WordPress admin preview stays empty. Save
your changes and check the live site instead. Your website address must match the whitelist entry.


Widget settings live inside the snippet on your site. After changing anything in the dashboard,
generate the code again and replace part 2 on your website.
## Widget still not visible?
Work through these in order, they cover almost every case:
1. **Domain whitelist** in [Settings](https://app.justreview.co/#/settings) matches your address.
2. **Part 3 (the container `
`) is present** on the page. Without it there is nothing to fill.
3. **Caching plugin.** WP Rocket, LiteSpeed Cache and similar tools cache the old HTML and can
defer or combine JavaScript. Purge the cache, and exclude `justreview.js` from JS optimisation.
4. **Part 1 appears exactly once.** Loading the library twice can break rendering.
5. The **Badge widget needs at least one review** before it shows anything.
==============================================================================
# Articles
==============================================================================
---
## Best Google reviews widget in 2026: 7 tools, honestly compared
Source: https://justreview.co/blog/best-google-reviews-widgets-2026/
Summary: Seven review widgets compared on what decides the bill: metered page views. Free plan limits and entry prices, read from vendor pages in July 2026.
Every "best Google reviews widget" list on the internet is written by one of the vendors, including
this one. So here is the deal: everything below about another tool was read from that tool's own
public pages on 26 July 2026, the sources are linked, and where a vendor does not publish something
the table says so. Our own product is in the list and is not automatically the answer.
There is one thing that separates these tools, and it is not the design of the slider. It is
**whether the vendor counts your traffic**. Most of them do. That decides both your bill and whether
your reviews are visible on the day your best page goes viral.
## The short answer
If you do not want to read 1 500 words:
- **Reviews from more than one place, traffic that moves, or more than one website:** JustReview.
Unlimited views, unlimited widgets, unlimited domains on every plan including the free one, and
20+ sources including marketplaces. [Start free](https://app.justreview.co/#/register?utm_source=blog&utm_medium=organic&utm_campaign=best-widgets-verdict), no card.
- **Google only, forever, and free matters most:** Featurable. One widget, 15 reviews, no view meter.
- **One website, unlimited reviews, and you want the tool to collect them too:** Trustindex, 65 USD a year.
- **You need review replies and email invitations today:** EmbedSocial.
- **You want a social wall with reviews in it, not a review tool:** Elfsight or Tagembed.
Everything below is the evidence for those five lines, with the numbers and the sources.
## The free plans, side by side
Read on 26 July 2026 from each vendor's pricing page. Prices move, promotions run, check before you buy.
## What a "view" actually means
This is the part that catches people out, so here are the definitions in the vendors' own words.
**Elfsight**: "The number of views is the number of times a widget loads on a webpage or via a share
link. Exceeding this monthly limit will temporarily deactivate your app." On the free plan that is
200 loads. Not 200 visitors, 200 widget loads.
**EmbedSocial**: "A view is a page view. It is counted each time a visitor loads a page that contains
your widget." So if the widget sits in your footer, every page of your site burns the allowance.
**SociableKit**: "If you exceed your plan's allowance, the widget may stop displaying normally until
the limit resets or you upgrade."
Three vendors, one shape: your social proof disappears at the moment the most people are looking at
it. If you put a review widget in a global footer on a site with any real traffic, a metered plan is
a bill that grows with your success, and an outage risk when it does not.
If that is the part you wanted to avoid: JustReview has no view meter on any plan, the free one
included. [Put your reviews on your site free](https://app.justreview.co/#/register?utm_source=blog&utm_medium=organic&utm_campaign=best-widgets-meter),
no card, about three minutes.
## The seven, grouped by how they bill you
The whole thesis of this article is the view meter, so the list follows it: tools that do not count
your traffic first, tools that do second. Inside each group the order is by how many review sources
the tool actually supports.
### Not metered: your traffic never changes the bill
#### JustReview
The only tool here that never counts views, widgets, websites or domains **on any plan, including the
free one**. You are billed for one thing: how many reviews you store. The bill is the same whether the
page gets 100 visits a month or 100 000, which is why it sits in this group rather than the one below.
Twenty-plus sources, including the marketplaces and booking platforms the others mostly skip: Allegro,
eBay, Amazon, Etsy, Booksy, Booking.com and Airbnb, alongside Google and Facebook. The free plan stores
100 reviews from Google and Facebook, with no card and no trial clock. Paid starts at 9 EUR a month
with nine sources and white label.
This is our article, so the other half, plainly: we do **not** send review invitations and we have no
AI features. Replying to Google reviews works from the Replies tab, but you write the answer yourself
and other platforms are not covered. If any of that matters more than traffic-independent pricing, one
of the tools below does more, and the comparison pages say where.
[See the plans](/pricing) or
[start on the free one](https://app.justreview.co/#/register?utm_source=blog&utm_medium=organic&utm_campaign=best-widgets-section).
#### Featurable
The most honest free tier in the category: unlimited page views and full CSS control, free forever.
The catch is scope. Google only, no other source at all, 15 reviews per widget on free, and paid
plans are annual only at 29 USD a month equivalent. If Google is your only source and always will be,
this is a genuinely good free option.
Full breakdown: [JustReview vs Featurable](/vs/featurable).
#### Trustindex
Cheapest way to get unlimited reviews on one website: 65 USD a year, annual billing only, with
unlimited widgets and views. They also actually collect reviews for you, with email campaigns, QR
codes and physical NFC cards. Worth knowing that their invitation system routes 1 to 3 star ratings
to a private form and 4 to 5 star ratings to the public platform, which is a practice several review
platforms prohibit. Pricing is per domain: 1, 5 or unlimited.
Full breakdown: [JustReview vs Trustindex](/vs/trustindex).
### Metered: the vendor counts how often your widget loads
#### Elfsight
The biggest player, about 96 widget apps in one subscription, and their All-in-One Reviews app lists
60+ review sources, more than we support. Two things to know: the Google Reviews app takes a single
Google source (their help centre says so, and points you at a different app for more), and reviews
sync every 72 hours. If you want lots of widget types beyond reviews, they are the obvious pick.
Full breakdown: [JustReview vs Elfsight](/vs/elfsight).
#### EmbedSocial
The strongest review management of the group: you can reply to Google reviews from their console,
with an AI assistant, collect reviews by email, and repost reviews as Instagram or LinkedIn content.
The trade-offs are the page view meter (500 free, 5 000 on the 24 EUR plan) and connected sources
capped at 1, 3, 6 and 15. Their free Google widget shows the latest five reviews.
Full breakdown: [JustReview vs EmbedSocial](/vs/embedsocial).
#### SociableKit
The most granular pricing: 10 USD a month for one source with unlimited views and widgets, then 5 USD
for each extra source. Great for exactly one profile, expensive the moment you have a Google profile,
a Facebook page and two locations. Their free plan meters 2 000 views and needs a manual refresh.
Full breakdown: [JustReview vs SociableKit](/vs/sociablekit).
#### Tagembed
A social wall product that also does reviews: nine named review sources inside a mostly social
platform list. Views are metered hard (500 free, 10 000 on the 19 USD plan) and so are feeds (1, 2, 4,
10). AI moderation and summaries arrive on the higher plans. Pick it if you want one wall with
Instagram and reviews together.
Full breakdown: [JustReview vs Tagembed](/vs/tagembed).
## How to actually choose
Four questions, in this order.
**1. Where do your reviews live?** If the honest answer is "Google, and that is it", Featurable's free
plan or Elfsight's Google app will do. If your customers also review you on Facebook, a marketplace or
an industry platform, the shortlist collapses to the tools that support that specific source. Check
the source, not the marketing count: several vendors publish different platform totals on different
pages of their own site.
**2. Do you need the tool to collect reviews, or only to display them?** These are different products
sold under one name. Trustindex and EmbedSocial genuinely collect. Elfsight, Featurable, SociableKit,
Tagembed and JustReview mostly display. Buying a display tool and expecting invitation campaigns is the
most common disappointment in this category.
**3. How much traffic will see the widget?** If the widget goes in a global footer or on a busy
homepage, a metered plan will cost more than the sticker price suggests. Multiply your monthly page
views by the pages carrying the widget and compare against the plan cap before choosing.
**4. How many websites and locations?** Per-domain pricing (Trustindex) and per-source pricing
(SociableKit) are cheap for one profile and add up fast for agencies and multi-location businesses.
Per-review pricing does the opposite.
## What none of these tools can do
No widget puts star ratings in your Google search results just by being installed, and that is worth
saying plainly because several pricing pages sell "rich snippets included" as if it were a button. What
a widget actually does is output the `aggregateRating` markup that Google reads. Whether the stars then
show, and for how long, is Google's call, and that is true of every tool in this comparison. Judge tools
on whether the markup is correct and easy to switch on, not on who promises stars the loudest.
And none of them can show Trustpilot reviews through a third-party widget, whatever the platform count
on the pricing page suggests. That is a licensing decision on Trustpilot's side, not a technical gap.
## The short version, if you skipped to the end
Pick the tool whose meter you can live with. If your traffic is flat and small, most of this list will
do the job. If it is not, or your reviews live in more than one place, or you build sites for other
people, then the absence of a view meter is worth more than any single feature in the table above.
That is the whole reason JustReview is built the way it is, and you can check it without paying: the
free plan stores 100 reviews from Google and Facebook, with no view limit, no domain limit and no card.
The [Google reviews widget page](/embed-google-reviews-widget-on-website) shows what it looks like on a
real site, and the [pricing page](/pricing) shows exactly where it stops being free.
Whichever tool you land on, it can only display what you have already collected. If your Google
count is the real bottleneck, start with a
[Google review link and QR code generator](/tools/google-review-link-generator) instead of another
widget comparison. It is free and needs no account.
If something here is out of date or wrong, write to contact@justreview.co and we will correct the page.
Being correctable is the point of writing a comparison this way.
---
## Can you use Amazon reviews on your own website?
Source: https://justreview.co/blog/can-i-use-amazon-reviews-on-my-website/
Summary: Half of them, and our import log shows which half. 337,483 Amazon product reviews stopped arriving on 1 November 2024. Seller feedback still syncs today.
Half of them. "Amazon reviews" is two different things wearing one name, and only one of the two is
still available to anybody, us included. Seller feedback, the star ratings and one-line comments
buyers leave about your shop, is published on your own seller profile, is a statement about your
business, and still arrives in our importer today. Product reviews, the long ones written about an
item, went behind a login in late 2024 and stopped being collectable by any tool at all.
We can put a date on the second half rather than an anecdote, because we were importing those
reviews when it happened. This post is what 378,126 Amazon reviews across 113 businesses look like
from inside our production database, counted on 16 August 2026. It is not legal advice and we are
not lawyers. It is the part of the answer that most articles on this topic skip, which is what is
still technically possible before anyone argues about what is permitted.
## Two things share the name
**Seller feedback** is left after a transaction, on the seller profile at `/sp?seller=...`. It
describes you: whether the item arrived, whether it matched the listing, whether you handled a
problem. It is public, it names its author, it carries a date and a rating, and it is the only
Amazon record that is genuinely about your business.
**Product reviews** are left about an item, on the product page that every merchant selling that
ASIN shares. If three sellers offer the same item, the reviews under it belong to the item, not to
any of them. That distinction matters before the legal question even starts: republishing a review
of a product as though it were praise for your shop is a misrepresentation regardless of who owns
the copyright in the words.
In both cases the person who typed the review owns the text. What differs is whose reputation it
describes, and whether the page it sits on can still be read.
## The half that stopped, with the date attached
Our database holds 337,483 Amazon product reviews for 89 businesses, across eleven marketplaces. The
oldest was written on 1 December 2003. A handful carry a date of 1 January 1970, which is what a
missing date looks like after it passes through a date parser, and we leave them visible rather than
quietly repair them.
Here is every marketplace we ever imported product reviews from, sorted by how much is frozen:
| Marketplace | Product reviews stored | Accounts | Newest review written | Last successful import |
|---|---|---|---|---|
| amazon.com | 111,645 | 43 | 13 Aug 2024 | 26 Aug 2024 |
| amazon.co.uk | 61,401 | 31 | 29 Oct 2024 | 1 Nov 2024 |
| amazon.de | 51,268 | 26 | 28 Oct 2024 | 1 Nov 2024 |
| amazon.it | 43,069 | 12 | 28 Oct 2024 | 1 Nov 2024 |
| amazon.es | 24,435 | 10 | 26 Oct 2024 | 29 Oct 2024 |
| amazon.fr | 24,064 | 12 | 29 Oct 2024 | 1 Nov 2024 |
| amazon.in | 19,312 | 1 | 15 Nov 2022 | 19 Nov 2022 |
| amazon.ca | 1,557 | 4 | 9 Apr 2024 | 16 Apr 2024 |
| amazon.com.mx, .ae, .co.jp | 732 | 3 | 26 Oct 2024 | 1 Nov 2024 |
Six marketplaces stop on the same day. That is not six connectors failing, it is one door closing.
The monthly import curve says the same thing in a way that rules out a slow decay, and this is the
part we had not looked at until we wrote this post:
A source that is getting harder to read tapers. This one produced 105 rows in its final month and
then nothing at all, for 653 consecutive days up to the morning we published this. The largest
single archive in the set belongs to one merchant holding 65,251 Amazon product reviews whose most
recent entry was written in February 2024. They own an enormous, permanently sealed museum.
Those rows are still displayable: 337,350 of the 337,483 are marked visible, so real websites are
showing them right now. We are not deleting them, because they were collected while the pages were
public and each one still carries its author, rating and date. We are also not pretending they are a
live feed, which is the honest reading of a wall of reviews where the newest one is two years old.
## The half that still arrives
Seller feedback is a different story on every axis. 40,643 reviews for 70 businesses, and the
importer ran this morning:
In the last 30 days that channel delivered 3,096 new reviews to 23 accounts. It is smaller than the
frozen archive by a factor of 8.3, and it is the only half that grows.
## Where the legal question actually lands
Three separate layers hide inside "can you use these", and they fail in a fixed order. We wrote the
long version of this for [Google reviews](/blog/is-it-legal-to-embed-google-reviews/); Amazon differs
only in which layer bites first.
**Access.** Can the data be obtained without breaking the terms of the site it lives on? For seller
feedback, yes: it is a public profile page, and it is your profile. For product reviews since
November 2024, no, and that answer arrives before copyright gets a turn. Content you cannot read
without signing in cannot be collected at scale without doing something the login was placed there
to prevent. Amazon's own affiliate API does not return review text either, so there is no sanctioned
route left that a widget could use.
**Attribution.** The buyer owns their words. Display them unedited with the author name, the rating,
the date and a path back to the source, and you are quoting. Remove any of those four and you have
converted someone else's statement into your own copy.
**Presentation.** This is consumer protection law rather than copyright, and it catches careful
people, because every individual element can be true while the display as a whole is a false claim.
Showing only the five-star feedback is the standard example. Showing a product review as if it were
a review of your shop is the Amazon-specific one.
The practical rule that falls out: your exposure tracks how you got the reviews far more than which
platform they came from. We keep a plain-language page on
[which sources arrive through owner-authorised access](/docs/scraping-reviews-is-it-legal/),
including how a platform can ask us to stop, because we have been asked before and we complied.
## What the numbers mean for the page you are building
The two halves also read differently, and this changes where you put them. Average length of a
stored Amazon product review is 209 characters. Average length of seller feedback is 61 characters,
roughly a sentence: "Fast delivery, well packed, exactly as described." Average rating runs 4.54 for
seller feedback against 4.28 for product reviews, so the live half is both shorter and warmer.
Design for what you actually have. Sixty-one characters will not fill a testimonial card built for a
paragraph, and forty of them stacked in a column looks like a receipt. Seller feedback earns its
keep as volume and as a rating summary near the price or the checkout button, where the question in
the buyer's head is "does this shop ship properly", which is precisely what that feedback answers.
Save the long-form cards for sources that produce long text, then run both from one widget, which is
the setup covered in
[putting marketplace reviews on your website](/blog/marketplace-reviews-on-your-website/).
One more number worth acting on. Of the 89 accounts holding an Amazon product archive, only 46 also
have live seller feedback connected. The other 43 have Amazon proof that has not moved since 2024
and no second Amazon source at all. If that is you, connecting the seller profile costs one step and
turns a museum back into a feed.
## How we handle it
Connect your Amazon seller profile and the feedback syncs on its own schedule, with the buyer name,
rating, date and source link kept together on every card, because there is no field for editing the
text. You can hide an individual review, which exists for feedback that is genuinely about a courier
rather than your shop, and not as a rating filter. Marketplace sources sit on the paid plans rather
than the free tier, and the [pricing page](/pricing) has the detail; the trial is long enough to see
your real import before you decide.
Two caveats we would rather state than have you discover. If your Amazon product archive predates
November 2024, we will keep showing it and we will not refresh it, because nobody can. And this post
describes our data and our product; if you sell in a regulated category, ask someone qualified
before you publish claims built on reviews.
## The short version
You can use Amazon seller feedback on your own website, it is about your business, it is public, and
it still updates every day. You cannot build a live feed of Amazon product reviews, and our import
log puts the end of that road on 1 November 2024, 653 days ago. Any tool telling you otherwise is
selling an archive with a fresh label on it.
To move the half that still works,
[create an account](https://app.justreview.co/#/register?utm_source=blog&utm_medium=organic&utm_campaign=can-i-use-amazon-reviews-on-my-website),
connect your seller profile and put an
[Amazon reviews widget](/embed-amazon-reviews-widget-on-website) on the page where people decide.
---
## Google reviews HTML embed: what the snippet really does
Source: https://justreview.co/blog/embed-google-reviews-html-no-plugin/
Summary: There is no Google reviews HTML code to paste and no iframe that works. Here is the measured cost of the snippet that does work, request by request.
There is no Google reviews HTML code. Google does not publish a snippet you can paste on your own
domain, and the iframe trick that half the internet suggests is blocked by a header on Google's side,
which we reproduced three times in a browser this morning. What does work in plain HTML is four
lines: a stylesheet link, a script tag, one init call and an empty div, served by something that has
already collected your reviews. This post measures exactly what those four lines cost, request by
request, on a page with no CMS behind it.
We built that page by hand on 11 August 2026, loaded it in headless Chromium at 1280 pixels wide,
and recorded every byte on the wire with the browser's own network instrumentation. Then we tried
the iframe routes, and let the browser tell us why they fail.
## The iframe route is closed, and the browser says so out loud
The most common suggestion for "google review iframe" is to point an iframe at a Google URL and let
Google draw your reviews. We tried the three URLs people actually use. All three were refused before
a single pixel was drawn.
The console message is identical in each case: refused to display in a frame because it set
`X-Frame-Options` to `sameorigin`. Each frame kept its 644 by 404 pixel box on the page and stayed
empty. We confirmed the same header outside the browser with a plain request to each address, so it
is not a headless quirk, a cookie banner or a region thing. It is a response header, which means no
attribute you add to your iframe can override it. The frame is refused by the browser, not by your
code.
There is exactly one Google surface that permits framing, the Maps embed, and it is worth knowing
what you get if you reach for it as a substitute. We loaded a hand written page whose only content
was `maps.google.com/maps?q=…&output=embed`, and let it settle.
| Page under test | Requests | Bytes over the wire | Reviews shown |
|---|---|---|---|
| Google Maps embed iframe | 70 | 769,951 | 0 |
| Our reviews snippet, 20 reviews rendered | 9 | 227,603 | 20 |
Seventy requests, of which four map scripts alone are 91,209, 85,126, 75,465 and 71,780 bytes, plus a
static map image at 59,775 bytes and three Google font files. Three and a third times the transfer of
the whole page we are about to break down, to show a map. Not one review. If your goal is a review as
a piece of readable text on your page, and something a language model can quote back, the map embed
does not do that job at any price.
## What the plain HTML embed actually costs
Here is the page we measured. Nothing but a heading, a sentence, and the snippet, served over HTTPS
so the widget behaves exactly as it does on a customer domain.
```html
What our customers say
A hand written page. No CMS, no plugin, no build step.
```
Nine requests, 227,603 bytes over the wire in total. The full waterfall, timed from the moment
navigation started:
| Request | Bytes on the wire | Uncompressed | Started | Finished |
|---|---|---|---|---|
| The HTML document itself | 1,913 | 1,913 | 0 ms | 5.5 ms |
| `justreview.js` | 129,010 | 488,265 | 16.1 ms | 119.7 ms |
| `justreview.css` | 15,579 | 109,861 | 17.4 ms | 120.3 ms |
| API call, all reviews for this account | 4,595 | 12,448 | 139.9 ms | 185.8 ms |
| 4 × Nunito `woff2` | 76,506 | 76,506 | 206.9 ms | 298.2 ms |
Read that table twice, because the shape of it is the whole argument. The document you wrote is
1,913 bytes. The library is 67 times bigger than your page, and the four font files the stylesheet
pulls in are 76,506 bytes, a third of the total transfer, fetched only once the review text is on its
way in. There is exactly one call to our API for the whole widget, it returns 12,448 characters of
JSON containing 20 reviews, and it finishes 185.8 ms after navigation started.
The rendering timeline is short. The init call runs at 138.5 ms, the first node lands inside the
container at 202.9 ms, and the container has height, meaning visible reviews, at 218.8 ms. On a
second load in the same browser session the first pixels arrived at 109.8 ms. What ends up in that
div is not decoration: 4,841 pixels tall, 20 review cards, 1,455 words of customer text, 299,533
characters of HTML that were not in your file.
That last number is the real trade. A hand coded page stays a hand coded page, 1,913 bytes of
markup you can read in one screen, and the review content arrives at runtime from somewhere that
keeps it fresh. Nothing to update when a review changes, no build step, no database.
## One library, one call per widget
The second question people hit on a hand built site is what happens with more than one widget, since
there is no plugin to manage it. We put a carousel and a full reviews list on the same page and
measured again.
The library and stylesheet are fetched once, no matter how many widgets you initialise. Each init
gets its own API call, and the second widget cost 7,495 bytes in total. So the honest rule for a
static site is: paste part one exactly once per page, repeat only the init call and the container.
Two copies of the script on one page is the failure mode to avoid, and it is the one our own
documentation warns about.
## The two ways this quietly does nothing
Both of these produce the same symptom, an empty page and a clean looking console, and we walked
into the first one ourselves while setting up this very measurement.
**The container id does not match the init call.** Our first run had a div called
`justreview-reviews-page` while the function looks for `justreview-page`. Result: the library
downloaded, the stylesheet downloaded, the API answered with all 20 reviews, 150,715 bytes crossed
the wire, and the page rendered zero pixels. No error, because from the library's point of view
nothing went wrong, it simply had nowhere to draw. Every platform post we have written this month
found live sites in exactly that state, so check the id character by character before you suspect
anything else.
**The script never runs at all.** On a hand written page this is usually a copy that lost part two,
or an init call sitting above the library, or a script that a build tool moved. The tell is the
network panel: if `justreview.js` is there and the API call is not, your init never executed. If both
are there and the page is empty, you are in the first case.
Neither of these is specific to hand written HTML, which is why the same three parts appear in our
[universal install guide](/docs/other-sites-universial-tutorial/) and in the platform guides. On a
CMS the parts hide in a plugin screen or a theme file, as we found when we traced
[the same snippet through WordPress](/blog/google-reviews-widget-wordpress/). On a static page they
are all visible in one file, which makes debugging faster than anywhere else.
## Why run our snippet on a hand coded page
The reason to use JustReview here is that everything in this post was measurable from outside the
product. Nine requests, one API call, one container, no server side code, nothing that runs on your
host and nothing to keep updated. That is the whole install:
[embedding reviews on your own site](/embed-google-reviews-widget-on-website) is the same four lines
whether the page is a static file, a landing page or the last thing left of an old site, and it puts
Google, Facebook and marketplace reviews in one list, which no Google surface will do for you at all.
Because the reviews render as real text in the DOM, they are readable by anything that reads your
page, which is not true of anything you could have framed.
Two caveats, and the second one is about our own pricing. The transfer is real: 227 KB with fonts,
so put the list where it earns that, one section of its own rather than three copies across a page,
and keep the badge for pages that just need a signal. And the full reviews list we measured here is
a Pro feature. The free plan gives you the floating badge with 100 stored reviews from Google and
Facebook and no card, the carousel starts on Plus at 9 € a month, and the list plus the review form
sit on Pro. The split is on our [pricing page](/pricing).
If your site is hand written HTML, the cheapest first test is to
[create an account](https://app.justreview.co/#/register?utm_source=blog&utm_medium=organic&utm_campaign=embed-google-reviews-html-no-plugin),
connect Google, and paste the badge into your page before anything else. The badge needs no container
div, so it cannot fail the way the id mismatch above fails, and it tells you in one page load whether
your domain and your snippet are in order. Add the list once you know the plumbing works. It is
running further down this page, drawn by the same four lines.
---
## How to search Google reviews by name or keyword
Source: https://justreview.co/blog/google-reviews-search-by-name/
Summary: Google Maps has a review search box. Here is how to use it, and the 32.4% of Google reviews it structurally cannot return, measured on 383,733 of them.
Yes, Google lets you search reviews by keyword, and the box is easier to find than most people
expect: open the business in Google Maps, go to the Reviews tab, and click the magnifying glass.
Type "delivery" and the list narrows to public reviews on that profile whose text contains the word,
with keyword chips underneath for terms that come up often. What no guide mentions is how much of a
review history that box structurally cannot reach. We measured ours on 13 August 2026: across
383,733 Google reviews stored for 2,897 businesses, 124,204 of them carry no text at all.
## Using the box Google gives you
On desktop, search the business in Maps, open its profile, scroll to the reviews section and look for
the search field with a magnifying glass above the list. On mobile it is the magnifying glass in the
top-right corner of the Reviews tab. Type a term, press enter, and the feed filters in real time.
Below the field Google shows chips such as "parking", "staff" or "price", built automatically from
the words that recur most across that profile's reviews. Those chips are the fastest way in when you
do not yet know what you are looking for.
Three limits are worth knowing before you rely on it. It searches one profile at a time, so
comparing what customers say about two locations means two separate searches. It searches public
reviews only, which is fine for research but means you are reading your business the way a stranger
does. And it matches text, which sounds obvious until you see how many reviews have none.
## The share that no search can return
A review with a star rating and an empty comment field is invisible to every keyword search ever
written, including Google's. It is not a bug in the tool. There is simply nothing to match.
We ran the count across every Google review in our production database on 13 August 2026. The result
is the number we have not seen anyone else publish:
Nearly a third of the whole set is unsearchable. But the interesting part is the order of that
table, which is why it is sorted by silence rather than by rating. The blind spot is not spread
evenly. It sits precisely in the middle of the scale, where more than half of three-star and
four-star reviews arrive with no explanation attached.
That is the opposite of what most owners assume. One-star reviewers are the most likely group to
write something: only 20.4% of them leave the box empty, because a person angry enough to rate you
one star is usually angry enough to say why. The lukewarm customer, the one who thought it was fine
but not great, taps four stars and closes the app. So the feedback you would most want to read - the
near-miss, the thing that stopped it being a five - is the feedback least likely to exist as text.
Keyword search cannot help you there, and no tool can fix it after the fact. The only fix is
upstream, at the moment you ask for the review.
## Even the reviews that do have text are short
Of the 259,529 Google reviews in our data that do carry a comment, the average length is 199
characters, roughly two sentences. And 64,038 of them, 24.7%, are under 60 characters: "Great
service", "Fast delivery", "Polecam". A keyword search will happily match those, and then you have
matched a phrase rather than a reason. Between the silent third and the one-line quarter, well under
half of a typical Google review history contains enough text to be worth searching in the first
place.
## Searching by name is the weakest of the three
"Find review by name" is a common query, and it usually goes badly. Google shows whatever display
name sits on the reviewer's account, which is frequently a first name alone, an initial, or a
placeholder. In our 383,733 Google reviews, the single most frequent author string is the literal
placeholder "A Google User", 180 times. After it come plain first names: Daniel 46 times, Adam 45,
Michael 44, Alex 38, Anna 35. On a profile of any size, a name search hands you a set of candidates
rather than the review you meant.
Two narrower handles work better. Filter by star rating first, since you almost always remember
whether the review was good or bad. Then narrow by date, because you usually remember roughly when
it landed. Rating plus a month beats a name on any busy profile.
## How big is the haystack you are searching
Scrolling is a fine strategy for a profile with forty reviews and a hopeless one above a few
hundred. Here is how the 383,733 reviews distribute across the 2,897 accounts that hold them:
| Google reviews on the account | Accounts | Reviews held |
|---|---|---|
| 1,000 or more | 47 | 145,566 |
| 200 to 999 | 271 | 118,921 |
| 50 to 199 | 943 | 90,689 |
| 10 to 49 | 1,030 | 25,645 |
| Under 10 | 606 | 2,912 |
Forty-seven accounts, 1.6% of the total, hold 38% of all the Google reviews we store. The largest
single one holds 29,145 - and 14,652 of those, 50.3%, have no text. For that business, half the
archive is permanently outside the reach of any keyword search, and the other half is too large to
read.
## Google's search stops where Google stops
The other boundary is the platform itself. 805 of the accounts that hold Google reviews also hold
reviews from somewhere else, and for that group Google is the minority source: 137,042 reviews on
Google against 352,652 from marketplaces, booking sites and industry directories. Searching Maps
tells you what people said in one of the places they said it, and for those businesses it is not
even the biggest place. If you are still on a single source, the
[reviews you already have scattered elsewhere](/blog/how-to-get-reviews-on-your-website/) are worth
finding before you optimise how you search one of them.
## Searching your own archive instead
This is the case for pulling reviews into one place you control. In JustReview, All Reviews is a
single searchable table of everything we have imported for the account, and the search field matches
across the author, the review text and the source name at once, so one query covers Google,
Facebook, a marketplace and a booking site together rather than one profile at a time.
Around it sit the filters that do the work a text search cannot. Source, language, star rating, date
range or a custom period, visibility, and a "With text only" checkbox that strips out the silent
third in one click so you are searching what is actually searchable. A separate toggle shows reviews
collected above your plan limit, which are stored but not displayed. Everything you find stays
linked to its original review, so a match is one click from the source, and the same table is where
you decide what appears in a
[Google reviews widget](/embed-google-reviews-widget-on-website) on your site. The
[language filter](/docs/how-to-use-the-filter-by-page-language-function/) carries through to what
visitors see, so a German page can show German reviews.
Two honest limits. The search is a substring match across the loaded set, not a semantic engine, so
it finds "deliver" inside "delivery" but will not group "shipping" with it - use a shorter stem when
a search comes back thin. And it can only search what has been imported, which for most sources
means from the day you connected them onward; if you need the reasoning behind that,
[how far back review history goes](/blog/how-to-see-my-google-reviews/) covers which platforms hand
over everything and which hand over a window.
## The short version
Google's own review search works, it is on the Maps profile behind the magnifying glass, and it is
the right tool for reading one profile from the outside. It is the wrong tool for auditing your own
feedback, because 32.4% of Google reviews have no text for it to match, that share climbs above half
at three and four stars, and it never leaves Google.
Pulling everything into one table fixes all three at once. The free plan carries up to 100 reviews
with no card, which is enough to see whether the search and the filters do what you need -
[create an account](https://app.justreview.co/#/register?utm_source=blog&utm_medium=organic&utm_campaign=google-reviews-search-by-name)
and connect a source, and the rest is on the [pricing page](/pricing).
---
## Elementor Google reviews widget: what a hidden tab does to it
Source: https://justreview.co/blog/google-reviews-widget-elementor/
Summary: Three ways to add Google reviews to an Elementor page, and why the widget often renders in the editor but stays blank on the live site.
Elementor accepts a review snippet in its HTML widget, and that part is uneventful. The catch is
where the snippet lands. Drop it into a Tabs widget, a Toggle, an Accordion or a Popup Builder
template, and the markup sits in a panel that is closed while your scripts execute. A reviews
slider born in a closed panel comes out wrong in a specific, repeatable way: one review stretched
across the entire block instead of four beside each other, and it stays like that for the whole
visit.
Nothing here is an Elementor defect, and it is not exclusive to us either. It is simply what any
component that must know its own width does when it is started before it has one. What follows is
the arithmetic, the cause, and a four-line rewrite of your init call that removes the problem.
## Two ways into an Elementor page
| | HTML widget (paste the snippet) | Paid reviews addon |
|---|---|---|
| Where the reviews live | your own review account | the addon vendor's service |
| What happens when you stop paying the addon | nothing, it is your code | the widget goes away |
| Elementor version coupling | none, it is plain HTML | tied to the addon's updates |
| Sources you can mix | every source you have connected | the ones that addon supports |
| Layout control | the widget's own settings | the addon's controls, inside Elementor |
| Effort | paste once | install, then configure |
| Hidden containers | your problem, see below | also your problem, quietly |
An addon feels easier during the first afternoon and turns awkward the day its author walks away
from it, which for review addons happens often. Pasting a snippet asks for one piece of knowledge
instead, and that knowledge is rarely written down anywhere, so here it is.
## What a closed panel does to a reviews slider
These runs are from 2 August 2026: a scripted Chrome instance, the Testimonials snippet exactly as
the JustReview panel writes it, dropped into a 1140 px column area on a 1280 px screen. Identical
markup in every run. The single variable is whether the panel holding that markup was open at the
moment the init call executed.
| Scenario | Slider width it measured | Card width | Cards in view |
|---|---|---|---|
| Container visible at init (ordinary section) | 1060 px | 265 px | 4 |
| Container `display: none` at init | 0 px | 0 px | 0 |
| Same, 2 seconds after the tab is opened | still 0 px | 1060 px | 1 |
| Same, 8 seconds after the tab is opened | still 0 px | 1060 px | 1 |
| Fixed with a resize event after the reveal | 1060 px | 265 px | 4 |
| Init deferred until the reveal | 1060 px | 265 px | 4 |
Two rows of that table deserve more attention than the rest.
**The failure does not look like a failure.** The block is still 857 px tall, the reviews are all
there, the arrows work. It simply shows one review at a time where it should show four, so the page
reads as if somebody chose that. This is why the problem survives launches: nobody files a bug about
a section that renders, they just quietly live with a weaker one.
**Waiting changes nothing.** Eight seconds after the panel opened, the slider still believed it was
zero pixels wide. Opening a panel is not an event any slider listens to, and ours does not sit there
re-measuring on a timer, so the wrong numbers stay wrong until something forces a fresh calculation.
## Why it happens, in one paragraph
A slider has to know how wide it is before it can decide how wide a card should be. It asks the
browser once, when it starts. An element inside `display: none` has no box at all, so the honest
answer is zero, and every card gets sized from that zero. When the tab opens, the cards have no
width assigned, so CSS falls back to the full width of the block, which is where the 1060 px
number comes from. Opening a tab is not a window resize, so nothing triggers a second measurement.
This is not specific to our widget. Any slider-based reviews widget, on any platform, behaves the
same way in a hidden container, which is why "my slider is broken inside tabs" is one of the oldest
questions on the Elementor forums.
## Three fixes, in the order we would try them
**1. Do not start the widget until the container is visible.** This is the version we would ship.
It costs nothing on a normal page, and on a page where the tab is never opened it saves the API
call entirely, because the widget never runs.
```html
```
Measured with the container hidden at load: nothing renders and no request goes out while it is
hidden, and four seconds after the reveal the slider is at 1060 px with 265 px cards, exactly like
an ordinary section. On a container that was visible all along it behaves like a plain init call,
one API request and the same layout.
**2. Force a recalculation after the reveal.** If you would rather not touch the init call, add one
line to whatever opens the panel:
```html
```
Measured: 1060 px and 265 px cards, same as a healthy widget. It is a blunt instrument, because
every other script on the page that listens for resize will also run, but on a page whose only
sensitive component is the slider it is a two second fix.
**3. Update the slider instance directly**, if you want to touch nothing else on the page:
```html
```
We confirmed the instance is reachable that way and that a single `update()` call restores the
1060 px measurement and the 265 px cards. Fix 1 is still the one to prefer, because it is the only
one that never produces a broken frame in the first place.
## Popups, and anything that arrives after the page
An Elementor popup is a harsher case than a tab, because the container may not be in the page at
all when your code runs. We tested that order deliberately: init first, container inserted two
seconds later. The result is worth knowing, because it is invisible.
The widget fetched the reviews from the API, got them, found no container to fill, and rendered
nothing. No error, no warning, not a word in the browser console. From the outside it looks like
the script failed to load, which sends people to debug the wrong thing.
The rule that follows is simple: **the container must exist before the init call runs**, and the
init call belongs in whatever code runs after the popup content is in the page. One more trap in
the same family: if a section injects the whole snippet as a chunk of HTML at runtime, the
`
```
Measured: both copies render, 20 cards each, two API calls. The dot matters. Passing the class name
without it targets nothing and you are back to an empty div and a silent console.
## Doing it, in the order you will actually do it
1. Connect a review source in your dashboard and build the widget there, then generate the code.
You get three parts: the library, the settings block, and the container div.
2. Put the library once per page. A site-wide code area is the cleanest place for it. Everything
else can live in the Elementor HTML widget.
3. Drop an HTML widget where the reviews belong and paste the container plus the settings block.
4. If that HTML widget sits in a tab, an accordion, a popup or any panel that starts closed, use
fix 1 above instead of the plain init call.
5. Preview on the live page, not in the editor. The editor runs its own scripts and is not a fair
test of a third-party widget.
6. Check the mobile breakpoint separately, especially the column width.
The click-by-click version for WordPress, which is where Elementor lives, is in
[our WordPress install guide](/docs/wordpress-code-embed-instruction/), and the wider question of
plugin versus snippet is measured in
[how to add a Google reviews widget to WordPress](/blog/google-reviews-widget-wordpress/).
## Why we would paste our own widget into that HTML block
Because nothing about it meters your traffic. Several widget tools count monthly widget views and
switch the widget off when you pass the limit, which on an Elementor site with reviews in a global
footer means the meter runs on every page view you have. We never count views, on any plan,
including the free one, and the [pricing page](/pricing) says it in the same words. We compared the
main tools on that point in
[the best Google reviews widget in 2026](/blog/best-google-reviews-widgets-2026/).
The rest is what the measurements above show: one library, one settings block, six widget shapes
reading from the same connected sources, and behaviour we can put numbers on when a page does
something awkward. You can
[create an account and generate the snippet](https://app.justreview.co/#/register) in less time
than it takes to compare two Elementor addons in the plugin directory.
Two honest caveats. The hidden-container behaviour is ours as much as anyone's: our widget does not
detect the reveal by itself, which is why fix 1 exists and why it is four lines of your code rather
than zero. And the visible-slides setting reads the window, not the column, so a narrow column needs
a deliberate setting instead of a sensible default.
If you want reviews on an Elementor page today: connect a source, generate the Testimonials
snippet, drop it into an HTML widget at full section width, and use the deferred init if it lands
anywhere that starts hidden. That is the whole job, and the 265 px number is how you check you got
it right.
---
## Google reviews on GoDaddy: the HTML section, measured
Source: https://justreview.co/blog/google-reviews-widget-godaddy/
Summary: GoDaddy runs your HTML section inside a sandboxed iframe. We measured what that does: a list widget grows to 827px, a floating badge gets stuck at 150px.
To put Google reviews on a GoDaddy Website Builder site you add a section of custom code, usually
listed as HTML in the section picker, and paste three things into it: a stylesheet link, the widget
script, and one init call with your account key. No app, no plugin, no theme file. The part no
tutorial mentions is that GoDaddy does not paste your code into the page. It wraps it in a sandboxed
iframe with its own document and then guesses how tall that document is, and that guess is what
decides whether your widget looks right or ends up in a 150 pixel box.
We took the measurements below on 6 August 2026, on a live GoDaddy site running our widget and on a
copy of GoDaddy's own section markup, so the numbers are from the builder as it ships today.
## What GoDaddy actually does with the code you paste
Here is the wrapper GoDaddy generates around a custom code section, taken from the page source of a
live site:
```html
```
Three things in that markup matter more than they look.
Your code lives in a separate document. The `srcdoc` attribute means the section has its own
``, its own `
` and its own viewport. Anything your widget measures against the window is
measuring the section, not the page.
GoDaddy sizes the section by asking. It injects a `postMessage` listener above your code, the parent
page asks for a height, and the answer is `document.body.getBoundingClientRect().height ||
document.body.scrollHeight`. Whatever number comes back becomes the iframe height, animated over 1.5
seconds.
And the starting height is a bug you can read in the source. `height:undefinedpx` is not valid CSS,
so the browser throws it away and the iframe keeps the HTML default, which is exactly 150 pixels.
That default is what you get whenever the height answer never arrives or comes back as zero.
## Two widget types, one section, very different results
We ran both widget types through GoDaddy's own section markup at a desktop width of 940 pixels and a
phone width of 342 pixels, and read the height the section settled on.
| Widget type | Height the section reported | Final section height | Result |
|---|---|---|---|
| Review list, desktop 940px | 826.89px | 827px | fits, nothing cut off |
| Review list, phone 342px | 901.89px | 902px | fits, nothing cut off |
| Floating badge, desktop | 0 | 150px (default) | badge trapped in a 150px box |
| Floating badge, phone | 0 | 150px (default) | badge ends at exactly 150px, no margin |
The review list works because it is ordinary content in the document flow, so the body has a real
height and GoDaddy's question gets a real answer. The section grows to fit it, on a phone as well as
on a desktop.
The badge reports zero for a reason worth knowing, because it explains a whole class of widget
problems on builders. A floating badge is `position: fixed`. Fixed elements are taken out of the
document flow, so they add nothing to the height of the body. On the live GoDaddy page we measured
`document.body.getBoundingClientRect().height` at 0 and `document.body.scrollHeight` at 0, with a
fully rendered badge inside that same document. GoDaddy asks a fair question, the badge honestly
answers zero, and the section falls back to 150 pixels.
## What that costs you on a real page
The badge is not broken inside a GoDaddy section. It renders, it shows the rating, it is clickable.
It just stops doing the one thing a badge is for. We measured the same widget, 161 by 106 pixels, in
two places on the same afternoon.
| Measurement | Our own page, badge in the page | GoDaddy site, badge in an HTML section |
|---|---|---|
| Badge size | 161 x 106px | 161 x 106px |
| CSS position | fixed, relative to the window | fixed, relative to the section |
| Page height | 4549px | 7207px |
| On screen at scroll top | yes | no |
| On screen at half the page | yes | no |
| On screen at the bottom | yes | no |
| Scroll range where it is visible | the whole page | 1050px out of 6307px, about 17% |
On the GoDaddy page the section sits 1641 pixels down a 7207 pixel page and is 150 pixels tall, so
the badge can only be on screen while the visitor is scrolled between roughly 741 and 1791 pixels.
Past that it scrolls away like any other block. A badge you paid attention to for its permanence is
visible for about a sixth of the page.
The phone result shows how little room is left. At a 390 pixel viewport the badge rendered 73 pixels
tall starting 77 pixels down its 150 pixel section, which adds up to exactly 150. Nothing spare.
That matters because a badge is meant to be clicked, and clicking it expands it to show the rating
per source. We measured that too. On our own page the badge went from 161 x 106 to 350 x 204 pixels
and stayed fully on screen, because it is anchored to its bottom edge and grows upward. Inside the
GoDaddy section the same click produced a 260 x 206 pixel panel anchored to the top of a 150 pixel
frame, so 56 pixels of it finished up outside the section. The widget is not confused about its own
size. It simply has less room than it needs, and the section will not grow, because the height was
settled by an answer of zero long before anyone clicked anything.
## What to do instead
Use a review list in the HTML section, and treat the badge as a separate decision.
For the section itself, paste the stylesheet link, the script tag, the container div and the init
call as one block. Because the section is its own document, the script tag has to be inside the same
section as the container. Splitting them across two sections puts them in two different iframes that
cannot see each other, which produces a silent nothing: no reviews, no console error. Our
[step by step GoDaddy embed instructions](/docs/godaddy-code-embed-instruction/) have the exact block
to copy.
Then check it on the published site, not in the editor. The builder preview renders sections
differently and the 1.5 second height animation means the section is briefly the wrong size on every
load. Give the published page a few seconds before deciding anything is broken.
If you want the badge as well, put it where a badge belongs, which is site wide rather than in one
section. In GoDaddy that means the site wide code injection settings rather than an HTML section.
Same snippet, different home, and the badge is then positioned against the window like it is designed
to be.
## How common is this, honestly
We looked at every domain that called our widget API over fourteen days, 632 hosts across 314
accounts, and exactly one of them was a `godaddysites.com` address. That number understates GoDaddy,
because a GoDaddy site on its own custom domain is indistinguishable from any other site by hostname
alone, and our wider platform scan on 4 August put GoDaddy in a group of six small platforms
totalling nine sites. Either way, GoDaddy is a small share of the sites running our widget, which is
also why this specific trap goes unreported: not many people hit it, and the ones who do see a widget
that renders, so they assume it is fine.
It is worth saying plainly that none of this is GoDaddy doing something wrong. Sandboxing pasted code
is a sensible thing for a website builder to do, and asking the code how tall it is, is the only way
to size a box you cannot see into. The mismatch is between that mechanism and any widget that
deliberately floats above the page.
## Why our widget on a builder like this
The reason to use JustReview here is that everything above is measurable at all. The widget is a
stylesheet and a script from our domain plus one init call, so it works in any box that runs
JavaScript, including a GoDaddy section, a Wix HTML block or a Webflow embed, and you can open dev
tools and see exactly what it did. There is no app to install and nothing to update when GoDaddy
changes its builder, because there is no integration to break.
It also does not care where the reviews come from. Google is the usual first source, but the same
snippet shows Facebook, marketplace seller feedback and software review sites in one list, which
matters more than it sounds when Google is not where your reviews actually are. You can see the list
widget running live further down this page, and
[embedding it on your own site](/embed-google-reviews-widget-on-website) is the same three lines you
just read about.
Two honest caveats, and the second one is about our own pricing. A review list is taller than people
expect, 827 pixels on desktop in our measurement, so give it a section of its own rather than
squeezing it next to something else. And the list widget starts on our paid Plus plan, not the free
one: free gives you the badge, up to 100 stored reviews from Google and Facebook, no card. Which
means that on GoDaddy specifically, the free plan and the HTML section are the wrong pairing, since
the free plan's widget is exactly the one that does not belong in a section.
So the honest route in is this.
[Create an account](https://app.justreview.co/#/register?utm_source=blog&utm_medium=organic&utm_campaign=google-reviews-widget-godaddy),
connect Google, and put the badge snippet in GoDaddy's site wide code injection rather than in an
HTML section. That costs nothing and the badge behaves the way it is designed to, floating against
the window on every page. If you want the review list sitting in a section on the page, the one this
whole article measured at 827 pixels, that is the [Plus plan](/pricing) and up. Still choosing a
tool? Our [comparison of Google reviews widgets](/blog/best-google-reviews-widgets-2026/) covers what
to check before you commit to any of them.
---
## Joomla Google reviews plugin: what the text filter deletes
Source: https://justreview.co/blog/google-reviews-widget-joomla/
Summary: You do not need a Joomla plugin to show Google reviews. You need the script tag to survive the save. Here is exactly what Joomla deletes, and what it keeps.
You do not need a Joomla plugin to put Google reviews on a Joomla site. The whole install is a
stylesheet link, one script tag, one init call and an empty container div, and Joomla has two places
that accept raw HTML. What you do need is for that script tag to still exist after you press Save,
and by default it does not: Joomla strips it twice, once in the editor and once on the way into the
database. The div survives, the script does not, and you are left staring at a page that looks like
nothing happened.
This post is the exact behaviour, not the folklore. We read the defaults in the Joomla source on
10 August 2026 (branches 5.4 and 6.1, plus the filter package Joomla vendors), and we measured the
one live Joomla site running our widget.
## Joomla is the rarest platform we see, and that matters here
On 10 August 2026 we took every domain that had served our widget in the previous 18 days, 737 of
them, and fetched each home page to fingerprint the platform. 467 answered. Here is the whole board:
Counts overlap slightly, because a handful of sites carry markers of two systems at once. The two
Joomla hostnames are the same site behind a production domain and a hosting preview domain, so in
practice: one Joomla install, one account.
That number is the honest reason this guide reads differently from the WordPress one. There is no
large pile of Joomla installs to average over, so instead of vague advice we did two things that do
not need a large sample: we read what Joomla's own code does to your snippet, and we took the single
Joomla site apart to see how it was wired.
## What Joomla deletes, and what it keeps
Two filters stand between your clipboard and the page, and they are configured in different places.
**The editor filter runs first, in your browser.** Joomla ships TinyMCE with a field called
Prohibited Elements, defined in `plugins/editors/tinymce/forms/setoptions.xml` with the default
value `script,applet,iframe`. It is used whenever the set does not defer to the global filters,
which is also the default (`use_config_textfilters` is 0). So the script tag can disappear before
the form is even submitted, including for a Super User who believes they have filtering turned off.
**The save filter runs second, on the server.** Both the article body and the Custom module body are
declared with `filter="\Joomla\CMS\Component\ComponentHelper::filterText"`, in
`administrator/components/com_content/forms/article.xml` and
`administrator/components/com_modules/forms/module.xml`. That method reads Global Configuration,
Text Filters, and applies the rule for the groups the current user belongs to. For the Default Black
List it builds an input filter whose blocked tag list is 23 entries long:
```text
applet, body, bgsound, base, basefont, canvas, embed, frame, frameset, head, html,
id, iframe, ilayer, layer, link, meta, name, object, script, style, title, xml
```
Note what is on that list besides `script`: `link` and `style`. So a snippet that starts with a
stylesheet link loses that too, and the widget can end up unstyled even when someone has managed to
smuggle the script through. Note also what is **not** on the blocked attribute list, which is only
`action, background, codebase, dynsrc, formaction, lowsrc`: `id` and `class` are untouched. Your
empty container div always survives. That asymmetry is the whole Joomla story in one line.
## The default that decides whether it works for you
Joomla does not apply one rule to everybody. The shipped configuration, in
`installation/sql/mysql/base.sql`, assigns a filter type per user group:
| User group | Default text filter | What happens to the snippet |
|---|---|---|
| Super Users | No Filtering | Script survives the save (but TinyMCE may still eat it) |
| Manager | Default Black List | Script, link and style removed |
| Administrator | Default Black List | Script, link and style removed |
| Publisher | Default Black List | Script, link and style removed |
| Editor | Default Black List | Script, link and style removed |
| Author | Default Black List | Script, link and style removed |
| Registered, Public, Guest | No HTML | Everything removed |
This is why the same paste behaves differently for two people on the same site, which is the single
most confusing symptom in Joomla support threads. The owner is a Super User and sees the widget. The
person who actually maintains the content is an Administrator or a Publisher and their save quietly
returns a div with nothing behind it. Nobody is doing anything wrong, and no error is shown.
## The opposite failure, measured on a live site
The one Joomla install in our base has the mirror image of that problem, and it is worth showing
because it is invisible from the front end.
They did the smart thing with the script: it sits in the template, just before the closing body tag,
wrapped in a comment marker, so no filter ever touches it. We crawled 24 pages of that site on
10 August 2026. All 24 carry the stylesheet link, the script and the init call. **Zero of them carry
the container div.** We then rendered three of those pages in a headless browser to be sure the
container was not being injected at runtime, and matched every element whose id or class starts with
our name: nothing, on all three.
Here is what each of those page views actually costs, measured the same day:
| Resource | Over the wire | Decoded | What it is for |
|---|---|---|---|
| Widget JavaScript | 128 293 B | 488 265 B | Nothing on this page |
| Widget stylesheet | 15 285 B | 109 861 B | Nothing on this page |
| Reviews API response | 4 054 B | 12 630 B | 21 reviews, average 4.95 |
| **Total per page view** | **147 632 B** | **610 756 B** | **Zero pixels** |
So a paying account downloads its own 21 five star Google reviews on every page view of a 24 page
site and renders none of them. There is no console error either. We checked our own widget code and
the reason is boring: the init call asks for the container, our loading spinner helper returns early
when the selector matches nothing, and the fetch then runs anyway. The site owner has no way to see
this. That silence is on us, not on Joomla.
If you take one diagnostic away from this page, take that one: **a widget that loads is not a widget
that renders.** The network tab showing a 200 on the reviews call is not evidence that anything is
on your page.
## Install it so it survives both the filter and the next update
| Where you put it | Survives text filter | Survives Joomla update | Good for |
|---|---|---|---|
| Child template `index.php`, before `` | Yes, templates are never filtered | Yes | The script and init call, site wide |
| Template `index.php` directly | Yes | No, an update can overwrite it | Quick test only |
| Article or Custom module | Div yes, script no | Yes | The container div, per page |
| Global Configuration, filter set to No Filtering | Yes | Yes | Nothing, this is a site wide security decision |
The working shape on Joomla is a split, and it is not a workaround, it is the correct layout:
1. **Script once, in the template.** Copy your active template to a child template, open its
`index.php`, and paste the stylesheet link, the script tag and the init call just before
``. Nothing here goes through the text filter, and a child template means the next Joomla
or template update does not undo your work.
2. **Container where you want the reviews.** In the article, or in a Custom module assigned to a
position, paste only the empty div with the widget id. The Default Black List keeps it. If your
editor reformats it into oblivion, switch the editor to None for that one save. Remember that a
Custom module also wraps your markup in its own `div` with a `mod-custom` class, which is a handy
hook if you want to add spacing around the widget.
3. **Check the front end in the element inspector, not in view source.** View source tells you what
the server sent, the inspector tells you what the browser built. On Joomla those two disagree
often enough to waste an afternoon.
If you would rather not touch a template file at all, the alternative is a Super User account plus
the editor set to None, which lets the script through both filters. It works, and it puts your
snippet in a database row that the next content editor can silently delete. We would not choose it.
## What we would check first on a Joomla site that "does not work"
- Open view source and search for the widget name. Container present, script missing means the text
filter took it: move the script to the template.
- Script present, container missing means the opposite: the reviews are being fetched and thrown
away, which is the case we measured above. Add the div to the page that should show them.
- Both present and still nothing on screen means the container is on the page but hidden, usually
inside a collapsed tab or an accordion that measures zero at load time.
- Reviews appear but look unstyled: the stylesheet link was removed, because `link` is on the same
blocked list as `script`.
None of these need a plugin, a developer or a support ticket. They need the script and the div to be
in places where Joomla is not allowed to rewrite them.
## Why we are worth the ten minutes
We support Google alongside marketplaces and booking platforms in one widget, one script and one
account, which matters more on Joomla than anywhere else: every source you add is zero extra tags on
the page, and tags are the fragile part here. The install is the same three lines on every platform,
documented in our [universal embed instructions](/docs/other-sites-universial-tutorial/), and the
widget itself is the same file we measured above, so the numbers on this page are the numbers you
get. Plans and limits are on the [pricing page](/pricing), and if you are comparing tools first,
our [rundown of review widgets in 2026](/blog/best-google-reviews-widgets-2026/) is the honest
version, including where somebody else fits better.
The fair warning, since this page is otherwise about ours: we are a reviews aggregator, not a Joomla
extension. There is no Joomla Extensions Directory listing to install, no admin panel inside Joomla,
and the snippet is your responsibility once it is in the template. In exchange you get something a
Joomla extension cannot give you: the same widget, unchanged, if you move that site to WordPress or
Shopify next year.
Ready to try it on your own template? [Create an account](https://app.justreview.co/#/register?utm_source=blog&utm_medium=organic&utm_campaign=google-reviews-widget-joomla),
connect Google, and copy the snippet from the widget builder. If you want to see the finished thing
before you touch `index.php`, our [Google reviews widget page](/embed-google-reviews-widget-on-website)
has it running live.
---
## Google reviews in PrestaShop: where the snippet goes, measured
Source: https://justreview.co/blog/google-reviews-widget-prestashop/
Summary: We fingerprinted every domain calling our widget and found 16 PrestaShop shops. On five of their pages the script loaded, called our API and rendered nothing.
To display Google reviews in PrestaShop you paste three things: a stylesheet link plus the widget
script, one init call with your account key, and an empty `
` where the reviews should appear.
There is no module to install and no PHP to run, because the widget is client-side and fetches the
reviews from our API in the visitor's browser. The PrestaShop-specific problem is that those three
pieces do not naturally live in the same file, so they drift apart, and when they do the widget
fails in a way that leaves no error anywhere.
We know how often that happens because we measured it. On 9 August 2026 we took every domain that
called our widget API in the previous 17 days, fetched each one, fingerprinted the platform, and
then loaded the PrestaShop ones in a headless browser to see what the code actually did.
## What 16 live PrestaShop shops actually do
Our widget API saw 718 distinct domains between 24 July and 9 August 2026. 655 of them answered an
ordinary HTTPS request, and 16 returned PrestaShop fingerprints, spread across 13 accounts. Every
one of the 16 is on the 1.7 or 8 generation. Not a single 1.6 shop is left.
The first thing the sample shows is where people put the library.
| Where the widget script sits | Shops | What that means in practice |
|---|---|---|
| Footer, inside `footer#footer` | 6 | Loads after the page content, the usual right answer |
| `` | 5 | Loads early; one of these has no `defer`, so it blocks rendering |
| Body block from a page builder | 2 | Pasted into a builder widget, travels with the block |
| Injected by script on first scroll | 2 | Hand-rolled lazy load, the most careful setup in the sample |
| Inside a Creative Elements widget | 1 | Same idea as the builder block |
The second thing it shows is that the stock theme is a minority of one. Fifteen of the 16 shops run
a non-stock theme, and only `sleep-lenly.com` was on PrestaShop's own `classic`. Five of the 16 had
a page builder module available: Creative Elements on three, Ap Page Builder on two. That matters
for the advice at the end, because "just edit `header.tpl`" is advice about a file that belongs to
somebody else's theme.
## The failure PrestaShop produces: loaded, called, rendered nothing
Here is the part no tutorial covers. On five of the pages we loaded, the widget stylesheet
downloaded, the widget script downloaded, an init call ran, our API answered with reviews, and
nothing appeared on the page. Not a broken layout, not an empty box: no container element in the
DOM at all, and a clean console.
| Page | Source it asked for | Container in the DOM | Rendered |
|---|---|---|---|
| `zielonynurt.pl` home | Google | none | nothing |
| `holycity.store` home | Allegro | none | nothing |
| `swietemiasto.pl` home | Allegro | none | nothing |
| `fell.land` product page | all sources | none | nothing |
| `gogolfun.it` CMS page | eBay, Facebook, Google | none | nothing |
The cause is the same in all five: the library and the init call are global, because they were
pasted into a template that renders on every page, while the container div sits in one template
only. So the shop pays for the widget everywhere and gets it in one place.
We measured what "pays for it" comes to. The script is 128,293 bytes over the wire and 488,265
bytes once decompressed. The stylesheet is 15,285 bytes over the wire, 109,861 decompressed. The
API response for a 20-review list is 1,738 bytes over the wire. That is roughly 142 KB of transfer
and three round trips, on every page view, for zero pixels.
Worth saying plainly: this is not PrestaShop being broken, and it is not the widget being broken
either. It is what happens when a three-part snippet is split across three template files that are
edited at different times by different people. PrestaShop just makes it easy, because the templates
are genuinely separate files and nothing checks that they agree.
## A snippet pasted twice costs an API call, not a download
Two shops in the sample had the library more than once. `gogolfun.pl` has four widget script tags
and three copies of the stylesheet link on its home page; `gogolfun.it` has three and two.
The obvious guess is that this downloads the file four times. It does not, and we checked rather
than assumed. The browser deduplicates identical script URLs, so `justreview.js` is fetched once.
What does double is the work: on both shops we recorded two separate `getWidgetData` calls to our
API on a single page load, around 390 ms each. So a duplicated snippet costs an extra round trip
and an extra render pass, not extra bandwidth. Our
[PrestaShop install guide](/docs/prestashop-code-embed-instruction/) says the library belongs in
your templates only once for exactly this reason.
## Do not diagnose this from view-source
One shop in the sample looked broken and was not. `jawo2008.pl` has the stylesheet, the script and
a `justreview-testimonials` container in its HTML, and no init call anywhere in the served markup.
By reading the source you would conclude the widget can never run.
Then we loaded it in a real browser. The widget renders at 1110 by 785 pixels, with a live API call
for its Allegro reviews. The init simply arrives from somewhere the raw HTML does not show. The
lesson is cheap and applies to every widget on every platform: PrestaShop themes concatenate and
cache their JavaScript, so the served HTML is not the whole story. Open the page, not the source.
## Where each of the three parts should go
PrestaShop gives you proper places to attach code, and they are visible in the theme it ships. In
the `classic` theme for PrestaShop 8.1 and up, the layout ends with a `displayBeforeBodyClosingTag`
hook, the footer partial exposes `displayFooterBefore`, `displayFooter` and `displayFooterAfter`,
and `index.tpl` renders the home hook inside ``.
That last one is not theory. On the five shops in our sample whose container renders on the home
page, the div sits exactly there, inside `section#main > section#content`, which is the region the
stock `index.tpl` fills from the home hook. Whatever route those shop owners took, they landed in
the place PrestaShop designed for this.
So, in order of what survives longest:
The library and the init call go once per shop, as late in the page as you can put them. A small
HTML block attached to `displayBeforeBodyClosingTag` is the cleanest home, because it is a hook
built for third-party scripts and it is not a file a theme vendor will replace. If you do edit
templates, do it in a child theme. PrestaShop's own `index.tpl` opens with a comment telling you not
to edit it if you want to upgrade cleanly, and with 15 of 16 shops on a non-stock theme, that
warning is aimed at almost everyone reading this.
The container div goes in the template that renders the page you want reviews on, and only there.
If you want reviews on the home page and on product pages, that is two containers, not one, and the
container id has to match the init call.
Then clear the cache in **Advanced Parameters → Performance**, and check the published shop rather
than the back office preview. Both of those are the standard reason a correct paste appears to do
nothing.
## Your PrestaShop reviews are probably not all on Google
One more thing the sample shows, and it changes what widget you actually want. Across the 13
PrestaShop accounts, Google is the most common source but it is not close to universal, and a
Polish marketplace shows up more often than eBay.
| Source connected | Accounts (of 13) |
|---|---|
| Google | 9 |
| Facebook | 8 |
| Allegro | 4 |
| eBay | 2 |
| Apple App Store, Google Play, Google Shopping | 1 each |
Three of those 13 accounts have Allegro as their only source. Together the 13 accounts store 9,661
reviews, 9,627 of them visible, with a median of 261 per shop. If your reviews sit on a marketplace
rather than on a business profile, the approach is the same snippet and the same container, which
we cover in
[putting marketplace reviews on your own site](/blog/marketplace-reviews-on-your-website/).
## Why run our widget on PrestaShop
The reason to use JustReview here is that everything above was measurable from the outside. The
widget is a stylesheet, a script and one init call from our domain, so there is no module to install
in your shop, no PHP running on your server, no database queries added to a page load, and nothing
to update when PrestaShop ships 8.3. When something looks wrong you open dev tools and see exactly
what happened, which is how we found the five silent failures in the first place. That is also why
it does not care whether your theme is `classic`, a vendor theme or a page builder:
[embedding it on your own site](/embed-google-reviews-widget-on-website) is the same three parts in
all of them, and it puts Google, Facebook and marketplace seller feedback in one list.
Two caveats, and the second is about our own pricing. A review list is taller than people expect,
around 700 to 800 pixels on desktop in the shops we measured, so give it a row of its own rather
than squeezing it beside a product carousel. And the list widget starts on our paid Plus plan at
9 € a month: the free plan gives you the floating badge, 100 stored reviews and Google plus
Facebook, no card. The median PrestaShop shop in our sample stores 261 reviews, which is already
past the free cap, and Allegro is not a free-plan source at all, so three of those 13 accounts could
not have run on free even if they wanted to. The full split is on our [pricing page](/pricing).
The honest route in is to
[create an account](https://app.justreview.co/#/register?utm_source=blog&utm_medium=organic&utm_campaign=google-reviews-widget-prestashop),
connect your sources, and paste the badge into a hook first. It costs nothing, it needs no container
div, so it cannot fail the way the five shops above failed, and it tells you within a minute whether
your domain whitelist and your cache are in order. Add the list once you know the plumbing works.
You can see that list widget running live further down this page.
---
## How to add Google reviews to Shopify (measured on 20 live stores)
Source: https://justreview.co/blog/google-reviews-widget-shopify/
Summary: Where the snippet goes in a Shopify theme, and what 19 Shopify accounts running a live reviews widget actually connect: 47% Google, 42% eBay.
Adding Google reviews to a Shopify store takes two pastes and no app. The library tag goes into
`theme.liquid` once, just before the closing ``, and the widget block goes into a Custom
Liquid section, called Custom HTML in some themes, on the template where the reviews should show.
What the tutorials skip is the
decision that actually matters on Shopify: reviews about your shop and reviews about one product are
two different jobs, they belong on different templates, and a section only exists on the template
you edited. Below is where each piece goes, plus what nineteen Shopify accounts running our widget
right now actually do with it.
## Where each piece of code goes
| Piece | Where it belongs | Where it then appears | What happens if it is somewhere else |
|---|---|---|---|
| Stylesheet and library tag | `theme.liquid`, before `
` | every page of the store | pasted into each section, the library loads several times on one page |
| The init call with your settings | same place, `theme.liquid` | every page | fine anywhere, as long as it runs after the container exists |
| The container div | Custom Liquid section on the chosen template | only that template | the init runs, fetches your reviews and fills nothing, silently |
| Floating badge | needs no container at all | wherever the init runs | nothing to get wrong, it is positioned by its own settings |
That third row is the one that costs people an afternoon, and we have it on tape. On two of the
storefronts below the library loaded on the home page and fired its API call for the reviews, the
container was not part of the home template, and the page ended up with no reviews and no console
error at all. Nothing is broken in that state, which is exactly why it is hard to debug.
## How we got the numbers
Everything below was measured on 4 August 2026. We took every domain that called our public widget
API in the previous fourteen days, which is 632 distinct hosts belonging to 314 accounts, then
fetched each home page and identified the platform from its markup and response headers. 449 answered,
182 did not respond at all, one answered with another status. This is the population of sites where
our widget is genuinely embedded, not a survey and not a customer list.
The 43 Shopify hosts belong to 19 accounts, and they split in a way worth knowing about: 20 are
storefronts on a custom domain, 6 are `myshopify.com` addresses, and 17 are `shopifypreview.com`
theme-preview links generated by 6 accounts while they were setting the widget up.
## Shopify merchants connect different sources than everyone else
This is the part we did not expect. For each of those accounts we listed the review sources they
have actually connected, then grouped the accounts by platform. The table is sorted by how often the
group connects a marketplace, because that turned out to be the dividing line.
Shopify is the only group where Google is a minority sport. Everywhere else roughly four accounts in
five connect Google first and marketplace feedback is a rounding error. On Shopify, Google and
Facebook sit at nine accounts each out of nineteen, eBay at eight, and some marketplace source is
connected by twelve of nineteen. Nineteen accounts is a small sample, so read those percentages as a
signal rather than a census, but the direction is hard to miss and it fits how these shops are
built: the store is new, the seller is not, and the trading record is parked on a marketplace.
The volume says the same thing louder. Those 19 Shopify accounts hold 136,905 visible reviews
between them, a median of 1,758 per account. The median WooCommerce account in the same population
has 190, PrestaShop 188, WordPress 227, Magento 124. A Shopify merchant arriving with several
thousand pieces of feedback already earned somewhere else is the normal case, not the outlier.
## Reviews about the shop, reviews about one product
Of those 136,905 reviews, 69,833 are attached to a specific product rather than to the shop. Being
honest about that number: it comes from Amazon feeds on four accounts, one of which holds 65,251 of
them on its own, and the newest product-level review in the whole set is dated 26 October 2024,
because Amazon closed its product review pages behind a login in November 2024. Seller feedback from
the same marketplaces still flows normally. So the practical situation for most Shopify shops is a
large pile of shop-level proof, and product-level proof that has to be collected from now on rather
than imported.
That maps cleanly onto templates. Shop-level reviews answer "can I trust this store", so they belong
where that doubt appears: the home page, the footer, the cart, the about page. Product-level reviews
answer "is this the right one", so they belong on the product template, under the buy button. Trying
to serve both from one block on one template is what makes a review section feel like decoration.
## What the 20 live storefronts actually do
We loaded every one of those 20 custom-domain storefronts in a headless browser at 1280 px, waited
seven seconds and measured what rendered.
| What we looked for | Result |
|---|---|
| Home pages where a reviews block rendered | 17 of 20 |
| Library present in the home page source | 19 of 20 |
| Product pages carrying the library | 10 of the 12 we could open |
| Stores with a `/pages/reviews` page | 8, and 5 of those carry the widget |
| Slider block width when it rendered | 1,180 to 1,280 px |
| Slider block height | 428 to 2,127 px |
| Floating badge size | 152 to 164 px wide, 73 to 106 px tall |
| API calls per page load | 1 on most stores, 2 or 3 where several widgets run |
The widget mix, counted across all 26 real Shopify addresses: the testimonials slider on 20,
the floating badge on 7, a full reviews page on 4, the compact stars line on 1, and 7 addresses run
more than one type at the same time. The most common source list written into those snippets is
Google plus Facebook, followed by Amazon plus eBay, then eBay alone, then Etsy plus Facebook. Six
accounts have turned off our logo, which is a paid setting, and three have switched on aggregate
ratings, which adds structured data through a container that measures 0 by 0 pixels and shows
nothing to visitors.
Three home pages rendered nothing, and each failure is a different lesson. On one, the library never
loaded, because the merchant deliberately put the whole snippet on the product template only. On the
other two the library loaded and fetched the reviews, but the container div was not on the home
template, so the reviews arrived and had nowhere to go. One store also runs two containers carrying
the same id, where the first one fills and the second stays at zero height, the same duplicate-id
trap we measured inside [hidden Elementor tabs](/blog/google-reviews-widget-elementor/).
## Living next to a product review app
Six of the 19 Shopify accounts run a product review app on the same storefront as our widget:
Judge.me, Yotpo, Okendo, Opinew, Ryviu, Fera and the legacy Shopify Product Reviews all showed up
in the markup. That is not a contradiction, it is the split above in practice. The app collects
reviews of individual products from your own buyers and prints them on the product template. The
review widget shows the trust you already earned as a shop, on Google, on Facebook and on the
marketplaces, on the pages where a first-time visitor decides whether to hand over a card number.
If your product pages are already covered, put the shop-level block on the home page and near the
cart and leave the product template alone.
## The Shopify traps worth knowing before you paste
**Sections are per-template.** Adding the section to the home page does not add it to product pages,
collection pages or the cart. If reviews should appear in several places, add the section in each
one, or drop the container into the layout instead.
**The theme editor is not a test.** 17 of the 43 Shopify addresses we recorded were preview links,
generated by 6 of the 19 accounts, each with a handful of requests. Preview hosts do not count as an
installation in our own statistics, and a preview does not behave like the published storefront.
Save, then look at the live shop.
**The container decides everything.** Whatever else you get wrong, a missing container div means the
data is fetched and thrown away with no warning. If reviews are not showing, search the rendered
page for the container id before you touch anything else. The step-by-step version of all of this,
with screenshots of the theme editor, is in the
[Shopify install guide](/docs/shopify/).
## Where the reviews come from
The reason to connect an account rather than paste static quotes into a Custom Liquid section is
exactly the pattern in the table above: one account merges Google, Facebook, eBay, Amazon, Etsy,
Allegro, Booksy and thirty more sources into the same
[reviews widget](/embed-google-reviews-widget-on-website), and on Shopify that matters more than
anywhere else, because two thirds of these merchants own proof on a marketplace. A shop that sold on
eBay for eight years before opening a Shopify store can show all of it on day one, in one block,
instead of waiting for its first ten Google reviews. If your proof is spread across marketplaces,
the [marketplace reviews guide](/blog/marketplace-reviews-on-your-website/) covers what each
platform still publishes.
The reservations, since every tool has them. The widget renders in the browser, so the review text
is not in the HTML Shopify serves, and a crawler that does not run JavaScript will not read it. Use
the aggregate ratings option when a page needs the rating in its structured data. Free accounts
carry our logo under the reviews and removing it is a paid setting, visible per plan on the
[pricing page](/pricing). Marketplace sources need a paid plan, and Amazon product reviews are
historical only, for the reason above.
If your Shopify store is waiting on this, the short path is to
[create an account](https://app.justreview.co/#/register?utm_source=blog&utm_medium=organic&utm_campaign=google-reviews-widget-shopify),
connect Google and whichever marketplace holds your feedback, paste the library into `theme.liquid`
and the container into a Custom Liquid section on the templates that need it. Ten minutes, most of
it spent on the authorisation screens, and then check the published storefront rather than the
preview.
---
## Google reviews widget on Squarespace (and why the editor looks empty)
Source: https://justreview.co/blog/google-reviews-widget-squarespace/
Summary: How to embed Google reviews on Squarespace with Code Injection and a Code block, plus the four reasons the widget shows nothing at all.
Squarespace has no plugin directory, so every review widget arrives the same way: as a script you
paste yourself. The mechanics take about three minutes. What takes people an afternoon is the part
nobody warns them about, which is that a correctly installed widget renders nothing in the
Squarespace editor and looks broken until you check the live site.
Here is the whole thing, in the order you will actually do it.
## Two places code can go, and they are not interchangeable
| | Code Injection (Settings) | Code block (on a page) |
|---|---|---|
| Applies to | the whole site | one page |
| Squarespace plan needed | Business or higher | available on lower plans |
| Good for | the library and widget configuration | the container where reviews appear |
| Survives page duplication | yes | no, it is copied with the page |
The clean setup uses both: the heavy part once site-wide, the light part where the reviews should
show. If you are on a plan without Code Injection, everything has to live in the Code block instead,
repeated on every page that shows reviews.
## The three parts of the snippet
When you generate the embed code in your dashboard you get three pieces, and they are not
interchangeable either.
**Part 1, the library.** One script tag that loads the widget engine. It belongs in the Footer field
of Code Injection, and it goes there **once** even if you plan to show four different widgets.
**Part 2, the configuration.** A small block that describes one widget: which sources, how many
reviews, which colours, slider or list. One part 2 per widget, all of them in the same Footer field.
**Part 3, the container.** A single empty `div` that marks the place on the page where reviews will
be drawn. This is the piece that goes into a Code block, on the page where you want the widget.
```html
```
Concretely: Settings, Advanced, Code Injection, paste part 1 and part 2 into Footer, save. Then open
the page, add a Code block with the `>` icon, paste part 3, save. The
[step-by-step version with screenshots](/docs/squarespace-code-embed-instruction/) is in our docs.
## Why the editor shows nothing
This is the single most common support message we get about Squarespace, and the answer is not a bug.
Squarespace does not execute the JavaScript inside a Code Block while you are in the editor. The
block renders a grey placeholder instead, which is a deliberate Squarespace behaviour and not
something the widget controls. Nothing about your install is wrong at that point, you simply cannot
see the result yet.
So the sequence is: paste, save, then open the live URL in a normal browser tab. If reviews appear
there, you are done, whatever the editor showed you a minute earlier.
Two related traps worth checking at the same time:
- **Test the published page, not the preview link.** A Squarespace preview URL and an unpublished
page can both keep the block inert.
- **Check the account hash in part 2.** Copying the snippet from an old tab or from a colleague's
account gives you a call that looks correct and returns no reviews.
## The other three reasons nothing appears
**The Code block is still in draft.** Squarespace saves page edits separately from publishing them.
An unpublished Code block exists for you and for nobody else.
**Part 3 is missing on that particular page.** Code Injection is site-wide, the container is not.
Reviews will only draw where the container exists, so duplicating a page that has it, and forgetting
it on a new page, produces exactly this symptom.
**The source has not finished importing.** On a first connection, a profile with a long history takes
a while to pull in. The widget draws nothing rather than an empty frame, which looks identical to a
broken install. Check the dashboard: if the source shows zero reviews, the problem is upstream of
Squarespace.
## What this costs your page
Two static files, both cached at the CDN edge. Measured on production on 26 July 2026 with Brotli
enabled: 128 KB of JavaScript and 15 KB of CSS over the wire, plus one request for the review data.
Nothing runs on Squarespace's side, so page rendering is untouched and the widget draws after the
page is interactive.
That number matters more on Squarespace than on most platforms, because Squarespace templates are
already heavy and you cannot strip much out of them. If you are adding several third-party widgets,
add them one at a time and check your Core Web Vitals after each.
## Where to put reviews on a Squarespace site
Three placements earn their keep, in this order:
1. **On the page where the decision happens**, next to the price, the booking button or the contact
form. Reviews work as an objection handler and belong next to the objection.
2. **Just above the contact form.** On service sites this is usually the highest-value spot on the
whole site.
3. **On a dedicated reviews page** in the main navigation, which also gives you a URL you can link
from quotes, emails and your Google Business Profile.
What we would avoid is the site-wide footer. It feels efficient, it is one container and it appears
everywhere, but reviews stop being read the moment they become furniture on every page.
## Which widget type fits a Squarespace layout
Squarespace sections are full-width blocks with generous padding, which rules some widget shapes in
and others out. From what people actually install, three work well.
**A slider of testimonials** is the safest default. It fits a full-width section, it does not fight
the template's vertical rhythm, and it shows several reviews without a wall of text. Set it to two
or three visible slides, not five: Squarespace content columns are wide, and squeezing five cards
into one row makes each review unreadable on a laptop.
**A compact rating summary** works where a slider would be too much: in a sidebar-like column next to
a booking form, or directly under a page title. One number, the star row and the review count carry
most of the trust signal, and they take 80 pixels of height instead of 500.
**A full reviews page** belongs on its own page in the main navigation. It is the only placement
where visitors arrived to read reviews, so give them all of them, sorted by date, rather than a
carousel that hides most of the content behind arrows. All six widget shapes are on the
[Google reviews widget page](/embed-google-reviews-widget-on-website) if you want to see them side
by side before choosing.
One Squarespace-specific detail: whatever you pick, the container `div` in part 3 inherits the width
of the section it sits in. If the widget looks cramped, the fix is usually the Squarespace section
width setting, not the widget configuration.
## One thing to decide before you install anything
Whichever tool you pick, check how it bills. Several widget vendors count monthly views, meaning the
number of times the widget loads, and switch the widget off when you pass the limit. On a Squarespace
site with a review widget in a template area, that meter runs on every page view of your entire site.
We compared the seven main tools on exactly this in
[best Google reviews widget in 2026](/blog/best-google-reviews-widgets-2026/), and the numbers are on
our [pricing page](/pricing) too: JustReview never counts views, on any plan, including the free one.
---
## Webflow Google reviews integration: what the 940 px container does
Source: https://justreview.co/blog/google-reviews-widget-webflow/
Summary: How to put Google reviews on a Webflow site with an Embed element, and what breaks when you publish to a custom domain.
Webflow takes a Google reviews snippet in three different places, and all three publish the same
markup: an HTML Embed element on the canvas, the custom code fields in Page settings, or the same
fields in Site settings. The part nobody tells you is what happens after that. A Webflow site is a
grid with fixed breakpoints, a reviews slider measures the browser window, and those two rulers do
not agree. Below are the numbers from a live Webflow page, measured today, plus the three settings
that make the mismatch disappear.
## Where Webflow will take the code
| | Embed element | Page settings | Site settings |
|---|---|---|---|
| Where the reviews appear | exactly where you drop it | anywhere the container div sits | anywhere on the site |
| Travels when you copy the section | yes | no | no |
| Good for | one section on one page | one page, several blocks | reviews on many pages |
| Character allowance | 50,000 | 50,000 per field | 50,000 per field |
| Visible while you design | placeholder only | not at all | not at all |
| Where you verify it | preview or published site | published site | published site |
The character allowance is worth a moment, because it is the reason a lot of embed code gets
rejected in Webflow, and it used to be five times tighter. Webflow states plainly that code in a
Code Embed element cannot exceed 50,000 characters, and that the Head and Footer fields in Site
settings and the equivalents in Page settings hold 50,000 characters each.
## How much of that allowance a reviews widget uses
Every number below comes from the snippet builder inside the JustReview panel, run on 3 August
2026 with each widget screen in its default state. Two figures per widget: the snippet as the panel
writes it for an account with all 38 review sources ticked, and the same snippet for a fresh
account with only Google connected. Both include the stylesheet link, the library tag and the
container div, so it is the complete paste.
The two library tags on their own, the stylesheet and the script, are 147 characters. Everything
else is the settings you chose in the panel, written out as readable JavaScript rather than
minified, which is why the number grows with the list of connected sources: each one costs about
thirteen characters. Even the heaviest of these, at 2,129 characters, leaves room for
twenty-two more copies in the same embed. If you are hunting for a way around a Webflow character
limit, a review widget is not what put you over it.
## What the default container does to a slider
This is the part that surprises people. The runs below are from a published Webflow page served
with Webflow's own stylesheet and runtime, jQuery 3.5.1 and webflow.js loaded exactly as Webflow
publishes them, with the snippet inside a `w-embed w-script` wrapper, which is what the Designer
produces from an Embed element. The only variable is the width of the browser window.
Read the container column first. Webflow's container is 940 px wide on desktop, drops to 728 px at
991 px of window width, and goes fluid below 479 px. That is the whole responsive story on
Webflow's side, and it is the same on every site built with the default grid.
Now read the card column. It does not shrink smoothly. It jumps up at 1023 px, falls again at
991 px, drifts down to its narrowest point at 600 px, then jumps to 489 px one pixel later. The
widest cards on the entire scale, 489 px, appear on a 599 px window, which is a large phone in
landscape. The narrowest, 230 px, appear at 600 px, one pixel apart.
## The 32 pixels where the two rulers disagree
The slider counts how many cards fit by looking at the browser window, not at the box it was given.
We measured its two thresholds precisely: three cards down to two between 1024 px and 1023 px, and
two down to one between 600 px and 599 px. Webflow's thresholds are 991 px, 767 px and 479 px.
Nothing lines up.
The visible consequence lives in the gap between 1023 px and 992 px. There, Webflow still gives the
block its full 940 px, because the tablet breakpoint has not fired yet, while the slider has already
decided this is a smaller screen and switched to two cards. The result is a 940 px block holding two
400 px cards where the same block held three 257 px cards thirty-two pixels earlier. Nothing is
broken, nothing logs an error, and every visitor on a 13-inch laptop with a slightly narrow window
sees a different layout than the one you approved on your monitor.
The second gap runs from 599 px down to 480 px: one card per screen while Webflow still treats the
page as mobile landscape. That one is harmless, because one card on a phone is the right answer
anyway.
## Columns are where it actually breaks
Dropping the Embed into a Webflow column is the placement worth avoiding. In a `w-col-4` column
inside the default container, on a 1440 px screen, the column measured 300 px of usable width, and
the slider still tried to fit three cards into it: 80 px each. At 991 px the same column shrinks to
229 px and the content starts to overflow its own box by 26 px.
The mechanism is the one we measured in a different builder, where a slider that starts inside a
[hidden Elementor tab](/blog/google-reviews-widget-elementor/) comes out with one full-width card:
a component that has to know its own width behaves badly when the width it is told about is not the
width it has. In Webflow the container never hides, so the failure is quieter and easier to miss.
It just looks like small reviews.
## Three settings that remove all of it
Give the slider a full-width section rather than the default container when you want large cards.
Measured on the same page at 1440 px, a full-width section produced 423 px cards against 257 px in
the container, and the block was the same height either way. This is one checkbox in Webflow, on
the section rather than on the embed.
Set the visible slides count to match the placement instead of leaving it at three. Three is right
for a full-width section and wrong for anything narrower than the container. Two is the safe choice
for a 940 px container, and it removes the jump at 1023 px entirely, because the slider is already
showing two.
Reserve the height. Every layout in the table above landed between 754 px and 784 px, a 30 px
spread across every screen size we tested, so a section with a 780 px minimum height will not
shift the page underneath it while the reviews load. If you need a shorter block, turn off the
header or the button in the widget settings before you start fighting it with CSS.
And check on the published site or in preview, not on the canvas. An Embed element shows a
placeholder while you design, which is normal and not a sign that anything is wrong.
## Where the reviews themselves come from
None of the above matters if the reviews are stuck in a place you cannot export. That is the actual
reason to connect a review account rather than paste static quotes into Webflow: the Google profile
keeps collecting reviews, the widget keeps showing the current ones, and the Webflow page never has
to be edited again. Connect Google once and the same snippet keeps working, whether your business
has one location or twenty. The same account also pulls from Facebook, Booksy, Allegro, G2,
Capterra and thirty more sources, so a Webflow page can show one merged wall instead of four
separate widgets from four vendors, which is also why our snippets grow by thirteen characters per
source rather than by a whole new script tag.
Our own numbers on this page are the honest version: the library and the stylesheet are two
requests, the reviews arrive in a single API call, and on a Webflow page with jQuery and webflow.js
already running we recorded zero console errors across every window size in the table. Details on
the embed itself, including the settings that produced these measurements, live on the
[widget page](/embed-google-reviews-widget-on-website), and the universal
[embed instructions](/docs/other-sites-universial-tutorial/) cover Webflow's Embed element step by
step.
The reservations, since every tool has them. The widget renders on the client, so the reviews are
not in the HTML that Webflow publishes, and a crawler that does not run JavaScript will not see the
review text. If that matters for a specific page, use the aggregate rating option, which writes
structured data rather than relying on the rendered cards. Free accounts show the JustReview logo
under the reviews; removing it is a paid setting, and you can see exactly which plan carries it on
the [pricing page](/pricing).
If your Webflow site is waiting on this, the shortest path is to
[create an account](https://app.justreview.co/#/register?utm_source=blog&utm_medium=organic&utm_campaign=google-reviews-widget-webflow),
connect Google, copy the snippet the panel writes for you, and drop it into a full-width section
with the visible slides set to two or three. That is roughly ten minutes, most of which is Google's
authorisation screen, and 2,129 characters of the 50,000 Webflow gives you.
---
## Google reviews widget on Wix: how tall the HTML box has to be
Source: https://justreview.co/blog/google-reviews-widget-wix/
Summary: Measured heights for a reviews widget inside a Wix HTML box: 827 px at 980 px wide, 932 px on mobile, and why a narrower box needs a taller one.
Wix puts pasted code inside an iframe with a height you set by dragging, and that iframe never
grows to fit what is inside it. So the only number that matters when you add reviews to a Wix page
is how tall the widget actually renders. We measured ours: 827 px of content in a box 980 px wide,
932 px in a 320 px mobile box, and the counter intuitive part, a narrower box needs a taller one.
Everything below is a measurement, taken on 28 July 2026 in headless Chromium, with the snippet our
dashboard generates loaded inside a cross origin iframe, which is exactly what a Wix HTML box is.
## Two ways into a Wix page, and they are not equal
| | HTML embed (Embed Code) | Wix App Market app |
|---|---|---|
| Who holds the review data | your own review account | the app vendor |
| Height behaviour | fixed, you set it | fixed, the app sets it |
| Styling control | full, it is your markup | whatever the app exposes |
| Works on the free Wix plan | yes | usually with app branding |
| Sources you can mix | every source you have connected | the ones that app supports |
| Effort | paste once, set the height | install, then configure |
The embed wins on the things that are expensive to change later, which is where your reviews live
and what happens to them when you stop paying somebody. It loses on convenience, and it loses in
exactly one place: you have to decide the height yourself. That is a five second job once somebody
hands you the number, which nobody does, so here are ours.
## The measured heights
Box width is the width of the HTML element on your Wix canvas. Widget height is what the widget
renders at that width. Box height is what you should type into the Wix size panel: the widget plus
the 16 px that the browser default body margin costs inside the iframe, rounded up.
Two things in that table are worth more than the numbers themselves.
**The height goes up as the box gets narrower.** 827 px at 980 px wide, 932 px at 320 px. Most
people size the box on a desktop canvas, then check the phone, find the widget clipped, and blame
the mobile layout. The layout is fine. The widget is taller down there, so the mobile box needs
its own height, about 100 px more than the desktop one.
**A 980 px box shows two reviews, a 1200 px box shows three.** Card width is decided by CSS
breakpoints, so those 60 px of extra canvas buy a whole extra review card. If your Wix section is
close to that line, widening it is the cheapest content upgrade on the page.
## Where the pixels go
The same widget, broken into its parts. This is why the narrow boxes are the tall ones.
The slider block is a constant 554 px, because the review card is 444 px tall at every width we
tested. The margins are a constant 124 px. The only part that moves is the banner at the top, the
one that asks visitors whether they would recommend you and collects a review from them: 85 px when
it has room for one line, 190 px when the text wraps into a narrow phone box. That banner is an
Ultimate plan feature, so on a lower plan the widget is shorter by exactly those numbers and your
box can be 85 to 190 px smaller.
Two more levers, measured at 980 px wide:
- **Turning the All reviews button off** takes the widget from 827 px to 723 px. Worth it only if
you already have reviews somewhere else on the site, because that button is what turns a decorative
widget into a page people click through.
- **Switching from the slider to the grid layout** takes it to 5058 px, because a grid draws all
twenty reviews instead of sliding through them. In a Wix box that is not a taller widget, it is a
clipped one. If you want the grid, put it on a dedicated reviews page, not in a fixed height box
in the middle of a home page.
## The mobile number is the one that decides your layout
932 px on a 320 px wide box is about 1.4 times the visible height of a phone screen. A visitor
scrolling your Wix page will meet the widget, scroll a full screen inside it, and only then reach
whatever you put next. That is fine on a page whose job is trust, and it is a bad trade in the
middle of a booking flow.
So on mobile there are three sane choices, in the order we would try them:
1. **A compact rating summary** where a slider would eat the screen: one number, the stars and the
count. It is the same review data in about a tenth of the height.
2. **A floating badge**, which sits in the corner and costs no layout height at all.
3. **The full slider, but lower on the page**, below the primary call to action rather than above it.
All the widget shapes and what each one is for are on the
[Google reviews widget page](/embed-google-reviews-widget-on-website), so you can pick the shape
before you fight with the box.
## Doing it, in the order you will actually do it
1. Build the widget in your dashboard and generate the code. You get three parts: the stylesheet and
script, the settings block, and the container div.
2. In the Wix editor, add an Embed Code element, choose the HTML mode, and paste **all three parts
into that one box**. This is where Wix differs from most platforms: there is no site wide code
field to split them across, everything lives together in the box.
3. Set the box width to the width of your section, then set the height from the table above.
4. Publish. The widget does not render in the Wix editor preview, so the live page is the only
verdict that counts.
5. Switch to the mobile editor and set the mobile height separately.
The click by click version with screenshots is in
[our Wix install guide](/docs/wix-code-embed-instruction/). If your widget renders but sits in a
box that is visibly too short, you now know it is step 3 and not step 2.
## Why we would put our own widget in that box
Because nothing about it meters your traffic. Several widget tools count monthly widget views and
switch the widget off when you pass the limit, which on a Wix site with reviews in a repeated
section means the meter runs on every page view you have. We never count views, on any plan,
including the free one, and the [pricing page](/pricing) says so in the same words. We compared the
seven main tools on exactly this point in
[best Google reviews widget in 2026](/blog/best-google-reviews-widgets-2026/).
The rest is what the measurements above show: one stylesheet, one script, six widget shapes that
all read from the same connected sources, and a widget that renders inside a third party iframe
without a build step or an app install. You can
[create an account and generate the snippet](https://app.justreview.co/#/register) in the time it
takes to find the Embed Code element in the Wix editor.
Two honest caveats. On Ultimate the review collection banner adds 85 to 190 px to the widget, so
the plan you are on changes the box height you should set. And because Wix runs the box in an
iframe, the widget cannot inherit your site fonts, so brand matching happens in the widget settings
rather than in your Wix theme.
If you want reviews on a Wix page today: connect a source, generate the Testimonials snippet, paste
it into an Embed Code element, and set the box to 850 px on desktop and 950 px on mobile. That is
the whole job, and it is the last time you will have to guess a height.
---
## How to add a Google reviews widget to WordPress (3 ways, measured)
Source: https://justreview.co/blog/google-reviews-widget-wordpress/
Summary: Three ways to put Google reviews on WordPress, what each costs in page weight and database queries, and why widgets fail to render.
If you want Google reviews on a WordPress page, you have three real options: a plugin, a snippet
in your theme, or a Custom HTML block in the editor. All three end up doing the same thing in the
browser, because every review widget on the market is client-side JavaScript. The difference is
what happens on your server, and that difference is measurable.
Here is the short version. A plugin adds PHP that runs on every page load and usually stores review
copies in your database. A snippet adds two cached static files and touches nothing in WordPress.
Unless you specifically need reviews inside WordPress content (for search inside your own site, or
for a custom template loop), the snippet is the lighter choice.
## The three ways, side by side
| | Plugin | Snippet in theme | Custom HTML block |
|---|---|---|---|
| Where the code lives | `wp-content/plugins` | `footer.php` in a child theme, or a code-snippets plugin | Inside one page or post |
| PHP executed per page load | yes | no | no |
| Rows written to your database | usually yes (review cache) | no | no |
| Survives a theme update | yes | only in a child theme | yes |
| Needs an admin to touch code | no | yes | no |
| Works on one page only | no | no | yes |
| Breaks when the plugin author disappears | yes | no | no |
The last row matters more than people expect. Review plugins are a graveyard: the platform changes
an API, the plugin stops importing, and the site keeps showing three-year-old reviews until someone
notices. A widget that fetches from a live endpoint fails loudly instead, which is easier to catch.
## What the widget actually costs
We measured our own production files on 26 July 2026, requesting them the way a browser does, with
Brotli enabled:
So the page pays roughly 143 KB of transfer for two requests, both served from the CDN edge with a
long cache lifetime, plus one request to our API for the review data itself. On the WordPress side
the cost is zero: no PHP executes, no query hits `wp_posts` or `wp_postmeta`, and nothing is written
to your database.
That is the honest number, not a marketing number. 143 KB is not nothing. It is, however, less than
a single hero image on most WordPress themes, and it is static, cacheable and off your server.
A plugin that renders reviews server-side moves that work back onto your hosting, on every
uncached page view.
## Why not just call the Google API yourself?
Because of a cap that surprises most developers on day one: Google's public Places API returns a
maximum of five reviews per place, and you do not choose which five. That is why so many free
"Google reviews" tools show exactly five reviews and no more. To display more than that, reviews
have to be imported and stored, which is the part that takes infrastructure rather than an afternoon.
There is a second reason. Once you have built the Google integration, the next request from your
client is always Facebook, then the industry platform they actually care about, then the marketplace
they sell on. That is a different integration each time, with a different failure mode each time.
## The snippet method, step by step
This is the version we recommend for most WordPress sites.
1. **Decide where the reviews should appear.** Put a container in the template or in the page
content where you want the widget to render:
```html
```
2. **Load the widget once, globally.** In a child theme's `footer.php`, or through a code-snippets
plugin that outputs to `wp_footer`, add:
```html
```
3. **Initialise it with your account hash.** The hash comes from your JustReview dashboard, and the
`services` array decides which connected sources feed this particular widget:
```html
```
4. **Check it on a page that is not cached.** Open the page in a private window and look at the
browser console. An empty container with no console error almost always means the script was
blocked, not that the code is wrong. More on that below.
The full copy-paste version, including the block editor route, lives in our
[WordPress installation guide](/docs/wordpress-code-embed-instruction/).
## The five reasons it renders nothing
We see these in support in roughly this order.
**1. A consent tool is holding the script.** Cookie banners with automatic blocking (Cookiebot's
`auto` mode is the common one) rewrite third-party `
```
Check your own widget's network and storage footprint before you do this, and keep the decision
documented. "It sets no cookies" is a claim you should be able to prove, not assume.
**2. A caching or minification plugin reordered your code.** Autoptimize, WP Rocket and friends
combine and defer inline scripts. If your `JustReview.init...` call ends up executing before the
library has loaded, you get `JustReview is not defined` in the console and an empty div. Exclude the
inline init from combination, or wrap it in a small retry loop.
**3. The container is missing.** Page builders sometimes strip unknown `id` attributes, and a Custom
HTML block inside a collapsed accordion may not exist in the DOM when init runs.
**4. The account hash is wrong.** Copying it from an old tab or a colleague's account produces a
valid-looking call that returns no data.
**5. The source has not finished importing.** First-time imports of a large profile take time. If
the API returns no reviews, the widget renders nothing rather than an empty frame.
## Where to put it on a WordPress site
Placement decides whether the widget does any work at all. Three spots earn their keep, in this
order.
**On the page where the decision happens.** For a service business that is the service page, not the
homepage. For a shop it is the product page and the cart. Reviews work as an objection handler, so
they belong next to the objection: the price, the booking form, the "add to cart" button. A slider
parked in the footer of every page is decoration.
**Just above the contact or booking form.** This is the cheapest win on most WordPress sites,
because the form is where visitors hesitate and reviews answer the question they are actually asking:
"will these people show up and do the job?"
**On a dedicated reviews page, linked from the main menu.** This one has a second benefit: it is a
page you can point to from quotes, emails and Google Business Profile, and it is indexable content of
your own. Use the reviews-page widget rather than the slider there, because visitors who land on that
page came to read, not to be entertained by an autoplay carousel.
What we would not do: put the same slider in the header of every template. It pushes your actual
content below the fold on mobile, and reviews stop being read the moment they become furniture.
If you want to see all six widget types side by side before choosing, they are on the
[Google reviews widget page](/embed-google-reviews-widget-on-website), and the display limits per
plan are on the [pricing page](/pricing).
## Which option should you actually pick?
- **Snippet in a child theme** if you want reviews sitewide with the least server cost. This is the
default we would choose.
- **Custom HTML block** if reviews belong on one landing page only, or if nobody on the team is
comfortable editing theme files.
- **Plugin** only if you need review content stored inside WordPress, for example to loop over it in
a custom template or to make it searchable by your site's own search.
One thing worth deciding at the same time: do not plan for Google alone. Every business we onboard
starts with Google and ends up connecting at least one more source, because Google is where people
look and the other platforms are where the reviews already are. Whatever you install, check that it
can add a second source without a rebuild.
One last thing the widget cannot do for you: it only shows the reviews you already have. If the
count is thin, the fastest fix is asking, and the ask works best as a link that opens the review
window in one tap or a QR code on the counter. Our free
[Google review link and QR code generator](/tools/google-review-link-generator) builds both from
your Maps profile, without an account.
---
## How to get reviews on your website
Source: https://justreview.co/blog/how-to-get-reviews-on-your-website/
Summary: Two jobs, not one: find the reviews that already exist about your business, then put them where the visitor decides. Measured on 3,579 accounts, 77.5% connect only one source.
Getting reviews onto your website is two jobs, not one. First you find the reviews that already
exist about your business, which are usually spread across more places than you remember. Then you
put them where a visitor is actually deciding, which is rarely the bottom of the page. Most
businesses do the first job once and stop: we looked at 3,579 JustReview accounts with at least one
connected source on 12 August 2026, and **77.5% of them had connected exactly one**.
That number is the reason this guide starts with inventory rather than with code.
## Your proof is more scattered than you think
Here is the full distribution from those 3,579 accounts. Every one of them had gone through the
trouble of connecting at least one source, so this is not a picture of people who gave up.
Two sources are already a minority. Three are rare. And when we look at which sources those
connections point to, the concentration is even sharper: Google appears on 2,186 accounts and
Facebook on 1,791, which together is 84% of every connection made. Everything else, from eBay to
Yelp to Booksy, sits in a long tail where no single source passes 100 accounts.
There is nothing wrong with starting at Google. It is the profile most businesses have and the one
customers check first. The problem is stopping there while a marketplace account, a booking profile
or a directory listing quietly holds another twenty reviews nobody on your site will ever see.
## Where your reviews already are
Before installing anything, spend ten minutes listing the places customers can leave a review about
you. It depends less on your industry than on where you sell.
| If you are | Reviews usually sit on |
|---|---|
| A local service business | [Google](/embed-google-reviews-widget-on-website), [Yelp](/embed-yelp-reviews-widget-on-website), [Yell](/embed-yell-reviews-widget-on-website), [Yellow Pages](/embed-yellow-pages-reviews-widget-on-website) |
| A salon, barber or clinic | [Booksy](/embed-booksy-reviews-widget-on-website) and Google |
| A marketplace seller | [Amazon](/embed-amazon-reviews-widget-on-website), [eBay](/embed-ebay-reviews-widget-on-website), [Etsy](/embed-etsy-reviews-widget-on-website), [AliExpress](/embed-aliexpress-reviews-widget-on-website) |
| A hotel, rental or restaurant | [Booking.com](/embed-booking-reviews-widget-on-website), [Airbnb](/embed-airbnb-reviews-widget-on-website), [Tripadvisor](/embed-tripadvisor-reviews-widget-on-website) |
| A software company | [Capterra](/embed-capterra-reviews-widget-on-website), [G2](/embed-g2-reviews-widget-on-website), [Product Hunt](/embed-product-hunt-reviews-widget-on-website) |
| An online shop | [Facebook](/embed-facebook-reviews-widget-on-website), [Trusted Shops](/embed-trustedshops-reviews-widget-on-website), [Sitejabber](/embed-sitejabber-reviews-widget-on-website) |
Write the list down before you pick a tool. It is the difference between showing four reviews and
showing forty.
## Three ways reviews reach your page
**Connect a profile you own.** Google and Facebook work through the platform's own sign-in screen:
you grant access, and only the profiles you picked are read. Everything else is connected by
pointing at your public profile address, no password involved. Either way the reviews refresh every
24 hours, so the page does not drift behind the source.
**Import what you already hold.** If you have reviews in a spreadsheet, in an old review tool or in
your shop software, a CSV import brings them in. This is also the only route for anything a platform
has closed off: Amazon product reviews, for instance, sit behind a login and cannot be read by any
external tool, so if you want those on your site you collect them yourself.
**Collect new ones on your own site.** A reviews page with a form lets customers write directly to
you. Those reviews belong to you and are moderated by you. This matters most for businesses whose
customers never think to open a review platform at all.
The mechanics of each source, including which plan it needs and what the platform's own terms say
about reuse, are written out on the page for that source. If you want the short version of where all
of this data comes from, we [documented the four routes](https://justreview.co/docs/scraping-reviews-is-it-legal/)
in the help centre.
## Where to put them on the page
This is where most guides stop being useful, because "add a testimonials section" is not placement
advice. The question is which decision the visitor is making at that exact scroll position.
A rating sitting next to the price, the booking button or the add to cart button answers the only
question the visitor has at that moment: did this work for other people. The same reviews in a
carousel at the bottom of the page are read by a fraction of the traffic, because most visitors
never reach the bottom.
Some placements that follow from what the source actually is:
- **Seller feedback** from a marketplace describes you across every product, so it belongs on a
homepage trust bar, a shipping and returns page, or a footer that runs across the whole store,
not on one product card.
- **Booking and travel reviews** belong on the direct booking page, where the guest is comparing
your site against the portal they came from.
- **Software reviews** belong on the pricing page, because a B2B buyer opens a review directory in
another tab right before deciding on a plan.
- **Salon and clinic reviews** belong beside the booking button, visible without scrolling, because
the booking happens on a phone in under a minute.
Whatever the source, the embed is the same: a stylesheet link, a script tag, one init call and an
empty div. On WordPress that is a Custom HTML block, on Shopify a custom section, on Wix an embed
element, on Squarespace a code block. No plugin and no developer if you can edit HTML anywhere on
your site.
## If you barely have any reviews yet
Then the widget is not your problem, the asking is. Two things move the number fastest.
Ask immediately after the work is done, not at the end of the month. The gap between the service and
the request is the single biggest predictor of whether anyone writes anything.
Make the ask one tap. A link straight to the review form beats a sentence asking someone to look you
up. Our [Google review link and QR code generator](/tools/google-review-link-generator) builds that
link and a printable code for free, without an account.
What does not work is buying them. Bought reviews arrive without orders behind them, which is the
pattern platforms look for when they remove reviews in bulk, and a business that loses fifty
purchased reviews in one sweep ends up with a thinner profile than it started with. The slower route
also compounds: a review earned this month is still working next year, and it survives whatever the
platform changes about its ranking.
## Do not sanitise the wall
The temptation, once you can pick which reviews appear, is to show only the five star ones. It works
against you twice.
Visitors compare. A profile with nothing but perfect scores reads as bought, and shoppers actively
look for the critical ones to judge whether the good ones are real. A handful of honest complaints
next to a decent average is more persuasive than a flawless wall.
And in the EU there is a rule attached to it. The Omnibus Directive requires traders who display
reviews to state how they make sure those reviews come from real customers, and it treats
selectively hiding negative ones as misleading. Showing reviews with the author, rating, date and
source attached is the simplest way to be on the right side of that.
## The short version
Find every place that already holds reviews about you. Connect more than one of them, because 77.5%
of accounts do not and leave proof on the table. Import what you already hold, collect new ones on
your own page, and put the result where the decision happens rather than at the bottom.
If you want to try it, the [Google reviews widget](/embed-google-reviews-widget-on-website) is on the
free plan with up to 100 reviews, unlimited pages and no card, and
[creating an account](https://app.justreview.co/#/register) takes about as long as reading this
paragraph. What it costs beyond that is on the [pricing page](/pricing).
---
## How to Find Google Reviews by Me (and About My Business)
Source: https://justreview.co/blog/how-to-see-my-google-reviews/
Summary: Reviews you wrote and reviews about your business live in different Google tools. Includes why some platforms only hand over a year of history, not all of it.
Google keeps two different lists of reviews, and they answer two different questions. One is every
review you personally wrote as a customer, wherever you left it. The other is every review someone
wrote about your business - but only the ones that landed on your Google Business Profile, because
anything a customer left on a marketplace, a booking site or an industry directory stays invisible
unless you go and look for it there separately. This guide gives the exact path for both, plus a
number most business owners never check: how much of that second list has already rolled out of
view before anyone thought to look.
## Two different searches, one word
The confusion is understandable, because the word "reviews" covers both without Google ever
distinguishing them in its own interface. Type "my reviews" into Google while signed in and you get
a card of things you wrote. Open your Business Profile's Reviews tab and you get a feed of what
customers wrote about you. Neither view shows the other, and nothing on either screen tells you that.
| What you're looking for | Where Google keeps it | What you can do there |
|---|---|---|
| Reviews you wrote, as a person | Your Google Maps contributions | Edit, delete, see the photos you attached |
| Reviews about your business, on Google only | Your Google Business Profile, Reviews tab | Reply, sort by newest or by rating |
| Reviews about your business, anywhere else | Nowhere in Google at all | Nothing, unless you open that platform directly |
## Reviews you personally wrote
If you want the reviews you have left as a customer - a restaurant last month, a hotel two years
ago, a plumber you have half forgotten - the fastest route is Google Maps itself. Open Maps, either
the app or maps.google.com, and tap your profile photo. The menu has an entry called **Your
contributions** on the web, or **Contributions** in the app; inside it, the **Reviews** tab lists
every review you have ever published, newest first, with the star rating, any photos you attached,
and buttons to edit or delete each one.
There is a shortcut that skips the menu entirely: go straight to `maps.google.com/contrib` while
signed into the account that wrote the reviews, and it opens the same list directly. A second
shortcut works from plain Google Search: type "my reviews" while signed in, and Google surfaces a
card with the same content without opening Maps at all.
What none of these give you is an export button or a keyword search across your own history. If you
are trying to find one specific review from three years ago and cannot remember the business name,
you are scrolling, not searching.
## Reviews written about your business
Finding what customers wrote about you is a different login and a different screen. If you manage
the Google Business Profile for your company, sign in at business.google.com or open the listing
directly in Maps, then open the **Reviews** tab. You can sort what you see by newest or by rating,
and you can reply publicly under any of them - a reply is visible to anyone who opens the listing
afterwards, so it is worth treating as a customer-facing message rather than a private note.
That tab only shows reviews posted on your Google listing. It has no idea that the same customer
might have also left five stars on your Facebook page, on Booksy if you run a salon, on Etsy or
Amazon if you sell on a marketplace, or on Capterra if you sell software. Each of those lives behind
its own separate login with its own separate reviews screen, and Google's interface will never show
you any of them.
For a single-location business with no other listings, that limitation barely matters. For anyone
selling in more than one place, it means the picture inside Google's own tools is permanently
partial - not wrong, just missing whatever happened somewhere else.
## The reviews that already rolled out of view
There is a second, quieter limitation, and it applies even inside a single platform: some review
APIs do not hand over full history, only a recent window of it.
Trusted Shops is the clearest example we have measured. Its own connector endpoint - the one that
reads a shop's reviews for import - returns only the last 365 days on any single call. Query it
today and reviews from fourteen months ago are simply absent from the response, not hidden behind a
filter, just not sent. If a tool only ever queries that endpoint once, whatever a shop had already
collected before that day is gone from that tool for good.
We queried our own production database on 12 August 2026 for every JustReview account with a Trusted
Shops connector: 12 accounts, 2,419 reviews between them, and the oldest one dated 29 September
2020 - nowhere near the 365-day window the same API would return if called today. The reason is not
a special trick against Trusted Shops. It is that the connector has polled every night since the day
it was first connected, and each night's 365-day window overlaps almost completely with the one
before it, so nothing in between ever falls through a gap. A snapshot taken once gives you a year. A
history built one night at a time gives you as many years as the connector has been running.
The same accumulation shows up on our own demo account, the one behind the widget at the bottom of
this article: it holds reviews dating back to 11 October 2020 from Capterra, alongside G2 reviews
from November 2020, Facebook reviews from 2022, and reviews collected directly through our own
review page since 2023 - four sources, four different start dates, none of them capped at a year.
The honest caveat: this only holds while the connector keeps running. One JustReview account had its
Trusted Shops connector go silent for close to two years; by the time the gap was noticed and fixed,
those reviews had already scrolled past the API's 365-day window and could not be recovered by us
either. A rolling window forgives nothing once you have missed it.
## Seeing every source on one page
If the goal is one place that shows everything - what you wrote, what was written about you, on
Google and everywhere else - that is a different tool than either of Google's own screens, because
Google was never going to build a page that aggregates its competitors.
A [Google reviews widget](/embed-google-reviews-widget-on-website) that also reads Facebook,
marketplaces and booking sites solves the "everywhere else" half of the problem: connect each source
once, and the panel behind it keeps every review it has ever pulled in a single sortable list, for as
long as the connection stays alive. That is the same accumulation described above, just extended
across more than one platform at a time.
It does not solve the "reviews I personally wrote" half - that one only exists inside Google's own
account settings, because nobody else is allowed to read it. But the business side, the
reviews-about-you side, is exactly the half that scatters across platforms, and it is the one worth
pulling into a single view before deciding there is nothing left to find. What connecting more than
one source at a time takes to set up is covered in
[how to get reviews onto your website](/blog/how-to-get-reviews-on-your-website/), and what counts as
fair reuse of someone else's review is explained in
[our documentation on scraping and reuse](/docs/scraping-reviews-is-it-legal/).
## The short version
Reviews you wrote live in your Google account, under Maps contributions, and nothing else pulls
them. Reviews about your business live wherever a customer decided to leave one - Google is only
the loudest of those places, not the only one - and Google's own tools show you just the Google
slice. Some of that history disappears faster than you would expect, not because anyone deleted it,
but because the platform's own API only ever hands over a year at a time; whether you keep more than
that depends on whether something has been collecting it the whole way through.
If you want to see what a full history looks like once every source feeds one page, the
[Google reviews widget](/embed-google-reviews-widget-on-website) is free for up to 100 reviews with
no card required, and [creating an account](https://app.justreview.co/#/register) takes a couple of
minutes. What it costs beyond the free plan is on the [pricing page](/pricing).
---
## Is it legal to embed Google reviews on your website?
Source: https://justreview.co/blog/is-it-legal-to-embed-google-reviews/
Summary: Yes, under three conditions. What Google's terms require, where the real risk sits, and the attribution rate measured across 383,820 Google reviews.
Yes. Showing Google reviews of your own business on your own website is legal, and Google publishes
an API for precisely that purpose, which is a strong signal that the practice is intended rather
than tolerated. The conditions are narrow and every one of them is about handling rather than
permission: the reviews have to come from a profile you are authorised to access, each one has to
keep its author, star rating and date, and you must not edit the words or quietly drop the
unflattering ones. In practice almost no dispute in this area is about whether you may show reviews
at all. It is about how you got them.
This is not legal advice, and we are not lawyers. It is what a company that stores 1,376,135 reviews
across 53 sources has learned about where the line sits, including the part we learned by being
told to stop.
## Three questions hiding inside one
"Is it legal to embed Google reviews" collapses three separate questions that have three different
answers, and most of the confusion online comes from answering one of them and calling it done.
**Who owns the words.** The reviewer does. Not you, and not Google. A review is a piece of original
text and copyright in it sits with the person who typed it. That sounds alarming until you notice
what it actually implies, which is that you should quote rather than reproduce as your own: keep the
text intact, keep the author's name on it, keep the rating and date, and link back to where it was
published. That is the ordinary shape of a permitted quotation, and it is why every widget built by
someone who has thought about this displays those four things together.
**How you obtained the data.** This is the question that generates real correspondence from real
lawyers, and it has nothing to do with copyright. Every platform sets terms for automated access to
its content. Pulling reviews through an official API, authorised by the owner of the profile, is a
different act from extracting the same reviews with a crawler, even though the resulting pixels on
your page are identical.
**How you present them.** Consumer protection law, not copyright, governs this part. A display of
genuine reviews can still be an unlawful claim about your business if the selection is engineered.
This is the trap that catches otherwise careful companies, because it is the one where every
individual element is true.
## What Google actually requires
Google's position is unusually workable, and the reason is structural: Google does not sell a review
widget. It has no commercial interest in stopping you from putting your own reviews on your own
site, and a fairly obvious interest in the reviews being visible with its name attached.
Access runs through the Google Business Profile API. The owner or a manager of the profile signs in
on Google's own screen, grants access explicitly, and can revoke it from their Google account at any
moment, at which point the connection stops working. Nothing about that flow depends on us. In our
production data there are 3,646 Google connections across 3,620 accounts, and every one of them
exists because a person with authority over that profile clicked accept on a Google page.
What Google asks in return is attribution: the review as written, the reviewer's name, and a path
back to the source. Which is a requirement you can measure, so we did.
## Attribution is measurable, so we measured ours
We ran the counts across every Google review in our production database on 14 August 2026. It holds
383,820 Google reviews for 2,898 businesses, the oldest written on 16 June 2009.
| What the stored review carries | Google reviews | Share |
|---|---|---|
| Author name | 383,820 | 100% |
| Star rating | 383,820 | 100% |
| Date written | 383,820 | 100% |
| Link back to the original | 353,629 | 92.1% |
Three of the four are absolute. Not a single Google review in the database is missing its author,
its rating or its date, which is what you would expect from an API that refuses to hand over a
review without them.
The fourth is 92.1%, and a number like that is usually the end of a paragraph nobody writes. It
deserves the opposite, because the 30,191 reviews without a source link are not scattered randomly
through the set. They are one cohort with a hard edge.
## The gap is one cohort, and it has a date
Sorted by the year each review was imported rather than the year it was written, the whole gap
resolves into a single block:
Every Google review imported from 2021 onward carries a link back to the original. All 352,343 of
them. The entire deficit belongs to the 2020 import cohort, where 95.9% of what came in arrived
without one, and it stops dead at the year boundary rather than tapering.
We are publishing the 92.1% rather than the 100% because the shape of the number is the useful part.
An attribution rate that improves gradually would suggest sloppiness that someone is slowly cleaning
up. One that goes from 4% to complete and stays there is a change in how the data is fetched. The
practical reading for anyone auditing a review tool: ask what its oldest imports look like, not what
its newest ones look like. Old rows are where the shortcuts are still visible.
## Where the line really gets drawn
The most useful thing we know about this subject did not come from reading terms of service. It came
from receiving objections.
Three review platforms have sent JustReview formal notices asking us to stop using their reviews. We
did not argue. On 24 July 2026 we removed the connectors from the codebase, blocked the endpoints,
and deleted the stored data: 23,834 reviews and 73 connector records, in one operation, verified
afterwards by counting the rows that remained. Re-checked while writing this, the count is still
zero. Those sources are gone from the product and they are not coming back.
Now the part that is worth more than the incident itself. All three of those platforms sell their
own review widget. Their objection, whatever its legal framing, was commercial: a competitor was
displaying content they treat as inventory. In the same period we have never received a notice from
Google, whose reviews we display in far greater volume, because Google is not selling a widget for
us to compete with.
That gives you a rule of thumb sharper than anything in the terms themselves. Your exposure when
embedding reviews correlates with whether the source platform competes with you in the display
market, not with how public the reviews are or how many of them you show. Google, Facebook and the
marketplaces where your listing already lives are structurally comfortable with being quoted.
Standalone review platforms whose business model is the widget are structurally not, and the fact
that their reviews are visible to anyone with a browser changes that not at all. We wrote up which
of our sources arrive through owner-authorised APIs and which through licensed providers in
[where our reviews come from](/docs/scraping-reviews-is-it-legal/), including how a platform can ask
us to stop.
## The rules that do not bend
Wherever the reviews came from, four things hold and none of them are negotiable.
Do not edit the text. Fixing a typo is a judgement call; trimming "the delivery was late but the
product is excellent" down to its second half is fabrication with extra steps.
Do not curate by rating. Suppressing everything below four stars is the single most common way a
lawful display becomes an unlawful one, and it is also the reason regulators now look at review
widgets at all. Removing a specific review because it is defamatory, contains someone's phone
number, or is about a different company is a different act with a defensible reason attached.
Keep attribution attached. Author, rating, date, link. If a tool strips any of those, it is not
saving you space, it is removing the thing that makes the display a quotation.
Never invent one. This is obvious, and it is still the largest category of enforcement action in the
sector.
## How we handle it
The reason to run this through JustReview rather than assembling it yourself is that the compliant
shape is the default and you cannot accidentally break it. Google reviews arrive through the
official API after you authorise your own profile, every card renders with the reviewer's name,
their star rating, the date and a link back to the review on Google, and the text is displayed as
written. There is no editing field, because there should not be one. Revoking our access in your
Google account cuts the connection immediately, without asking us.
The same applies to everything else you connect, which matters more than it sounds: 880 of our
accounts hold reviews from more than one platform, and a widget is only as defensible as its
sloppiest source. When a platform tells us to stop, we stop, and the numbers above are what that
looks like in practice rather than in a policy page.
Two honest caveats. This post describes how we built the product and what our data shows; it is not
a legal opinion, and if you operate somewhere with sector-specific advertising rules, health and
finance being the obvious ones, ask someone qualified before you publish. And we can only guarantee
the handling of reviews that come through us. Reviews you paste into a page by hand, from any tool,
carry whatever attribution you gave them.
## The short version
Embedding Google reviews on your own site is legal, Google provides the API that makes it legal, and
the conditions are consent from the profile owner, attribution on every review, and no editorial
hand on the selection. The risk that actually materialises comes from sources that sell widgets, not
from Google, and we have the deleted rows to prove it.
If you want the compliant version without building it,
[create an account](https://app.justreview.co/#/register?utm_source=blog&utm_medium=organic&utm_campaign=is-it-legal-to-embed-google-reviews),
connect your Google profile and put a
[Google reviews widget](/embed-google-reviews-widget-on-website) on your site. The free plan carries
up to 100 reviews without a card, the [pricing page](/pricing) covers the rest, and if Google is
still your only source, [the reviews you already have elsewhere](/blog/how-to-get-reviews-on-your-website/)
are worth collecting under the same rules.
---
## How to put marketplace reviews on your website: Amazon, eBay, Allegro
Source: https://justreview.co/blog/marketplace-reviews-on-your-website/
Summary: Reviews you already earned on Amazon, eBay, Etsy or Allegro can go on your own site. What is possible per platform and what is not.
Ask the internet how to show your Amazon or eBay seller feedback on your own website and you get
back a pile of help-centre articles explaining how marketplace feedback *works*. How buyers leave
it. How the star average is calculated. How to respond to it. Almost nobody answers the actual
question, which is how to take a trading record you spent years building on someone else's platform
and put it on the site you own.
That gap is odd, because for a lot of shops the marketplace profile is the only place with real
social proof. A seller with 4 000 eBay feedbacks and eleven Google reviews has the trust problem
backwards: the proof exists, it is just parked on a domain that competes with them. This post is
about moving it, what is technically possible in 2026, and what is not.
## What each marketplace actually publishes
The only thing that matters technically is whether the profile is readable without a login. That
single fact decides whether a feed can be built and whether it can keep refreshing.
**Amazon** publishes seller feedback on the seller profile page, the one at `/sp?seller=...`. That is
public and it updates. Product reviews are a different story and we will come back to it, because it
is the single biggest piece of misinformation in this category.
**eBay** publishes the feedback profile openly, including the comment text, the rating and the date.
It is the richest marketplace source of the lot, and the one with the most volume per account.
**Allegro** publishes seller ratings on the seller page. For Polish shops this is usually the
largest pile of proof they own, and it converts unusually well when shown outside Allegro, because
the buyer already knows the brand from the marketplace.
**Etsy, AliExpress and Walmart** publish shop-level reviews. **Booksy** and **Booking.com** publish
booking reviews, which are worth separating in your head from retail feedback: they are longer, more
personal and generally better copy.
## Why the obvious workarounds fail
The screenshot is the most common answer and the worst one. It ages the moment a new review lands,
it carries no markup a search engine can read, it is invisible to a screen reader, and every visitor
who has ever seen Photoshop discounts it on sight. A screenshot of praise is not proof, it is a
claim.
Copying the text into a testimonials plugin is the second answer, and it fails more quietly. It
works for a week. Then somebody has to keep doing it, and nobody does, so the page slowly becomes a
museum of 2024. Worse, hand-copied testimonials lose the two things that made them believable in the
first place: the reviewer's name as the platform recorded it and the date. Strip those and you have
written marketing copy in the first person.
The third answer is to connect the profile to a tool that reads it and refreshes it. That is the
only version that survives contact with time, and the rest of this post assumes it.
## The question that decides which tool can do this
Most review widgets are Google widgets with a longer logo list on the pricing page. Before you pick
one, ask a single question: **does it read my seller profile, or does it read a product page?**
Tools built on Google's Places API can show you five reviews per location, because that is what the
API returns. Tools built around one marketplace's product pages break the moment that marketplace
changes its HTML, which happens often and without warning. What you want is a tool that connects to
the *profile* — your shop, your trading record — and stores what it imports, so that a bad week at
the source does not empty your homepage.
Three follow-up questions worth asking, because the answers separate the field fast:
- **Does it store the reviews or proxy them live?** Stored means your widget still works when the
marketplace has a bad night. Proxied means it does not.
- **Does it meter your page views?** Several popular widgets bill by views and go dark when you
exceed them, which is precisely the day you least want an empty box on the homepage.
- **Can you hide individual reviews?** You will want this the first time you see machine-generated
eBay feedback in bulk.
## Doing it with JustReview
The flow is the same for every marketplace, which is the point.
1. Create an account and open [Connectors](https://app.justreview.co/#/connectors).
2. Pick the marketplace and paste the address of your public seller or shop profile. Not a product
link, not a listing — the profile. For Amazon that is the `/sp?seller=` page; for eBay the
feedback profile; for Allegro the seller page.
3. The first import runs and pulls the history it can read. Depending on volume this takes minutes,
not seconds, and it keeps refreshing on a schedule afterwards.
4. Choose a widget. For marketplace feedback the [reviews page and the testimonials
slider](/reviews) both work; ratings tend to be short, so a dense layout reads better than a
large slider with three words in it.
5. Paste one script tag into your site. The same account can hold several sources at once, so your
[Google reviews](/embed-google-reviews-widget-on-website) and your
[eBay feedback](/embed-ebay-reviews-widget-on-website) can appear in one widget or in separate
ones, whichever suits the page.
Per-marketplace detail lives on the source pages:
[Amazon](/embed-amazon-reviews-widget-on-website), [eBay](/embed-ebay-reviews-widget-on-website),
[Etsy](/embed-etsy-reviews-widget-on-website), [Booksy](/embed-booksy-reviews-widget-on-website) and
[AliExpress](/embed-aliexpress-reviews-widget-on-website).
## What is not possible, stated plainly
**Amazon product reviews are gone.** On 5 November 2024 Amazon put its `/product-reviews/` pages
behind a login. Everything that scraped them stopped working that week, ours included, and we can
see the exact date in our own data: product review imports across every Amazon marketplace stop
dead at the start of November 2024. We removed the option from the product rather than let it fail
quietly. If a vendor is still advertising Amazon product reviews in 2026, ask them for a review
imported this month, then watch what happens. Seller feedback is unaffected and still syncs.
**Amazon connections are regional.** One connection covers one region, so a European and a North
American seller account are two connections, not one.
**eBay's automated feedback will come along for the ride.** When a buyer leaves nothing, eBay can
generate feedback on their behalf. It is genuine in the sense that the transaction happened, and
filler in the sense that no human wrote it. Across the accounts we import, it runs into the
thousands. Decide what you want to do with it and use the hide control, rather than finding out
when a visitor reads twenty identical sentences.
**Marketplace sources are not on the free plan.** The free widget is Google and Facebook only.
Marketplace sources begin on the first paid plan at 9 EUR a month, and there is a 7-day trial, so
you can connect the profile and look at the real import before paying. We would rather write that
sentence here than have you discover it after connecting.
## The part most shops miss
Marketplace feedback is not just extra volume, it is *different* volume. A Google review is usually
about the place. Marketplace feedback is about the transaction: dispatch speed, packaging, whether
the item matched the description. That is exactly the anxiety a first-time buyer has on a product
page, which makes marketplace feedback more useful next to a buy button than a five-star "great
service" ever was.
So do not dump it all on the homepage. Put shipping and packaging comments where the shipping
question gets asked, and keep the broader reputation proof near the top of the page. The tool part
of this is ten minutes. The placement is what actually moves the number.