# 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. ![The Settings screen with the Brand field highlighted, above the review notification options](/docs/docs-img/panel-settings-brand.webp) 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".** ![JustReview panel, the widget Customize screen with the Generate Code for your website button at the bottom](/docs/docs-img/shared-5a1dd0b2.webp) 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
``` ![Screenshot: give the container a class of your choice and pass the same class to the function](/docs/docs-img/adding-multiple-times-the-same-widget-on-page-42fb94ab.webp) 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. ![The Settings screen with the Domain whitelist section highlighted, where you list the domains allowed to show the widget](/docs/docs-img/panel-settings-whitelist.webp) 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. ![The Services section of the Badge widget with the review source toggles and the highlighted Generate Code for your website button](/docs/docs-img/panel-widget-badge-generate.webp) ## 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. ![All reviews with the filter bar and the sortable results table, marked one and two](/docs/docs-img/panel-all-reviews-filters.webp) ## 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. ![The All reviews table with author, date, content, source, rating and the Active toggle for every review](/docs/docs-img/panel-all-reviews.webp) 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). ![The Widgets gallery with all six widget types: Badge, Summary, Testimonials, Counters, Reviews page and Stars](/docs/docs-img/panel-widgets-gallery.webp) 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. ![The JustReview dashboard: total reviews, average rating, new reviews over time, the rating breakdown and tiles for every connected source](/docs/docs-img/panel-dashboard.webp) ## 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. ![The Your sources tiles on the dashboard, with Facebook showing the expired token warning next to healthy sources](/docs/docs-img/panel-dashboard-sources.webp) **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 Settings screen with the Review notifications section highlighted, including the email switch and the weekly or daily frequency](/docs/docs-img/panel-settings-notifications.webp) ## 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. ![The Google Maps connector screen with the two-step Google sign-in instruction](/docs/docs-img/panel-connectors-google.webp) 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. ![The Widgets gallery with all six widget types: Badge, Summary, Testimonials, Counters, Reviews page and Stars](/docs/docs-img/panel-widgets-gallery.webp) 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**. ![The Import from CSV screen explaining the three steps: download the template, fill it with your reviews, upload the file](/docs/docs-img/panel-csv-import.webp) 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. ![The Google Maps connector screen with the two-step Google sign-in instruction](/docs/docs-img/panel-connectors-google.webp) 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. ![The Payments screen comparing the Basic, Ultimate, Pro and Plus plans side by side](/docs/docs-img/panel-payments.webp) **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. ![The Settings screen with the Brand field highlighted, above the review notification options](/docs/docs-img/panel-settings-brand.webp) 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. ![The JustReview Badge settings with the Generate Rich Snippet Data switch highlighted, next to styles and border radius](/docs/docs-img/panel-widget-badge.webp) 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 | ![The Google Maps connector screen with the two-step Google sign-in instruction](/docs/docs-img/panel-connectors-google.webp) ## 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. ![The All reviews table with author, date, content, source, rating and the Active toggle for every review](/docs/docs-img/panel-all-reviews.webp) ## 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".** ![JustReview panel, the widget Customize screen with the Generate Code for your website button at the bottom](/docs/docs-img/shared-5a1dd0b2.webp) ![The Copy code for your website dialog with three code blocks: the library, the widget configuration and the target div](/docs/docs-img/shared-a8da5033.webp) 2. **Open your GoDaddy dashboard: Website + Marketing → Website Builder → Manage.** ![Screenshot: open your GoDaddy dashboard: Website + Marketing → Website Builder → Manage](/docs/docs-img/godaddy-code-embed-instruction-a12bec62.webp) 3. **Click Edit Site.** ![Screenshot: click Edit Site](/docs/docs-img/godaddy-code-embed-instruction-2c1a7e0b.webp) 4. **Open Site Settings.** ![Screenshot: open Site Settings](/docs/docs-img/godaddy-code-embed-instruction-3b46ae08.webp) 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. ![Screenshot: go to the Site-wide Code tab and paste part 1 and part 2 before the closing body tag](/docs/docs-img/godaddy-code-embed-instruction-ae3840a8.webp) 6. **Back in Website Builder, add an HTML element where the widget should appear and paste part 3.** ![Screenshot: back in Website Builder, add an HTML element where the widget should appear and paste part 3](/docs/docs-img/godaddy-code-embed-instruction-95ab595f.webp) 7. **Publish the site.** ![Screenshot: publish the site](/docs/docs-img/godaddy-code-embed-instruction-78deaca2.webp) 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. ![The JustReview Settings screen showing User ID, email, brand and the domain whitelist field](/docs/docs-img/shared-9d369bb0.webp) 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. ![Screenshot: enable the option in the JustReview Page widget](/docs/docs-img/how-to-scroll-to-and-open-comment-form-in-justreview-page-ebb42e2a.webp) 2. **Add `#leave-review` to the end of your page URL.** ``` https://yourwebsite.com/reviews#leave-review ``` ![Screenshot: add #leave-review to the end of your page URL](/docs/docs-img/how-to-scroll-to-and-open-comment-form-in-justreview-page-28e6878f.webp) 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. ![Screenshot: 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...](/docs/docs-img/how-to-use-the-filter-by-page-language-function-19aaa913.webp) ## 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. ![Screenshot: the settings combine. Pinning de plus Include ENG shows German and English reviews together](/docs/docs-img/how-to-use-the-filter-by-page-language-function-8d7ee9d5.webp) 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**. ![Screenshot: build your widget in the dashboard](/docs/docs-img/other-sites-universial-tutorial-056f07d4.webp) 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. ![Screenshot: check the live preview](/docs/docs-img/other-sites-universial-tutorial-9561d1e8.webp) 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). ![Screenshot: pick the review sources to display](/docs/docs-img/other-sites-universial-tutorial-f2750574.webp) 4. **Click "Generate Code for your website".** ![Screenshot: click "Generate Code for your website"](/docs/docs-img/other-sites-universial-tutorial-3163f5d5.webp) 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. ![Screenshot: copy the three parts of the snippet](/docs/docs-img/other-sites-universial-tutorial-2fed8263.webp) 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".** ![JustReview panel, the widget Customize screen with the Generate Code for your website button at the bottom](/docs/docs-img/shared-5a1dd0b2.webp) ![The Copy code for your website dialog with three code blocks: the library, the widget configuration and the target div](/docs/docs-img/shared-a8da5033.webp) 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`: ![Screenshot: add the library to your theme templates (screen 1)](/docs/docs-img/prestashop-code-embed-instruction-93b18cf4.webp) `head.tpl`: ![Screenshot: add the library to your theme templates (screen 2)](/docs/docs-img/prestashop-code-embed-instruction-f1805b5e.webp) 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. ![The JustReview Settings screen showing User ID, email, brand and the domain whitelist field](/docs/docs-img/shared-9d369bb0.webp) 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".** ![JustReview panel, the widget Customize screen with the Generate Code for your website button at the bottom](/docs/docs-img/shared-5a1dd0b2.webp) ![The Copy code for your website dialog with three code blocks: the library, the widget configuration and the target div](/docs/docs-img/shared-a8da5033.webp) 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. ![Screenshot: add part 2 to the custom JavaScript field](/docs/docs-img/shoper-code-embed-instruction-ddbab415.webp) 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. ![Screenshot: add part 1 to footer.tpl](/docs/docs-img/shoper-code-embed-instruction-b6915d66.webp) 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. ![Screenshot: paste part 3 where the widget should appear (screen 1)](/docs/docs-img/shoper-code-embed-instruction-e4b82755.webp) ![Screenshot: paste part 3 where the widget should appear (screen 2)](/docs/docs-img/shoper-code-embed-instruction-4e6dd584.webp) The widget only renders on domains listed in your [Settings](https://app.justreview.co/#/settings). Your shop address must match the whitelist entry. ![The JustReview Settings screen showing User ID, email, brand and the domain whitelist field](/docs/docs-img/shared-9d369bb0.webp) 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".** ![JustReview panel, the widget Customize screen with the Generate Code for your website button at the bottom](/docs/docs-img/shared-5a1dd0b2.webp) ![The Copy code for your website dialog with three code blocks: the library, the widget configuration and the target div](/docs/docs-img/shared-a8da5033.webp) 2. **In the Wix Editor, add an HTML Box, then click Edit Code.** ![Screenshot: in the Wix Editor, add an HTML Box, then click Edit Code (screen 1)](/docs/docs-img/wix-code-embed-instruction-1a280476.webp) ![Screenshot: in the Wix Editor, add an HTML Box, then click Edit Code (screen 2)](/docs/docs-img/wix-code-embed-instruction-7d121ace.webp) 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. ![Screenshot: paste all three parts of the code into the box](/docs/docs-img/wix-code-embed-instruction-5fb99ddc.webp) 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".** ![JustReview panel, the widget Customize screen with the Generate Code for your website button at the bottom](/docs/docs-img/shared-5a1dd0b2.webp) ![The Copy code for your website dialog with three code blocks: the library, the widget configuration and the target div](/docs/docs-img/shared-a8da5033.webp) 2. **Open the theme editor: Appearance → Theme File Editor.** ![Screenshot: open the theme editor: Appearance → Theme File Editor](/docs/docs-img/wordpress-code-embed-instruction-eb7529b4.webp) 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. ![Screenshot: edit footer.php and paste part 1 and part 2 before the closing body tag](/docs/docs-img/wordpress-code-embed-instruction-42ca6f94.webp) 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. ![Screenshot: paste part 3 into the template file at the spot where the widget should show up](/docs/docs-img/wordpress-code-embed-instruction-9d13bda5.webp) Add a **Custom HTML** block (or switch the classic editor to the **Text** tab) and paste part 3 there. ![Screenshot: add a Custom HTML block (or switch the classic editor to the Text tab) and paste part 3 there](/docs/docs-img/wordpress-code-embed-instruction-8c0937f8.webp) Add an **HTML** widget to your layout, then paste part 3 into it. ![Screenshot: add an HTML widget to your layout, then paste part 3 into it (screen 1)](/docs/docs-img/wordpress-code-embed-instruction-52357a2f.webp) ![Screenshot: add an HTML widget to your layout, then paste part 3 into it (screen 2)](/docs/docs-img/wordpress-code-embed-instruction-e38ac421.webp) ![Screenshot: add an HTML widget to your layout, then paste part 3 into it (screen 3)](/docs/docs-img/wordpress-code-embed-instruction-0b5c9feb.webp) Divi needs the three parts split across different places. 1. Add a **Code** module inside a new section and paste your container `
`. ![Screenshot: add a Code module inside a new section and paste your container div (screen 1)](/docs/docs-img/wordpress-code-embed-instruction-d9e21d83.webp) ![Screenshot: add a Code module inside a new section and paste your container div (screen 2)](/docs/docs-img/wordpress-code-embed-instruction-d045c112.webp) ![Screenshot: add a Code module inside a new section and paste your container div (screen 3)](/docs/docs-img/wordpress-code-embed-instruction-58dffd83.webp) 2. Add the library files (part 1). ![Screenshot: add the library files (part 1)](/docs/docs-img/wordpress-code-embed-instruction-f3571f92.webp) 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. ![The JustReview Settings screen showing User ID, email, brand and the domain whitelist field](/docs/docs-img/shared-9d369bb0.webp) ![The Testimonials widget running on a live shop page: a carousel of Google and eBay reviews above the footer](/docs/docs-img/shared-68345e36.webp) 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
| Tool | Free plan | Views metered on free | Cheapest paid | |---|---|---|---| | **Featurable** | 1 widget, 15 reviews, 1 Google location | **No** | 29 USD / month, billed yearly only | | **JustReview** | 100 reviews, Google + Facebook, unlimited views | **No** | 9 EUR / month | | **SociableKit** | 1 source, 1 widget, 2 000 views | Yes | 10 USD / month, +5 USD per extra source | | **Elfsight** | 1 widget, **200 views** | Yes | 6 USD / month (4 USD billed yearly) | | **EmbedSocial** | 1 source, **500 page views**, 5 reviews shown | Yes | 24 EUR / month billed yearly (29 monthly) | | **Tagembed** | 1 feed, **500 views**, refresh every 4 days | Yes | 19 USD / month | | **Trustindex** | Basic widgets, 25 styles | No published cap | 65 USD / year, annual only |
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:
| Month imported | Product reviews | Accounts receiving | |---|---|---| | Jan 2024 | 6,994 | 15 | | Feb 2024 | 14,075 | 27 | | Mar 2024 | 1,904 | 15 | | Apr 2024 | 2,547 | 13 | | Jun 2024 | 3,414 | 12 | | Jul 2024 | 982 | 13 | | Aug 2024 | 664 | 15 | | Sep 2024 | 760 | 12 | | Oct 2024 | 857 | 13 | | Nov 2024 | 105 | 7 | | Dec 2024 onward | 0 | 0 |
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:
| Marketplace | Seller feedback stored | Accounts | Last successful import | |---|---|---|---| | amazon.de | 12,875 | 27 | 16 Aug 2026 | | amazon.co.uk | 12,196 | 26 | 16 Aug 2026 | | amazon.com | 9,256 | 29 | 16 Aug 2026 | | amazon.it | 2,806 | 15 | 15 Aug 2026 | | amazon.es | 1,406 | 13 | 15 Aug 2026 | | amazon.fr | 1,252 | 11 | 10 Aug 2026 | | amazon.ca | 617 | 11 | 9 Aug 2026 | | .nl, .pl, .se, .com.be, .com.mx, .com.tr, .com.br | 235 | 14 | 28 Jul 2026 |
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.
| Framed URL | What the browser did | Bytes of content | |---|---|---| | `search.google.com/local/reviews?placeid=…` | Refused, `X-Frame-Options: sameorigin` | 0 | | `google.com/maps/place/…` | Refused, `X-Frame-Options: sameorigin` | 0 | | `google.com/search?q=…+reviews` | Refused, `X-Frame-Options: sameorigin` | 0 |
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.
| Page | Requests | Wire bytes | Library downloads | API calls | |---|---|---|---|---| | One widget | 9 | 227,603 | 1 | 1 | | Two widgets | 10 | 235,098 | 1 | 2 |
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:
| Stars | Google reviews | No text at all | Silent share | |---|---|---|---| | 3 | 7,983 | 4,178 | 52.3% | | 4 | 28,645 | 14,953 | 52.2% | | 2 | 3,559 | 1,128 | 31.7% | | 5 | 328,944 | 100,964 | 30.7% | | 1 | 14,602 | 2,981 | 20.4% | | **All** | **383,733** | **124,204** | **32.4%** |
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:
| Platform | Hosts answering | Share of answers | |---|---|---| | WordPress (no shop) | 114 | 24.4% | | WooCommerce | 90 | 19.3% | | Shopify | 37 | 7.9% | | PrestaShop | 23 | 4.9% | | Squarespace | 18 | 3.9% | | Duda | 14 | 3.0% | | Ecwid or Shopware | 14 | 3.0% | | Magento | 13 | 2.8% | | BigCommerce | 11 | 2.4% | | GoDaddy | 5 | 1.1% | | Webflow | 4 | 0.9% | | Shoper | 3 | 0.6% | | IdoSell | 2 | 0.4% | | **Joomla** | **2** | **0.4%** | | Wix | 2 | 0.4% | | Drupal | 1 | 0.2% | | No signature | 137 | 29.3% |
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.
| Platform | Hosts with a live widget | |---|---| | WooCommerce | 120 | | WordPress without WooCommerce | 82 | | Shopify | 43 | | PrestaShop | 16 | | Squarespace | 16 | | Magento | 11 | | BigCommerce | 10 | | Duda | 7 | | Webflow | 5 | | Shoper | 3 | | Joomla, Wix, GoDaddy, Drupal, IdoSell, Weebly | 9 together | | No recognisable signature | 127 |
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.
| Platform | Accounts | Google | Facebook | eBay | Amazon | Any marketplace | |---|---|---|---|---|---|---| | Shopify | 19 | 47% | 47% | 42% | 32% | 63% | | PrestaShop | 19 | 68% | 63% | 16% | 11% | 42% | | WooCommerce | 83 | 78% | 36% | 6% | 7% | 17% | | No signature | 84 | 73% | 39% | 5% | 5% | 14% | | WordPress | 58 | 79% | 48% | 0% | 3% | 7% | | Magento | 10 | 80% | 50% | 0% | 0% | 0% |
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.
| Widget | All sources ticked | Google only | Share of the 50,000 allowance | |---|---|---|---| | Testimonials slider | 2,129 characters | 1,623 | 4.3% | | Reviews page | 1,709 | 1,203 | 3.4% | | Summary box | 1,293 | 787 | 2.6% | | Ratings strip | 1,214 | 708 | 2.4% | | Floating badge | 1,206 | 700 | 2.4% | | Stars line | 925 | 419 | 1.9% |
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.
| Window | Webflow container | Card width | Cards in view | Block height | |---|---|---|---|---| | 1440 px | 940 px | 257 px | 3 | 784 px | | 1200 px | 940 px | 257 px | 3 | 784 px | | 1024 px | 940 px | 257 px | 3 | 784 px | | 1023 px | 940 px | 400 px | 2 | 784 px | | 991 px | 728 px | 294 px | 2 | 754 px | | 767 px | 728 px | 294 px | 2 | 754 px | | 640 px | 640 px | 250 px | 2 | 754 px | | 600 px | 600 px | 230 px | 2 | 764 px | | 599 px | 599 px | 489 px | 1 | 754 px | | 479 px | 479 px | 369 px | 1 | 754 px | | 375 px | 375 px | 321 px | 1 | 754 px |
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.
| Box width | Widget height | Set the box to | Reviews visible side by side | |---|---|---|---| | 1200 px | 857 px | 880 px | 3 | | 980 px | 827 px | 850 px | 2 | | 760 px | 872 px | 890 px | 2 | | 600 px | 872 px | 890 px | 2 | | 480 px | 902 px | 920 px | 1 | | 375 px | 902 px | 920 px | 1 | | 320 px | 932 px | 950 px | 1 |
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.
| Box width | Review collection banner | Slider block | All reviews button | Margins | Total | |---|---|---|---|---|---| | 1200 px | 85 px | 584 px | 64 px | 124 px | 857 px | | 980 px | 85 px | 554 px | 64 px | 124 px | 827 px | | 760 px | 130 px | 554 px | 64 px | 124 px | 872 px | | 480 px | 160 px | 554 px | 64 px | 124 px | 902 px | | 320 px | 190 px | 554 px | 64 px | 124 px | 932 px |
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:
| File | Uncompressed | Over the wire (Brotli) | |---|---|---| | `justreview.js` | 487 KB | **128 KB** | | `justreview.css` | 110 KB | **15 KB** |
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.
| Sources connected | Accounts | Share | |---|---|---| | 1 | 2,772 | 77.5% | | 2 | 615 | 17.2% | | 3 | 110 | 3.1% | | 4 | 40 | 1.1% | | 5 or more | 42 | 1.2% |
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:
| Year imported | Google reviews | Missing a source link | |---|---|---| | 2020 | 31,477 | 30,191 | | 2021 | 46,442 | 0 | | 2022 | 122,023 | 0 | | 2023 | 69,287 | 0 | | 2024 | 46,314 | 0 | | 2025 | 39,648 | 0 | | 2026, to 14 August | 28,629 | 0 |
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.