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.
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.
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.
@id graph architecture
Stable identifiers so every page references the same Organization, WebSite and author entities instead of redefining them.
Product & Offer schema
Product, Offer, ProductGroup and ratings with price, availability, shipping and returns details for merchant listings.
Article & author markup
Article or BlogPosting linked to Person entities with sameAs profiles, so authorship is explicit and consistent.
Organization & WebSite
One canonical Organization entity with logo, contact points and sameAs, plus WebSite markup referenced from every page.
Breadcrumbs, video & events
BreadcrumbList on every hierarchical template, plus VideoObject or Event where the content genuinely warrants it.
Validation & CI gates
Automated tests that fail the build when required properties are missing or markup disagrees with the rendered page.
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
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.
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.
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.
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.
{
"@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
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.
Related services
Often paired with schema work.
Ecommerce Technical SEO
Facet, crawl and template rules for large catalogues.
Explore ecommerce SEO →
JavaScript SEO
When markup is injected client-side by React, Next.js or a tag manager.
Explore JavaScript SEO →
Technical SEO Audit
Structured data errors mapped alongside every other technical issue.
Explore the audit →
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.