Guide · Structured data
Structured data: what the machine actually reads
A reader looks at your page and understands at a glance who publishes it, what is for sale, at what price and under what conditions. A machine, on the other hand, reads text and waits to be told what it refers to. Structured data bridges exactly that gap: it states, in a format the machine parses, what the reader grasps by looking. Here is how it is written, what it must respect, and how you make sure it tells the truth.
JSON-LD, placed within the page
The recommended format is JSON-LD. It sits within the page, separate from the displayed text, and describes what that text means. The vocabulary comes from schema.org: each block announces a type ("this is an organisation", "this is an offer") then the properties of that type. You describe what you choose to describe; what is described must be accurate.
Here, in plain text, is what an offer looks like. Four values only, and each one is verifiable on screen.
{
"@context": "https://schema.org",
"@type": "Offer",
"price": "199.00",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "SEO Records"
}
}The price, the currency, the availability, the seller. The block announces these four pieces of information because the visitor sees them on the page: it is that visibility which authorises them.
The golden rule: markup reflects the visible
This is the one rule from which all the others follow. The markup must reflect what is visible on the page. Declaring a price, a review or an availability that the visitor cannot see is a false declaration — even when the value is otherwise accurate, even when it appears in your database.
The practical consequence is simple: every value in a block is read at its source, at the very place the page takes it from, and it is that reading which fills the block. This is how SEO Records works — it corrects and completes structured data at the moment the page is served, and every value it sets is sourced in the page.
The types that carry a page
Five types carry our own site. These are the ones we selected, out of all the vocabulary schema.org offers, for what our pages actually show.
01
Organization · The publisher
Who publishes the page. The name, the site address, the logo, the contact points. This is the block that ties every other declaration to an entity, instead of leaving them adrift.
02
BreadcrumbList · The breadcrumb trail
The page's place within the site, from the top level down to it. It must reproduce the path the visitor sees on screen, in the same order and with the same labels.
03
SoftwareApplication · A software product
What the product does, for what use, on which platform. On our site, this type describes the modules we install.
04
Service · A service
What you receive as a service, excluding installation: an audit, a survey, a check. The type states the nature of the service and who provides it.
05
Offer · Offer
The price, the currency, the availability and the seller. This is the most demanding block: each of those four values must appear, exactly as is, in the text the visitor reads.
What no longer returns anything gets removed
On 2 September 2026, we removed the FAQPage markup from our site. Google now reserves that rich result for government bodies: the block described the page correctly, and its return stopped there. Our own audit had flagged it for us, rightly so.
The FAQ itself stayed on display. It's there for the reader, who finds answers in it — that was its purpose all along. That's the distinction to keep in mind: markup that no longer returns anything gives the page back the bytes it was taking, and the content it described stays, whole, right where it is.
The five rules to uphold, everywhere
The markup quotes what the page shows
A price, a review or an availability status is declared because it's on screen: that presence is what makes the declaration true. A value that's declared but absent from the screen is false, whatever the intent — the machine reads your file, and your file is what counts.
The block parses, from the first character to the last
A well-placed comma, a closing quote in the right spot, and the whole block gets read; one comma too many, and it's ignored entirely. A JSON-LD that parses is a JSON-LD that counts, and everything hinges on what's inside the block: that's where — and only there — its readability is decided.
The markup speaks every language on the site
Our blocks are translated into the site's eight languages: all eight pages are described in the language their visitor reads. Translating the other seven after French means gaining seven pages out of eight correctly described.
A declared price is a displayed price
When the price changes on screen, the block changes with it: the two then say the same thing. In case of a discrepancy, it's the markup that answers for it, and that's where the rule comes from — a value is read at its source.
The markup worth keeping is the markup that returns something
Removing a deprecated type gives you back the bytes, the proofreading and the consistency it was consuming. What serves a purpose stays, the rest goes.
How to check
Three passes are enough, in this order.
- Does the block parse? Take the contents of each block and have it parsed as JSON. On our end, this step is automatic: our publication guard parses every block, and the release goes live once they all parse.
- Is the type valid? Google's official testing tools read a URL or a code snippet and tell you which types they recognise, along with any missing or malformed properties.
- Is every value on screen? This is the only pass that's yours alone: that one, you handle yourself. Read the block alongside the rendered page, value by value, and in each of the languages served.
View your structured data as it is served
The Checker reads your URL and reports the state of your blocks, free of charge, in about ten seconds. It runs on our side: your site stays entirely yours. The Audit SEO Records goes further: it reads your whole sitemap, page by page, and hands you a dated report.
Fix it, then keep it fixed
Markup that is correct on launch day drifts afterwards, as prices move and pages are added. SEO Records fixes and completes the blocks at the moment the page is served, every value sourced, from €199/year. SEO Autopilot works on the visible text that goes with them: it writes descriptions, FAQs and internal links from your real data and nothing else, from €199/year. Both answer the same requirement: every statement is backed by what the page shows.