{ }

Service 06 · Entities

Schema Markup & Structured Data

JSON-LD generated from your data, modelled as a connected entity graph and validated on every deploy.

Most schema markup services paste a plugin’s defaults or hand-write JSON-LD that drifts the moment a price changes. We treat structured data as code: template-generated from the same source as your visible content, connected through stable @id references, and tested in CI so it never silently breaks.

JSON-LD

Fixed scope

Remote · UK & EU

entity-graph.yml

ENTITIES

Organization, WebSite, Product, Article, Person

TEMPLATES

one generator per page type, not per URL

GRAPH

stable @id references across the site

PARITY

markup matches visible price, stock & author

CI

schema validated on every pull request

Sound familiar?

Signs your structured data needs engineering.

Search Console shows thousands of “Missing field” and “Invalid value” warnings that nobody owns.

Product rich results show a price or stock status that no longer matches the page.

Three plugins each output their own Organization block — with three different names.

Markup was hand-written once and hasn’t been touched since the last redesign.

Merchant listing eligibility dropped after a theme or app update, and nobody noticed for weeks.

Your authors, brands and products exist on the site but aren’t connected as entities anywhere.

The difference

Schema as code, not copy-paste.

Structured data is a machine-readable description of what a page is about. Done well, it makes your products, articles and organisation unambiguous to search engines and eligible for rich results.

Done badly, it is a liability. Hand-written JSON-LD rots: prices change, products go out of stock, authors leave, and the markup keeps asserting the old facts. Google’s guidelines require structured data to reflect the visible content of the page, and mismatches can cost you rich result eligibility or even trigger a manual action. Plugins help, but they generate generic markup that rarely models how your business actually fits together.

We build JSON-LD the way you build any other part of the front end — as templated output from your product database, CMS or commerce API, with tests. For large catalogues that work sits alongside our ecommerce technical SEO; on React or Next.js sites, where markup is often injected client-side, see JavaScript SEO. And if you don’t yet know what’s broken, a technical SEO audit maps structured data errors across every template.

What’s included

Eight parts of a structured data system.

From entity model to monitoring — scoped to the page types that matter for your business.

01

Entity modelling

A map of the things your site is about — organisation, brands, products, people, articles — and how they relate, before any code is written.

02

@id graph architecture

Stable identifiers so every page references the same Organization, WebSite and author entities instead of redefining them.

03

Product & Offer schema

Product, Offer, ProductGroup and ratings with price, availability, shipping and returns details for merchant listings.

04

Article & author markup

Article or BlogPosting linked to Person entities with sameAs profiles, so authorship is explicit and consistent.

05

Organization & WebSite

One canonical Organization entity with logo, contact points and sameAs, plus WebSite markup referenced from every page.

06

Breadcrumbs, video & events

BreadcrumbList on every hierarchical template, plus VideoObject or Event where the content genuinely warrants it.

07

Validation & CI gates

Automated tests that fail the build when required properties are missing or markup disagrees with the rendered page.

08

Monitoring

Search Console enhancement reports and scheduled crawls tracked over time, so regressions are caught in days, not quarters.

How it works

From entity map to tested output.

Deliverables

Entity model & @id map

JSON-LD specification per template

Generator code or reviewed pull requests

CI validation tests

Search Console monitoring setup

Handover docs for your dev team

01

Inventory & model

We crawl every template, extract the markup that exists today and map the entities your site describes — noting conflicts, duplicates and gaps against what Google actually supports.

02

Specify per template

For each page type we define the schema types, required and recommended properties, and the exact data source for every field — CMS field, product API or computed value.

03

Implement as code

We write the generators with your team or review their pull requests: server-rendered JSON-LD built from the same data that renders the visible page.

04

Validate & monitor

Tests run in CI against rendered output. After release we track Search Console enhancement reports and rich result eligibility per template.

What changes

Structured data stops being a one-off SEO task and becomes a tested part of your codebase — accurate when prices change, consistent across templates, and owned by your developers.

Sample output

JSON-LD that’s generated and tested.

A product template’s output, and the validation report that runs against it on every pull request.

product.jsonld · illustrative

