Structured data is a small block of code you add to a page that labels its contents in a standard vocabulary — telling machines "this is a product with this price," "this is an article by this author," or "these are our opening hours." Without it, search engines and AI tools have to guess what your page is about from the raw text, and they often guess wrong or skip you entirely.
Why it matters
When your pages have no structured data, you lose eligibility for rich results like star ratings, prices, and FAQ dropdowns in search listings. AI assistants are also more likely to misdescribe your business or leave you out of an answer, because nothing on the page confirms the facts in a form they can trust.
How to fix it
Structured data is usually added as a block of JSON-LD inside the page's HTML. Here is a basic example for an organisation — adapt the type and fields to match what the page actually is (a product, article, local business, event, and so on):
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Business Name",
"url": "https://www.example.com",
"logo": "https://www.example.com/logo.png"
}
</script>
Choose the type that fits the page from schema.org. Only describe things that genuinely appear on the page.
WordPress
Install an SEO plugin such as Yoast SEO, Rank Math, or Schema Pro. These generate structured data automatically once you set your site type and fill in the relevant fields. To add custom markup on a single page, use a "Custom HTML" block and paste the JSON-LD script into it.
Nginx / Apache
For hand-built or static sites, paste the <script type="application/ld+json"> block directly into the HTML of the page, ideally inside the <head> section. No server configuration is required — the markup lives in the page itself, not in nginx.conf or .htaccess.
Cloudflare
Cloudflare does not add structured data for you, but you can inject the script sitewide without editing your origin using Rules → Snippets (or a Cloudflare Worker) to insert the JSON-LD block into responses. For page-specific data, add it at the source instead.
How to check it worked
Paste the page URL into Google's Rich Results Test or the Schema Markup Validator; a valid result will list the detected type and its fields with no errors.