Why Your SEO Plugin’s Schema Is Holding You Back (And What I Use Instead)
A workplace-wellbeing provider in Australia came to me with schema markup already in place. Her SEO plugin had generated it automatically. She’d run her pages through Google’s Rich Results Test, and it came back clean — zero errors, zero warnings.
As far as the tools could tell, the job was done. It wasn’t.
If you’ve never heard of schema markup, start with my plain-English guide to what schema markup is and why it matters — this post assumes you know the basics. What I want to talk about here is what happens after you switch the feature on and your plugin reports that everything is fine.
A Clean Validation Report Isn’t a Good One
Google’s Rich Results Test checks one thing: whether your structured data is valid — syntactically correct, properly formatted, free of broken code. It does not check whether your schema is good.
That distinction is the whole story. It’s like spell-check. A document can pass spell-check with zero errors and still be repetitive, vague, and unconvincing — because spell-check doesn’t read for quality. Neither does the validator.
What a clean report won’t tell you: that the same block of code is repeated four times on one page. That your FAQ section is built in a way that Google can’t reliably read. That the person who is your brand has been described to search engines as a first name and a stock photo. None of that throws an error. All of it weakens Google’s understanding of your business.
What I Found Under the Hood
When I opened up that provider’s schema, here’s what her plugin had built — all of it “valid,” none of it flagged:
The block describing her business — name, address, hours, the works — had been copy-pasted four times onto a single blog post. Roughly 120 lines of identical code where a handful would have done the job. Bloat the validator waves straight through.
Her FAQ section listed thirteen questions, but each one was declared on its own instead of grouped into a single list. Google reads a proper list cleanly. It does not reliably read thirteen separate things standing next to each other, hoping to be understood as a group.
The founder — whose experience and reputation are the whole reason clients choose the business — had been reduced to a first name and a generic avatar. One of the company’s strongest assets, and to a search engine, it barely existed.
And the pieces weren’t connected. The services didn’t point to the business that provides them. The pricing field was blank. There were no review ratings. Each block of schema sat in its own corner, technically present, telling Google nothing about how any of it fit together.
What Hand-Coding Changed
I rewrote the structured data by hand, in JSON-LD — the format Google prefers. The result wasn’t a bigger pile of code. It was a smaller, clearer one.
The business got described once, properly, and every other part of the page pointed back to that single description instead of repeating it — those 120 lines became a fraction of that. The thirteen FAQs became one clean list Google could actually read. The founder became a real profile: her actual role, her background, the subjects she’s genuinely an authority on — so the company’s biggest credential finally existed in a language search engines understand. The services connected to the business, to the areas it serves, and to its real reviews.
Here’s the part worth sitting with. The validator reported zero errors before I touched the site, and zero errors after. The number that’s supposed to tell you your schema is fine never moved. Everything that actually mattered did. That’s the trouble with treating a clean report as a finish line — it can be true at the start and true at the end, and tell you nothing about the distance in between.
Where Hand-Coded Schema Actually Goes
Hand-coding schema doesn’t mean editing fragile core files. On a WordPress site, I place it in one of three spots, depending on how the site is built: a snippet manager like WPCode Pro, Elementor’s custom-code feature, or a GeneratePress hook element. Each one drops the code exactly where Google wants it and keeps it cleanly separated from the rest of the page — easy to find, easy to maintain, and safe through theme and plugin updates.
This site is an example. The schema describing Chastain Sites to Google is hand-written and lives in a GeneratePress hook — I don’t run it through a plugin generator. And to be straight with you about where I stand: I run RankMath Pro on my own sites. I just don’t let it write my schema.
When the Plugin Is Actually Fine
I’m not telling you your SEO plugin is broken, or that you should switch the feature off. Plugin-generated schema is a reasonable floor. If your site is small and straightforward — a few pages, nothing especially distinctive to tell Google — the default may genuinely be all you need. That’s an honest answer, and I’ll give it to you if it’s the right one.
Hand-coded schema is a craft, and crafts have a cost. Done carelessly, a single missing bracket can break the whole thing. That’s not a reason to avoid it — it’s the reason to have someone do it who will get it right and keep it right as your site grows. The real question isn’t “plugin or hand-coded.” It’s whether what Google understands about your business is good enough to compete — or just good enough to pass.
Find Out What Google Actually Knows About Your Business
Most business owners have never looked at their structured data. The plugin generated it, the validator said “0 errors,” and that was the end of it. In a single audit, I can tell you whether your schema is genuinely working for you — or just quietly sitting there.
Schedule a free SEO audit. I’ll look at your structured data before we talk, so we start with what’s actually there.
More on how I approach this: my SEO services.