{

"@context": "https://schema.org",

"@type": "Product",

"@id": "https://shop.example/p/ls-0142#product",

"name": "Linen Shirt",

"sku": "LS-0142",

"brand": { "@id": "https://shop.example/#brand" },

// generated from the catalogue API, never hand-written

"offers": {

"@type": "Offer",

"price": "59.00",

"priceCurrency": "GBP",

"availability": "https://schema.org/InStock"

}

}

✓ validated in CI · price matches rendered page

validation-report · sample

Product

✓ valid

Offer

✓ valid

AggregateRating

⚠ missing reviewCount

BreadcrumbList

✓ valid

3 passed · 1 warning

→ ticket raised, build continues

Beyond rich results

Structured data for AI search & entities.

Rich results are the visible payoff, but the longer-term value of structured data is disambiguation. Search engines and AI systems build graphs of entities and relationships; clean, consistent markup with sameAs links to authoritative profiles helps them attribute your products, people and brand correctly.

ENTITY SEO

Entity understanding

A connected @id graph tells machines that the author of this article is the same person as on your About page, and that this product belongs to this brand. That consistency supports how your entities are understood in AI-driven search — though no markup guarantees a citation, and we won’t pretend otherwise.

HONEST LIMITS

What schema won’t do

Google now shows FAQ rich results only for well-known government and health sites, and HowTo rich results have been retired. We still use FAQPage where it accurately describes content, but we won’t sell it as extra SERP space. We prioritise types with live, documented features: Product, merchant listings, Article, Breadcrumb, Video and Event.

Who it’s for

Who schema engineering is for.

ECOMMERCE

Catalogues chasing merchant listings

Stores that need accurate Product and Offer data across thousands of SKUs, in sync with feeds and stock levels.

PUBLISHERS

Content sites with real authors

Blogs and publishers who want articles, authors and topics modelled as connected entities, not isolated snippets.

DEV TEAMS

Teams replacing plugin markup

Engineering teams who want structured data owned in code, reviewed in pull requests and tested like everything else.

Investment

Fixed scope, quoted upfront.

Pricing depends on the number of templates, data sources and whether we write the code or review yours. After a 30-minute scoping call you’ll receive a fixed quote — no hourly billing, no surprises.

Get a fixed quote →

FAQ

Schema markup questions.

Anything else? Ask us directly — we reply within two working days.

What is schema markup and why does it matter for SEO?

Schema markup is structured data, usually JSON-LD, that describes a page’s content using the schema.org vocabulary. It makes pages eligible for rich results such as product prices, availability and review stars, and helps search engines understand which entities a page is about. It is not a direct ranking factor, but it shapes how you appear and how accurately you are understood.

Why JSON-LD rather than microdata?

JSON-LD is Google’s recommended format. It sits in a single script block separate from your HTML, so it can be generated from data, tested in isolation and changed without touching visual markup. Microdata ties structured data to presentation and tends to break during redesigns.

Do FAQ and HowTo rich results still work?

Largely, no. Since 2023 Google shows FAQ rich results only for well-known, authoritative government and health websites, and HowTo rich results have been removed. FAQPage markup is still valid schema.org and can help describe content, but it should not be implemented in the expectation of extra search features.

Can a plugin like Yoast or a Shopify app handle this?

Plugins give a reasonable baseline for Organization, WebSite, Article and breadcrumbs. They struggle with custom data, complex product variants, multiple plugins emitting conflicting entities, and validation. We often keep the plugin for the basics and extend or override its output where your data model needs more.

Does structured data help with AI search?

It helps machines understand entities and relationships unambiguously, which supports accurate representation in AI-driven search features. No markup guarantees a citation in AI Overviews or assistant answers — but clean, consistent entity data removes a common reason for being misunderstood or misattributed.

How do you stop markup drifting from the page?

By generating it from the same data source that renders the visible content, and by testing it. Our CI checks parse the rendered JSON-LD, validate required properties, and compare key values such as price, availability and headline against the page — failing the build when they disagree.

Next step

Make your entities machine-readable.

Send your URL and the templates you care about. You’ll get a scoped proposal with a fixed price within a few days.

Scroll to Top