Teach ·2 min read

Schema markup that actually matters (and what to skip)

Structured data tells machines what a page is rather than making them infer it from prose. It's the single most direct signal you can send about your identity and your content.

Most sites either have none or have a plugin generating something technically valid and practically useless.

The five worth implementing

1. Organization or Person

One per site, on the homepage, describing the entity behind it. Name, URL, logo, contact, and sameAs links to your profiles elsewhere.

The sameAs array matters more than people realise. It's how you connect your website to your LinkedIn, YouTube, Instagram and TikTok as one entity rather than five unrelated things.

2. BlogPosting or Article

On every post. Headline, datePublished, dateModified, author, description, image.

dateModified is worth particular attention — freshness affects both ranking and whether a model treats your content as current. If you update a post, update the date. If you don't update posts, don't fake it.

3. BreadcrumbList

On every page below the homepage. Cheap, well-supported, improves how your pages display in results, and gives crawlers explicit hierarchy.

4. FAQPage

On pages with genuine question-and-answer content. This maps directly onto how people phrase queries and how models retrieve answers.

Two rules: the questions must be real questions people ask, and the markup must match visible page content. Marking up FAQs that aren't on the page is against Google's guidelines and it's the kind of shortcut that eventually costs you.

5. Product and Offer

For e-commerce. Price, availability, currency, reviews if genuine. This directly affects how listings appear.

What to skip

Speakable. Limited support, limited benefit for most sites.

HowTo. Support has been reduced considerably. Not worth prioritising.

Review markup on your own site about yourself. Self-serving review schema is against guidelines and risks a manual action.

Every type a plugin offers. More schema is not better schema. Wrong or contradictory markup is worse than none.

Implementation notes

Use JSON-LD. It's Google's stated preference and it's separate from your HTML, so it doesn't break when you change your layout.

One @graph per page if you're outputting multiple types, with @id references linking them. Cleaner than several disconnected blocks.

Generate it, don't hand-write it. On this site every schema block is produced by the build script from the same data that renders the page, so markup and content can't drift apart. Hand-maintained schema always drifts eventually.

Validate it. Google's Rich Results Test and Schema.org's validator. Invalid JSON fails silently — the page renders fine and the markup does nothing.

The mistake worth avoiding

Marking up things that aren't on the page.

It's tempting: add FAQ schema for questions you wish people asked, add review schema for reviews you have elsewhere. This is a guideline violation, and the downside — a manual action — is far worse than the upside.

Markup describes your page. It doesn't augment it.

Where to start

If you have nothing: Organization or Person on the homepage with complete sameAs links, then BlogPosting on your content. Those two cover most of the value.

Add BreadcrumbList and FAQPage next. Stop there unless you're e-commerce.

Illustration of Ismaeel Motala
Ismaeel Motala

Digital marketing and AI specialist in Cape Town. Over $1M a month in managed ad spend; campaigns for Crocs, Under Armour, Ted Baker and Vans. More about me · Get in touch

Keep reading

Related posts

Newsletter

One email when I publish

No digest, no roundup, no "5 AI tools you need". One email when there's something worth reading.

Signup goes live shortly.