Introduction
Back in the early days of WordPress and Drupal, websites were still descendants of desktop publishing. Print-based WYSIWYG editing shaped everything, so formatting and content was one and the same. On the web, developers have a name for what comes out the other end: blobs. Headings, rich text and media, rendered onto a page exactly as they were published, frozen in time for a single purpose.
Editors tend to favour this, because they can see how the content will look. Or they think they can…
Content beyond web pages
Content today doesn't only appear on a web page. It appears across devices at wildly different sizes, in search results, in AI chat responses, in featured snippets, in social previews, in aggregator apps, and on platforms nobody has built yet. That nicely formatted web page previewed on a desktop is the tip of the iceberg.
Structured content ≠ structured data
Structured data and structured content are co-dependent but not the same.
- Structured data is the schema.org markup your developer puts in the head of the page. It tells search engines and language models what they're looking at — a Product, a Recipe, a LocalBusiness, a Review. Each one has different subsets and types of data.
- Structured content is how that content is modelled inside your CMS. Defined types. Named fields. Content that knows what it is going to be before it is published.
One depends entirely on the other. If your CMS doesn't know what that thing you've just published is, your website has no way of telling machines what it is either. Both require a well-considered, meaningful content model, which is something your developer should set up after asking you what kind of content you'll be publishing. Because if they've left you with a one-size-fits-all 'post' type to cover every publishing need, they've let you down.
What blobs of rich text actually cost you
Generic fields such as rich text boxes and a stack of layout blocks store content in the database without meaningful type definitions. It can only be rendered out in the same unspecified way it went in.
Example: Unstructured content
Unstructured restaurant review in WordPress CMS
In this restaurant review published in WordPress, a generic post type has been used with rich text to format it. A human reads that page and understands every part of it because it's formatted by an editor with visual reading in mind. But take a look at the output below:
{
"post_type": "post",
"slug":"ember-and-tallow-review-east-clerkenwell",
"title":"Ember & Tallow Is the Most Ambitious Opening in East Clerkenwell This Year",
"content":""<p><em>By Olivia Hart</em><br />\n<em>Photography by Marcus Levene</em><br />\n<em>Published: 12 February 2026</em><br />\n<strong>8 min read</strong></p>\n\n<hr />\n\n<p><strong>Restaurant:</strong> Ember & Tallow<br />\n<strong>Address:</strong> 14–16 Copper Yard, East Clerkenwell, London EC1<br />\n<strong>Website:</strong> <a href=\"http://www.emberandtallow.co.uk\" target=\"_blank\" rel=\"noopener\">www.emberandtallow.co.uk</a><br />\n<strong>Price:</strong> £££<br />\n<strong>Cuisine:</strong> Live-fire British / Seasonal tasting menu</p>\n\n<p>It takes confidence to open a 42-cover restaurant devoted entirely to live fire cooking in a part of London better known for third-wave coffee and software engineers than smoke and embers. But Ember & Tallow, the latest venture from chef-owner Daniel Arkwright, is nothing if not confident.</p>\n\n<p>The dining room is all soot-blackened brick and burnished oak, with an open hearth dominating the far wall. By 7pm the air smells faintly of hay smoke and caramelised fat — in a way that feels deliberate rather than alarming.</p>\n\n<p>“We didn’t want theatrics,” Arkwright tells me, gesturing toward the glowing grill. “We wanted depth.”</p>\n\n<h2>The Menu</h2>\n\n<p>There are two options: a five-course set menu (£68) or an eight-course tasting (£95). We opted for the tasting.</p>\n\n<p>The evening opens with grilled oyster mushrooms glazed in fermented barley miso and served on a pool of smoked buttermilk. It’s earthy without becoming heavy, lifted by a scatter of pickled elderberries.</p>\n\n<p>A slab of Cornish monkfish follows, blistered over oak and served with a slick of brown crab and charred leeks. It’s excellent — though slightly over-salted on our visit.</p>\n\n<blockquote><p>“The monkfish was one of the boldest seafood dishes we’ve tasted this year.”</p></blockquote>\n\n<p>The standout, however, is Herdwick lamb saddle cooked directly on embers, paired with ash-baked celeriac and a glossy reduction of roasted bones. It’s a dish that tastes primal and polished at once.</p>\n\n<p>Dessert — grilled quince with hay custard and toasted buckwheat — divides the table. Two of us love the subtle smoke; one finds it overpowering.</p>\n\n<h2>Drinks</h2>\n\n<p>The wine list leans natural, with strong representation from Eastern Europe. A Slovenian orange wine (£48) proves an inspired pairing for the richer courses.</p>\n\n<p>There’s also a concise cocktail list, built around smoke-infused spirits. The “Kindling” (mezcal, burnt honey, lemon thyme) is excellent — though at £16, not inexpensive.</p>\n\n<h2>The Room</h2>\n\n<p>Tables are closely set. On a busy Friday, it can feel loud. Service is warm but occasionally stretched; one course arrived without cutlery and required prompting.</p>\n\n<p>Still, there’s an infectious sense that you’re witnessing something at the beginning of its life.</p>\n\n<h2>The Verdict</h2>\n\n<p>Ember & Tallow isn’t flawless. But it is ambitious, serious, and already cooking at a level most restaurants take years to reach.</p>\n\n<p>If the kitchen reins in its salt and the front-of-house finds its rhythm, this could become a destination restaurant.</p>\n\n<p><strong>Rating:</strong> 4 out of 5</p>\n\n<hr />\n\n<h3>Practical Details</h3>\n\n<ul>\n <li><strong>Booking:</strong> Reservations open six weeks in advance</li>\n <li><strong>Walk-ins:</strong> Limited bar seating held nightly</li>\n <li><strong>Dietaries:</strong> Vegetarian tasting menu available; no vegan option at present</li>\n <li><strong>Accessibility:</strong> Step-free entrance, accessible WC downstairs</li>\n <li><strong>Nearest station:</strong> Farringdon (8-minute walk)</li>\n</ul>\n\n<h3>Good to Know</h3>\n\n<p>Ember & Tallow adds a discretionary 13.5% service charge to the bill.</p>\n\n<h3>Disclosure</h3>\n\n<p><strong>Disclosure:</strong> The restaurant covered the cost of the meal for two guests. We paid for additional drinks. This review was conducted independently and reflects the writer’s honest opinion.</p>\n\n<h3>Correction (Updated 14 February 2026)</h3>\n\n<p><strong>Correction:</strong> An earlier version of this review stated that Ember & Tallow does not offer a vegetarian tasting menu. The restaurant has since confirmed that a vegetarian option is available with 48 hours’ notice.</p>\n\n<h3>About the Contributors</h3>\n\n<p><strong>Olivia Hart</strong> is a freelance food writer covering London restaurants and hospitality trends.</p>\n\n<p><strong>Marcus Levene</strong> is a photographer specialising in food and interiors.</p>\n",
},
}"As you can see, it’s a mess. A machine has to trawl through all that generic text, strip away the HTML formatting and attempt to make sense of it. It also has no way to know that this is a restaurant review and treats it as any other generic article.
- No schema. Your developer can't mark it up as a Review of a Restaurant, because there's no programmatic way to know.
- No rich results, no map card, and no star rating.
- No queries. Since the data is not grouped by its defined type, it can't be queried or sorted by machines amongst fellow restaurant reviews. It's bundled up amongst everything else on the site.
- No URL logic. The post sits flatly alongside everything else, with no meaningful hierarchy for search engines to read.
- No reformatting. Layout decisions have been baked into the data. It cannot be programmatically restyled for different devices or templates, or redesigned, without unpicking that nasty HTML by hand.
- High AI token consumption. LLMs have limited context windows. Structured content tells them what the content is before they've read a word of it. Without those defined types, a model burns through its tokens just to work out whether or not it’s relevant.
Example: with structured content
Structured content in Sanity CMS
Here's the review modelled properly. A developer has predefined field types in the CMS, fit for purpose. There's a review type, a category, a name, a rating, a website and a price bracket. All fixed fields that a developer can programmatically render with the correct schema. All indexable and machine readable, easily summarised with a fraction of the LLM tokens. Here is the output, clean and machine readable:
{
"type": "review",
"category": "food-and-drink",
"slug": "ember-and-tallow",
"url": "https://www.example.com/reviews/food-and-drink/ember-and-tallow",
"headline": "The Most Ambitious Opening in Clerkenwell This Year",
"name": "Ember & Tallow",
"website": "https://www.emberandtallow.co.uk",
"price": 3,
"rating": 4,
"rating-out-of": 5,
"cuisine": [
"Live-fire British",
"Seasonal tasting menu"
],
"covers": 42,
"chef-owner": "Daniel Arkwright",
"address": {
"street": "14–16 Copper Yard",
"locality": "East Clerkenwell",
"city": "London",
"postcode": "EC1"
},
"published": "2026-02-12",
"updated": "2026-02-14",
"reading-time-minutes": 8,
"author": {
"name": "Olivia Hart",
"bio": "Freelance food writer covering London restaurants and hospitality trends."
},
"photographer": {
"name": "Marcus Levene",
"bio": "Photographer specialising in food and interiors."
},
"gallery": {
"image-count": 12,
"credit": "Marcus Levene"
},
"review": [
{
"section-title": "Introduction",
"section-content": "It takes confidence to open a 42-cover restaurant devoted entirely to live fire cooking in a part of London better known for third-wave coffee and software engineers than smoke and embers. But Ember & Tallow, the latest venture from chef-owner Daniel Arkwright, is nothing if not confident. The dining room is all soot-blackened brick and burnished oak, with an open hearth dominating the far wall. By 7pm the air smells faintly of hay smoke and caramelised fat — in a way that feels deliberate rather than alarming. “We didn't want theatrics,” Arkwright tells me, gesturing toward the glowing grill. “We wanted depth.”"
},
{
"section-title": "The Menu",
"section-content": "There are two options: a five-course set menu (£68) or an eight-course tasting (£95). We opted for the tasting. The evening opens with grilled oyster mushrooms glazed in fermented barley miso and served on a pool of smoked buttermilk. It's earthy without becoming heavy, lifted by a scatter of pickled elderberries. A slab of Cornish monkfish follows, blistered over oak and served with a slick of brown crab and charred leeks. It's excellent — though slightly over-salted on our visit. The standout, however, is Herdwick lamb saddle cooked directly on embers, paired with ash-baked celeriac and a glossy reduction of roasted bones. It's a dish that tastes primal and polished at once. Dessert — grilled quince with hay custard and toasted buckwheat — divides the table. Two of us love the subtle smoke; one finds it overpowering."
},
{
"section-title": "Drinks",
"section-content": "The wine list leans natural, with strong representation from Eastern Europe. A Slovenian orange wine (£48) proves an inspired pairing for the richer courses. There's also a concise cocktail list, built around smoke-infused spirits. The “Kindling” (mezcal, burnt honey, lemon thyme) is excellent — though at £16, not inexpensive."
},
{
"section-title": "The Room",
"section-content": "Tables are closely set. On a busy Friday, it can feel loud. Service is warm but occasionally stretched; one course arrived without cutlery and required prompting. Still, there's an infectious sense that you're witnessing something at the beginning of its life."
},
{
"section-title": "The Verdict",
"section-content": "Ember & Tallow isn't flawless. But it is ambitious, serious, and already cooking at a level most restaurants take years to reach. If the kitchen reins in its salt and the front-of-house finds its rhythm, this could become a destination restaurant."
}
],
"pull-quote": {
"text": "The monkfish was one of the boldest seafood dishes we've tasted this year.",
"from-section": "The Menu"
},
"menus": [
{
"name": "Set menu",
"courses": 5,
"price": 68
},
{
"name": "Tasting menu",
"courses": 8,
"price": 95
}
],
"practical-details": {
"booking": "Reservations open six weeks in advance",
"walk-ins": "Limited bar seating held nightly",
"dietaries": "Vegetarian tasting menu available with 48 hours' notice; no vegan option at present",
"accessibility": [
"Step-free entrance",
"Accessible WC downstairs"
],
"nearest-station": {
"name": "Farringdon",
"walk-minutes": 8
},
"service-charge": {
"percent": 13.5,
"discretionary": true
}
},
"disclosure": "The restaurant covered the cost of the meal for two guests. We paid for additional drinks. This review was conducted independently and reflects the writer's honest opinion.",
"corrections": [
{
"date": "2026-02-14",
"text": "An earlier version of this review stated that Ember & Tallow does not offer a vegetarian tasting menu. The restaurant has since confirmed that a vegetarian option is available with 48 hours' notice."
}
]
}Clean and machine readable – data that LLMs will love and content that’ll outlive your website.
Upfront structure saves time and money
Page builders store content, styling and structure in the same place in the database. When you move to a new system, the only way to bring the content across is to bring the layout code with it. You either have to stick with layout and formatting decisions made previously, or invest in manual labour to migrate and re-publish. This can take months. Somebody has to sit and re-key hundreds pages by hand.
Every rebrand or replatform costs you money, time and competitive advantage.
With structured content, migration is a simple data export. Your content is clean typed JSON data that can be repurposed again and again and again.
So, why do page builders still exist?
Karen McGrane called this out in A List Apart in May 2013 , a decade before ChatGPT. Her closing argument was that with infinite possible outputs for content, the time had come to move past tools that use visual styling to carry semantic meaning, and that if you want real separation of content from presentation, it has to start in the CMS.
But thirteen years on, we're still publishing in page builders. Why?
The reason is simple enough. While developers have known for years that generic page builders harm client performance, marketing and content managers want autonomy. They want to add a page without raising a ticket, and they want to see what it looks like before it goes live – in the format they look at every day, on an office desktop. That's a reasonable thing to want. But it's our job as developers to find the right balance between autonomy and content that holds up, and to present the case for it.
The preview button is a lie
At least that's what McGrane flagged. She argued that the same document renders differently on every browser, every screen size and every platform, so the thing you're previewing was never the real thing. Her answer was to build a better preview button, backed by the right education, rather than scrap the idea.
Headless systems like Sanity decouple content from presentation, so developers can define fields by type rather than by layout, and still give editors a means to preview how it might look across devices. The developer keeps control of the front end, and of how the CMS is structured. The editor is reassured that content will render correctly everywhere it's presented.
When a generic page builder is the right call
For one-off campaign pages and anything with no evergreen SEO value, it’s okay to spin up a generic landing page and move on.
But keep it constrained and consider a structured alternative with your developer first. Otherwise before you know it, you'll have 300 landing pages to migrate.
When defined content types is the right call
For anything that repeats, is listed, filterable or reference elsewhere. And anything with a schema.org type with evergreen search and AI value.
That's a much longer list than most teams realise:
- Products and product variants
- Locations, branches, stockists and showrooms
- People — team members, authors, speakers
- Case studies and projects
- Events, sessions and webinars
- Job listings
- Reviews and testimonials
- News articles and press releases
- FAQs
- Courses and modules
- Downloadable resources
- Whitepapers and datasheets
- Integrations and partners
- Categories, tags and taxonomy terms
- Glossary and technical terms
Yes, this means asking a developer to define new types and templates when new requirements come up. That feels restrictive next to dragging blocks around. But it's a few days of work against a rebuild, or a loss in performance, you'd otherwise pay for twice.
So the next time a new kind of content appears on the roadmap, ask the question before you reach for the page builder: should this be a defined type?