A New Leaf Painting Contractors has painted homes and businesses across Jacksonville and Northeast Florida since 2010. Its website grew right alongside the crews: hundreds of blog posts and paint guides, video stories from customers, and a page for nearly every town the company works in.
Then the site moved to a new platform. The move went badly. This is the story of how we put the structured data back, and why schema markup for contractor website blog posts deserves more of your attention than it probably gets.
Jacksonville is not Raleigh. The lesson travels fine.
Why did a platform move strip the markup from hundreds of blog posts?
Because markup lives in the plumbing, and nobody checks the plumbing.
A visitor looking at an old post after the move saw words and photos. Everything seemed fine. But the code behind the page no longer said what the page was. Hundreds of old addresses were also redirected to the homepage, and pages that search engines still listed were gone.
Markup rarely survives a move by accident. It was written into the old templates, and the new templates did not know about it.
That is the quiet danger of a migration. The loud failures get fixed first. The silent ones sit for months.
What does Google lose when a post stops declaring that it is an article?
It loses a plain statement of fact and has to guess instead.
Article markup tells a search engine: this page is a blog post, here is its headline, here is who published it, here is when. Without it, Google reads the page like a stranger reading a letter with no envelope. It can usually work out the gist. It just has less to go on.
We would not promise you a ranking jump from restoring it. Nobody honest can. What we can say is that you should never make a search engine guess about something you can simply tell it.
For a contractor with years of guides and project write-ups, that is a lot of pages asking to be understood.
Why describe the business once instead of on every page?
Because a business is one thing, and it should have one description.
The old habit is to paste business details into every page's markup. Then the phone number changes, or the insurance limit, and you update forty pages and miss two hundred.
For A New Leaf we described the business once. Every page points back to that single description. The founding year on the state record, the insurance limit, the service area: each fact is written in one place and read from there.
That one choice removes a whole category of future mistakes. Pages cannot disagree with each other when only one of them is the source.
How do breadcrumbs on every page help a site with hundreds of town and job pages?
They draw the map.
A site like this has service pages, town pages, finished job pages, blog posts and video stories. Breadcrumbs say where each one sits: this job is in this town, which is part of this service area, which is part of the site.
We added them to every page, in the markup and not only on screen. A human gets a way back up the tree. A search engine gets the same hierarchy spelled out.
It also keeps the town pages honest. Each one has its own finished jobs and its own map, and never another town's name or a neighbor's job captioned as local. Clear structure and true content work together.
Why must the review figure come from one place?
Because a number that appears twice will eventually say two different things.
A New Leaf's reviews come from Google, Facebook, Houzz and Yelp. We brought them onto one page beside the customer films, each marked with where it was first posted. The review figure shown to a visitor and the figure in the search markup now come from the same place.
Picture the alternative. The page says one thing. The markup says another. Nobody notices, until a search engine does, and decides the whole page is a little less trustworthy.
If you display a rating, the markup should match it exactly. The easiest way to guarantee that is to never type it twice.
How were article markup and business facts kept from drifting across hundreds of pages?
By making the pages unable to drift in the first place.
Every business fact comes from one source. Every post gets its article markup from the same template, filled in from the post itself. We did not rely on anyone remembering to update a field.
That matters most on a big blog. A ten-page site can be proofread. Hundreds of pages cannot. You need a system where the right answer is the default and the wrong answer takes effort.
The same thinking guided the rest of the migration. We traced every address the site had published and made each one answer in a single hop, either to the page that replaced it or to a clean "gone" for thin, near-identical pages that should never have been published.
What did the rebuild change that a customer could actually see?
More than the markup, honestly. Markup is invisible by design, and the customer-facing work is what gave it something good to describe.
- Booking on the site itself. A homeowner takes one of the owner's real open times or asks for a call. Every estimate link opens the same window.
- Finished jobs with their own pages. What the crew found, the prep and repairs, the products and colors, photos of the result, and the HOA approval details neighbors ask about.
- A map of about five hundred past jobs. A homeowner can see whether the crew has painted near them before they call.
- Reviews and films together. Proof in one place.
- Faster pages on a phone. The large PNG hero images now ship as lossless WebP, identical pixel for pixel, so there is no softer picture.
The markup is the part a customer never sees. It is also the part that tells search engines the rest is worth showing. You can read the full build in the A New Leaf Painting case study.
What can a contractor with an older blog check on their own site this week?
You do not need a developer for the first pass. Give it an hour.
- Pick five old blog posts. Choose some from before your last redesign or platform move.
- Run each through a structured data testing tool. Look for article markup. If a post that is plainly an article shows nothing, you have found the gap.
- Check breadcrumbs. Do they appear on every page type, and do they show up in the markup?
- Compare your review figure. Does the number on the page match the number in the markup?
- Look for repeated business facts. If your phone number or license details are typed into many templates, list them. Each one is a future disagreement.
- Click a few old addresses. Anything that lands on your homepage was probably lost in the move.
Speed is worth a look too, and our speed test is a quick way to see how a page loads on a phone.
If the check turns up a mess, that is exactly the kind of work our SEO and analytics team does. But start with the five posts. Tonight, if you can.

