How to Implement Structured Data (Schema) in Webflow Without Plugins
Add JSON-LD schema in Webflow without plugins: static code in Page settings, CMS-driven BlogPosting on Collection templates, and how to validate it.

Is your Webflow site slow, costly or hard to find?
Send me your siteYou add structured data to Webflow by pasting JSON-LD into custom code. Use Page settings > Custom code for static pages, and the Page settings of a CMS Collection template with inserted CMS fields so every blog post gets its own Article markup. No plugin is needed. Then validate the output.
Why schema on Webflow goes wrong
Webflow does not generate Article or Product markup for you. Most sites have none, or one copied block where every post claims the same headline and date. A stray quote mark can break the JSON so the whole block is ignored.
Pick the right type
- Organization: once, site-wide
- BlogPosting or Article: each blog post
- BreadcrumbList: pages with a visible breadcrumb
- LocalBusiness or Product: where they fit
Google now shows FAQ rich results only for a small set of authoritative sites. See the structured data gallery for current types.
Method 1: Static JSON-LD in Page settings
- Open the page's Page settings.
- Paste the script into the head code under Custom code.
- Save, publish, check the live URL.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Studio",
"url": "https://www.example.com",
"logo": "https://www.example.com/logo.png"
}
</script>
For site-wide data, use Site settings > Custom code once. Custom code needs a paid site plan.
Method 2: CMS-driven JSON-LD on Collection templates
A Collection template's Page settings let you insert CMS fields into custom code. Webflow fills in each item's values on publish.
- Open the Blog Posts template's Page settings.
- Paste the template below into the head code.
- Replace each placeholder by inserting the matching CMS field.
- Publish and test a few live posts.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"mainEntityOfPage": "https://www.example.com/blog/{{Slug}}",
"headline": "{{Name}}",
"description": "{{Summary}}",
"image": "{{Main image}}",
"datePublished": "{{Published date}}",
"author": {
"@type": "Person",
"name": "{{Author name}}"
},
"publisher": {
"@type": "Organization",
"name": "Example Studio"
}
}
</script>
Add dateModified the same way if you keep an updated date field.
The {{...}} placeholders are for this guide. In Webflow, inserted fields appear as field tags. Do not type the braces.
What breaks CMS schema
- Quotes. A straight double quote in a title breaks the JSON string. Avoid them in fields used in schema.
- Dates. Schema expects ISO 8601, like
2026-03-14. Check how the date renders in the live source. - Empty fields. Make fields used in schema required.
- Rich text. It contains HTML. Use a plain text summary field.
- Reference fields. To use an author's name from an Authors Collection, insert it through the reference if the field picker offers it. If not, add a plain text author field to the post.
Alternative: an Embed element
You can also put the script in an Embed element on the page or template, and insert CMS fields there too. I prefer Page settings, because the code sits in one predictable place and does not get deleted with a section during a redesign.
Validate it
- Rich Results Test: eligibility, errors and warnings, linked from Google's structured data docs.
- Schema Markup Validator: general Schema.org validity.
- Search Console: errors across all pages after recrawl.
- View source: CMS values filled in.
Checklist
- Organization schema added once
- BlogPosting on the Collection template
- Markup matches visible content
- ISO 8601 dates
- Required fields, no straight quotes
- Live URLs tested in both validators
FAQ
Does structured data improve rankings?
It is not a direct ranking boost. It helps search engines understand a page and qualifies it for rich results.
Should I use Article or BlogPosting?
Both work. BlogPosting is a more specific subtype of Article that fits blog content.
Can a page have more than one JSON-LD block?
Yes. Site-wide Organization markup and a page-level BlogPosting block can sit on the same page. Keep each one valid on its own.
Dealing with this on a live Webflow site? It is the kind of work I do in Webflow SEO and AEO. Send me your site and I will tell you what I would fix first.


