Skip to content
  • There are no suggestions because the search field is empty.

Custom Product Schema Implementation (with Feefo API)

TABLE OF CONTENTS

 

Introduction

For advanced implementations, you may prefer to build your own Product schema and feed it with data from the Feefo Reviews API rather than relying on an on‑page widget. This approach provides greater control over structured data and can make it easier for Googlebot to read review content directly in the HTML.


Designing Your Product Schema

Your schema should describe a single product or service and include all key attributes plus review data. Google recommends JSON‑LD for structured data, embedded in a <script type="application/ld+json"> tag in the HTML.


A typical Product schema should include:

  • Core product fields such as name, identifiers (for example, skugtinmpn), descriptionimagebrand, and offers (price, currency, availability, URL).

  • An aggregateRating object with ratingValue and reviewCount taken from Feefo’s summary data.
  • review array where each review entry includes authorreviewBodydatePublished, and nested reviewRating with ratingValue

 

Useful resources:

Ensure that the schema appears only on relevant product pages and accurately reflects the real content and reviews shown to users.

Example of a single product page (JSON-LD):

<script id='product_schema' type="application/ld+json">

{
    "@context": "https://schema.org",
    "@type": "Product",
    "@id": "/products/egret-ten-v3-electric-scooter#Product",
    "name": "EGRET-TEN V3 X","gtin13": 4260399795284,"itemCondition": "https://schema.org/NewCondition",
    "sku": "EGR-TEN-BLA",
    "mpn": "EGR-TEN-BLA",
    "image": "https://cdn.shopify.com/s/files/1/0106/0156/2193/products/egret-electric-scooters-egret-ten-v3-x-48v-15628641927249.jpg?v=1598780050",
    "productID": 3112989392977,
    "description": "The EGRET-TEN V3 X UK electric scooter is built to the highest specification and build quality, apparent in everything from the 10\" air-filled tyres that make light work of bumps and potholes, right through to the Samsung li-ion battery, capable of supporting a power output 500W, for up to 25 miles on a single charge. ",


"brand": {
    "@type": "Brand",
    "name": "Egret"
  },
  "aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "5",
"reviewCount":"2"
}, 


"review": [
{"@type": "Review",
"author": "Imogene Ashlock",
"datePublished": "Tue Jun 16 2020 17:00:00 GMT-0700 (Pacific Daylight Time)",
"reviewBody": "I have an Engineering background, own a Tesla and I work in the energy industry, specifically the Mo",
"name": "Imogene Ashlock",
"reviewRating":{
"@type": "Rating",
"bestRating": "5", 
"ratingValue": "5", 
"worstRating": "1"}},
{"@type": "Review",
"author": "Trusted Customer",
"datePublished": "Sun May 31 2020 17:00:00 GMT-0700 (Pacific Daylight Time)",
"reviewBody": "The escooter is the dogs, i love it.",
"name": "Trusted Customer",
    "reviewRating":{
    "@type": "Rating",
    "bestRating": "5", 
    "ratingValue": "5",
    "worstRating": "1"}
}
],


"offers": {
   "@type": "Offer",
    "price": "1338.99",
    "priceCurrency": "GBP",
    "priceValidUntil": "2021-06-07",
    "url": "https:\/\/myscoot.co.uk\/products\/egret-ten-v3-electric-scooter?variant=23620094722129",
    "availability": "https://schema.org/OutOfStock"
  }   
}
</script>

Use the Feefo Reviews API

Use Feefo’s APIs in product mode to populate your schema dynamically:

Populate the JSON‑LD on the server side so that the full Product, AggregateRating and Review data is present in the initial HTML response. This makes it more reliable for Googlebot to read your schema without needing to execute JavaScript. This can be particularly useful in circumstances where there are a lot of reviews on the page.

Schema Property

Feefo API Response Parameter

aggregateRating.ratingValue

rating.rating

aggregateRating.reviewCount rating.product.count
review.author reviews[].customer.display_name
review.reviewBody reviews[].products[].review
review.ratingValue reviews[].products[].rating.rating
review.datePublished reviews[].products[].created_at

Manipulating or skewing your aggregateRating markup could result in Google penalising your rich snippets results.

 

Performance and Caching Considerations

Calling external APIs on every page load can slow down your site and negatively impact SEO. To avoid this:

  • Implement server‑side caching of Feefo API responses and refresh them on a schedule (for example, hourly or daily, depending on review volume).
  • Store aggregated rating and a subset of recent reviews, then regenerate the schema from cached data on each page render.

This approach keeps your Product schema up to date while maintaining fast page load times and a smooth user experience.

 

Validate Your Implementation

After implementing your custom schema:

  • Use Google’s Rich Results Test on sample product URLs to ensure your Product and Review markup is recognised and error‑free.
  • Fix any errors and important warnings, and retest until the page is eligible for Review snippets.

 





Once your pages validate, allow time for Google to recrawl and reindex them; stars may appear within a few days, but in some cases can take longer or may not appear at all if Google chooses not to show a rich result.

Ensure your content meets Google's guidelines for eligibility as rich text content. https://developers.google.com/search/docs/appearance/structured-data/review-snippet#guidelines

We recommend you check the list of products that do not qualify to be promoted on Google’s network and therefore do not qualify for rich snippets in SERP.

 

Summary

Building custom Product schema with the Feefo Reviews API gives you maximum flexibility over how review data is presented to users and search engines. With accurate mapping, sensible caching, and regular validation, this implementation can significantly increase the likelihood and reliability of organic star ratings across your product catalogue.