Why I Stopped Letting Plugins Handle My Schema Markup
Every WordPress site I have worked on starts with a schema problem. Not because schema is hard. Because everyone's plugins generate schema differently, and most generate too much of it.
I had a client whose product pages had four different Product schemas on them. One from the theme. One from the SEO plugin. One from the affiliate plugin. One from a "rich snippets" plugin someone installed three years ago and forgot about. Google was confused. The product was not getting rich results. Nobody could figure out why.
The fix took twenty minutes. We turned off three of the four. We rebuilt the remaining one by hand. Within a week the product showed up with star ratings, price, and stock status in search.
What Schema Actually Does
Schema markup is structured data. You add it to your page in JSON-LD format, and it tells search engines what your content is about in a structured way. Without schema, Google has to guess your page is a recipe by reading the words. With schema, you tell it directly: this is a recipe, here are the ingredients, here is the cook time, here is the rating.
That extra clarity is what unlocks rich results. Star ratings under product pages. Recipe cards in mobile results. Event listings with dates. FAQ accordions. Job posting cards. Each of those is a different schema type. And each one has its own required fields, recommended fields, and Google-specific quirks.
The Two Schemas Every Niche Blog Needs
If you run a niche blog and you do nothing else, set up two things. First, an Organization schema on your home page that tells Google your name, logo, and social profiles. Second, an Article or BlogPosting schema on every post with at minimum the headline, author, date published, and featured image.
Those two cover 90% of what Google needs to display your content properly. Everything else is optimisation on top of that base.
The Affiliate Site Stack
For affiliate sites, the schema stack is different. Your money pages need Product schema with offers and aggregate ratings. Your roundup posts need an ItemList wrapping multiple Products. Your review posts need Review schema. Each one is doing a different job. Get them right and your snippets in search take up twice the screen space of your competitors.
I used to do all this through plugins. The plugins would add some of the fields automatically and skip others. The output was inconsistent. Some pages would show stars. Some would not. There was no obvious reason.
Why I Build Schema Manually Now
This generator started as my own internal tool. I needed something that would let me pick the schema type, fill in the fields I cared about, and get clean JSON-LD I could paste into a code snippets plugin or directly into the theme. No bloat. No surprise fields. Just what I told it to include.
The benefit is control. When something does not show up in rich results, I know exactly what's in my schema because I wrote it. Debugging takes minutes instead of hours. And when Google updates its requirements (which happens twice a year on average), I just update my schema templates instead of waiting for a plugin to push an update.
The One Thing That Trips Most People Up
The content in your schema needs to match what is visible on the page. If your Product schema says the price is $99 but the visible price on the page is $149, Google will eventually catch that and demote you. Same with ratings, descriptions, and dates. Schema is not a place to make claims. It is a place to label claims you are already making in your content.
Use this tool to generate clean schema for whatever type your page is. Validate it with Google's Rich Results Test before you publish. Then come back in two weeks and watch your snippets in search start looking different from the competition.