Thanks to our product widget integration, Avis Vérifiés lets you natively embed the structured data needed to display Rich Snippets (rich results) in organic search results.
However, you may have temporarily noticed a drop in the number of valid review snippets in your Search Console, or a decline — or even the disappearance — of the star ratings shown under your product page links in search results (SERP)?
Our widget is built on a JavaScript script. Google handles this technology in a specific way: it must be executed by a rendering engine before its content can be read.
Google may not always execute the JavaScript of our product widget, and therefore does not see the structured data it contains, which can prevent Rich Snippets (stars, number of reviews, review snippets) from being displayed.
This behavior is random and has not been the subject of any official communication from Google.
Beyond Google, this same mechanism now affects conversational search engines and AI assistants (ChatGPT, Perplexity, Google AI Overviews, etc.). These tools rely on your pages' raw HTML and do not execute our widget's JavaScript: your ratings, your reviews and the review summary may therefore not be indexed.
This is now the main reason to embed JSON-LD structured data directly in the HTML code of your product pages: making your reviews readable both by Google (Rich Snippets) and by AI search engines, regardless of whether JavaScript is executed.
So, to guarantee permanent visibility of your structured data, we recommend that you manually implement JSON-LD structured data directly in the HTML code of your product pages.
This integration relies on our Published API, and this guide walks you step by step through enriching your product pages with JSON-LD structured data that complies with Google's requirements.
As noted in the official Google documentation, having correct, well-formatted structured data on your page does not guarantee a 100% rich display in search results. This display remains algorithmic, based on rules controlled solely by the search engine.
Prerequisites
- A valid OAuth2 client_id / client_secret (to be generated in your Avis Vérifiés account)
- A product variation ID (product_variation_id) for each product on your site. (The reference of the product for which you receive reviews.)
Disabling the product widget's Rich Snippets
- From the left-hand side menu, click
Review display, then Integrate my widgets.
- Click the
small pencil next to the product widget of your choice.
- In the advanced settings, uncheck the Rich Snippets activation.
Step-by-step integration guide
Retrieve the pre-packaged JSON-LD
A new dedicated endpoint of the Published API (learn more about the Published API) directly returns the already-packaged JSON-LD markup (average rating, number of reviews and, where applicable, individual reviews), compliant with Google's requirements.
You therefore no longer have anything to format yourself: simply retrieve the API response and insert it server-side into the HTML of your product page, between the <script type="application/ld+json"> … </script> tags. This is the simplest and least error-prone method.
URL
https://api.skeepers.io/verified-reviews/v1/published/products/structured-datasExample of the response obtained (JSON format):
{
"ratings": {
"@context": "https://schema.org",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.3,
"reviewCount": 12,
"bestRating": 5,
"worstRating": 1,
"itemReviewed": {
"@id": "https://www.example.com/p/blue-widget"
}
}
},
"reviews": {
"@context": "https://schema.org",
"review": [
{
"@type": "Review",
"reviewBody": "Great product, exactly as described!",
"datePublished": "2024-06-24T15:12:31Z",
"reviewRating": {
"@type": "Rating",
"ratingValue": 5,
"bestRating": 5,
"worstRating": 1
},
"author": {
"@type": "Person",
"name": "John D."
},
"itemReviewed": {
"@id": "https://www.example.com/p/blue-widget"
}
}
]
},
"reviewSummary": {
"@context": "https://schema.org",
"review": {
"@type": "Review",
"reviewBody": "Customers love the build quality and value, with occasional notes on delivery times.",
"datePublished": "2024-06-24T15:12:31Z",
"author": {
"@type": "Organization",
"name": "Skeepers"
},
"itemReviewed": {
"@id": "https://www.example.com/p/blue-widget"
}
}
}
}Insert this block as-is into the <head> or just before the closing </body> tag of your product page. Remember to keep a cache refreshed daily (see Best practices) rather than calling the API on every page load.
To avoid
JavaScript injection on your site, because Google may not see or may poorly index this data.
Although it is technically possible to inject structured data via front-end JavaScript (for example with React, Vue or other frameworks), this approach is less reliable because:
- Google may not fully execute your JavaScript, or may not execute it at all, depending on page load speed and crawl budget.
- Structured data loaded asynchronously may be missed or delayed in indexing.
- You may get inconsistent results depending on the products or updates.
Best practices
- Generate and embed the structured data server-side, directly in the HTML, before the page is sent to the browser.
- When Googlebot or other search engine crawlers access your page, the structured data is already present in the raw HTML — which makes it easy and reliable to index.
Example : Include the <script type="application/ld+json"> block in the HTML template rendered by your backend, for example in PHP, Node.js, Python (Django, Flask), Ruby, etc. - Only one "Product" tag per page is allowed for Rich Snippets to work correctly.
- Do not call the API on every page load. The Published API is subject to rate limiting. Too many calls trigger 429 Too Many Requests errors and can leave your pages without their markup. Set up a server-side cache refreshed once a day: for review data, this frequency is more than enough.
Testing data validation
Use the Google Rich Results Test tool to check that the structured data is correct and properly detected.