Add Review structured data to a roofing page so each customer review carries machine-readable rating, author, and date that a search engine can read and may show as a rich result.

Most roofing sites show reviews to visitors but send no Review markup to search engines. Get a free audit that checks your structured data and flags pages eligible for star rich results.
Review schema is a block of structured data that marks up a single customer review on a page, so a search engine can read its rating, author, and text in a machine-readable form. You add it as JSON-LD in the page, separate from the visible review a homeowner sees.
A Review object describes a single testimonial: one author, one rating, one piece of text. It is not the site-wide average.
The schema.org Review type carries the properties Google reads. It sits inside the thing being reviewed, such as a roofing service or the business.
This page covers the markup, not the entity idea behind it. For the concept side see entity SEO for roofers.
Add Review schema because the markup makes a star rating eligible to appear in the search listing, where it influences the click before a homeowner reads anything else.
A Review object uses five core properties: itemReviewed, author, reviewRating, reviewBody, and datePublished. The reviewRating holds its own ratingValue, bestRating, and worstRating inside it.
itemReviewed names the thing being reviewed, such as a roofing service or the business. author names the customer who wrote the review.
A nested Rating object. ratingValue is the score, such as 5. bestRating and worstRating set the scale, usually 5 and 1.
reviewBody holds the review text. datePublished records when the customer left it, in YYYY-MM-DD form.
Place the markup in a JSON-LD script in the page, with the Review nested inside the roofing service it describes. This example marks up one 5-star customer review of a roof replacement.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Roof Replacement",
"provider": {
"@type": "RoofingContractor",
"name": "Summit Roofing Co."
},
"review": {
"@type": "Review",
"author": {
"@type": "Person",
"name": "Mike T."
},
"datePublished": "2026-03-14",
"reviewBody": "Summit replaced our storm-damaged roof in two days and handled the insurance paperwork. The crew was on time and tidy.",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5",
"worstRating": "1"
}
}
}
</script>A roofing page can hold real reviews yet send no markup to search engines, so the listing stays plain. We add valid Review and AggregateRating schema across the site so the stars can show.
Call Now For PricingOr call +1 272-207-3231
Add the markup in four steps: write the JSON-LD, place it in the page that shows the review, attach it to the thing reviewed, then validate it. Lead with JSON-LD, the format Google recommends.
JSON-LD goes in a script tag, usually in the head or near the end of the body. A page builder, an SEO plugin, or a custom HTML block can hold it. The review it describes must also appear on the page for a homeowner to read.
Test the markup with Google's Rich Results Test, which reports whether the page qualifies for a review rich result and lists any errors. Run it on every page that carries the schema.
Paste the URL or the code into Google's Rich Results Test. It shows whether the Review qualifies and flags missing or invalid fields.
The Schema Markup Validator checks the JSON-LD syntax itself. Use it to confirm the structure is well formed before the eligibility test.
After publishing, the Enhancements report in Search Console reports valid and invalid review markup across the site over time.
The two are different objects: Review marks up one customer testimonial, while AggregateRating marks up the overall score and the total count. A roofing page often carries both.
A Review object holds one author, one rating, and one piece of text. Use it to mark up each testimonial a homeowner can read on the page.
An AggregateRating holds the average score and the review count for the whole business or service. See AggregateRating schema for that side.
Mark up only reviews that are genuine, visible on the page, and written by real customers. Google can apply a manual action against a site that marks up reviews it does not actually display.
A click earned from a starred organic listing costs nothing per visit, against 50 to 150 dollars for paid roofing leads. Add valid Review markup and keep the click instead of buying it.
Call Now For PricingOr call +1 272-207-3231
Roofing sites lose review rich results through six recurring markup mistakes, each one fixable in the structured data.
For a roofer serving several cities, each location page should carry its own reviews and its own markup, rather than reusing a single company-wide rating.
Keep the review markup consistent with the rest of the page's structured data, such as the LocalBusiness schema and the location data. Consistent data across the page strengthens local relevance.
No stock photos and no first names without a company. Numbers from named clients, with the charts published.
A brand-new roofing company taken from zero to 9.61K Google impressions in its first 2 months.
Alpha Holistic Roofing
Launch-phase local SEO
Read the case studyA site that flatlined at zero impressions for two months, standing back up at 18.6K impressions in six.
RoofingPros Milwaukee
Recovery and rebuild
Read the case studyRun each roofing page through this checklist to confirm the Review markup is valid and honest before you publish.
Clear answers about Review schema for roofing pages.
We'll check the structured data across your roofing pages, confirm whether your reviews carry valid markup, and compare your listings to your top 3 local competitors.
Claim your free roofing schema audit today. No commitment required.