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.

Read time:
2 minutes
Author:
Nemanja Hrnjez
Published:
November 24, 2025
How to Implement Structured Data (Schema) in Webflow Without Plugins

Is your Webflow site slow, costly or hard to find?

Send me your site

You 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

  1. Open the page's Page settings.
  2. Paste the script into the head code under Custom code.
  3. 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.

  1. Open the Blog Posts template's Page settings.
  2. Paste the template below into the head code.
  3. Replace each placeholder by inserting the matching CMS field.
  4. 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

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.

← All articles

Start with what's wrong.

Send your site URL. I'll reply within one business day with what I'd fix first.