Schema for a local roofing business.
The types that matter, where they go, and how to check they are actually valid.
What to implement
Six blocks cover nearly everything a roofing site needs.
Getting it right
Write it as JSON-LD, not as microdata scattered through the markup, and never render it with a script. Keep every claim consistent with what is visible on the page and with the Business Profile. Schema that contradicts the page is worse than none, because it undermines the attribution it was meant to establish.
The failure that is always consistency
A different phone format in the schema than on the page. An address that has not been updated since the office moved. A service area listing suburbs the page never mentions. Hours that contradict the profile. Each one is clerical, each one is invisible until someone checks, and collectively they are the most common reason a technically complete schema implementation does nothing.
How to validate
Four checks, before launch and again after.
What schema does not do
It is not a ranking lever on its own, and it will not rescue a page that answers nothing. What it does is remove guesswork about who is answering, what they do, and where, which matters more when an answer appears without a click. Treat it as attribution infrastructure rather than an optimisation.
Where it fits in a build
Specified per template in the blueprint, written by hand, validated before launch, and re-checked in the post-launch crawl. That is deliberate: schema added afterwards by a plugin tends to duplicate the organisation block, contradict the page, and quietly break the next time the theme updates.
Re-validating after a theme or template change
Schema breaks silently. A template edit that moves a heading, a plugin update that changes how the head renders, or a builder update that re-wraps a section can strip a block or duplicate it, and nothing on the page looks different.
What breaks most often
Two things. Duplicate organisation blocks, where a plugin adds its own alongside the hand-written one and the two disagree about the phone number or the address. And FAQPage blocks left behind after the visible questions were edited or removed, which asserts content the page no longer contains.
Keep a record of what was implemented
A one-page note listing each template, the schema types on it, and the date it was last validated. It takes ten minutes to write and it is the difference between checking five URLs after an update and guessing. On a rebuild here that note is part of the handover, alongside the blueprint and the query map.
Related guides.
The setup that drives enquiries without ad spend, and the clerical errors that quietly cap a listing.
Dedicated local pages outperform one generic service page. Thin copies of each other do not.
City pages, Google Business Profile, storm content, and what actually moves map-pack visibility for a roofer.
See what your market rewards.
$2,500, and you get the city-by-city order to build in.