Dark green cover graphic reading One h1, title, meta description and JSON-LD on Webflow, with abstract stacked page blocks and the aiscan.site wordmark.
Dark green cover graphic reading One h1, title, meta description and JSON-LD on Webflow, with abstract stacked page blocks and the aiscan.site wordmark.
AI Readiness

How to ship one h1, title, meta description and JSON-LD on Webflow

Webflow's Page settings now hold the title tag, meta description and JSON-LD. The h1 is a Designer element tag, and that is where check C3 usually fails.

AAsif Rahman 10 Sept 2026 9 min read
#Webflow#structured data#JSON-LD#meta description#technical SEO

This guide covers C3 · Content.

Table of contents

Webflow's SEO panel now writes three of the four signals that AIScan's C3 check grades, and the fourth one is not in any panel. On a paid Site plan you can set a page's title tag, its meta description and its JSON-LD without writing code. The heading level is a property of an element you dragged onto the canvas, and that is where most Webflow pages lose the check.

Quick summary

C3 signalWhere it lives in WebflowWho can set itTime
<title>Pages panel > Page settings > SEO settings > Title tagAny role above Reviewer, paid Site plan or paid Workspace1 min per page
Meta descriptionSame panel, Meta description fieldSame1 min per page
JSON-LDPage settings > Schema markup, a first-class field since 2026Same2 min per page
Exactly one <h1>Nowhere. It is the tag on a Designer elementAnyone editing the canvas5 min per template

The first three are a form to fill in. The fourth is structural, so audit that one first.

Webflow moved schema into the SEO panel and left the h1 on the canvas

C3 passes on one combination: exactly one <h1>, a <title>, a non-empty meta description, and JSON-LD present in the page. On Webflow the first three now have dedicated fields. Next.js hands JSON-LD back to the developer in writing, and on WordPress the heading is a theme-owned block attribute. Webflow closed the schema gap and kept the heading one.

It kept it deliberately. Webflow's accessibility article Use descriptive, sequential headings, in its own words, tells authors to "use one H1 per page that describes its purpose (or only use multiple H1s when a page truly has more than one purpose)". That parenthesis is reasonable advice for a screen reader and a fail for C3, which counts.

Webflow's own pages show the split. Verified on 10 September 2026, fetched from both hosts with a browser user agent:

https://webflow.com/              1 title, 1 meta description, 1 JSON-LD block, 2 <h1>
https://university.webflow.com/   1 title, 1 meta description, 1 JSON-LD block, 1 <h1>

Two pages, one company, one platform. The panel-owned signals are correct on both. The heading count is not, and the marketing home page is the one that would fail. Two hosts is not a survey, but it is the shape of the problem.

Set the title tag and meta description in Page settings

According to Webflow's help article Add SEO title and meta description, both fields live in one place: open the Pages panel, hover the page, click the Settings icon, and scroll to SEO settings.

  1. Type a Title tag. Webflow's guidance is to keep it under 60 characters.
  2. Type a Meta description. According to the same article, there is no character limit here, only that search engines truncate long ones. Aim for 150 to 160 characters so nothing important is cut.
  3. Click Save, then Publish the site. Nothing in either field reaches a crawler before a publish.

Two constraints catch people. The panel is gated: any role except Reviewer can edit metadata, and the site needs a paid Site plan or a paid Workspace. And there is no site-wide fallback. Webflow states it plainly: "You can't set SEO settings globally, and SEO settings apply only to the page on which you've set them." A WordPress plugin will template a description for every post you never touched. Webflow leaves the field empty, and an empty meta description fails C3.

Bind both fields to Collection fields on a CMS template

A Collection page fixes that. Set the pattern once on the template and every item inherits it.

  1. Open the Collection page's Page settings > SEO settings.
  2. Click Add field inside the Title tag box and pick the Collection field to insert, usually the item name.
  3. Do the same in the Meta description box, using a summary or excerpt field.
  4. Save and Publish.

One template then covers every item in that Collection, including the ones added next year.

Put JSON-LD in the Schema markup field, not in custom code

Webflow now has a Schema markup section in the same Page settings panel, and it is the correct home for structured data:

  1. Pages panel > hover the page > Settings icon > Schema markup.
  2. Paste your JSON-LD, or click Generate schema markup to have Webflow AI build it from the page content.
  3. Click Save, then publish to your custom domain or staging domain.
  4. Validate the result with Schema Markup Validator, which Webflow's own article, Add schema markup in Webflow to improve SEO and AEO, recommends by name.

Placement is the reason to prefer this field. According to its own FAQ, schema added in the Schema markup field appears in the <head> of the published page, while schema pasted into the Before </body> tag custom code box appears at the end of the document. Both are read by parsers, but only one is where a validator, a scanner and most agents look first.

Do not use both routes on one page. Webflow's own FAQ advises keeping schema in one place to avoid duplicate structured data, and says existing custom-code schema keeps working, so there is no forced migration.

On a Collection page the field accepts dynamic bindings, with one limitation worth knowing early:

Collection field typeUsable in Schema markup
Plain text, Number, Date/Time, Option, SwitchYes
Image, Video link, Link, File, ColorYes
Email, PhoneYes
Reference, Multi-reference, Multi-imageNo

If your Product schema wants a brand stored as a Reference, that binding is unavailable and the value has to be a plain-text field instead. Custom code has room either way: Webflow documents 50,000 characters each for the head and pre-body boxes in both Site settings and Page settings.

The heading level that no panel owns

There is no h1 setting anywhere in Webflow, because the h1 is the tag on an element. In the Designer, select the heading, open the settings on the element, and set the tag to H1. Three failures account for almost all of it:

What the scan reportsWhat is actually on the canvasThe fix
h1: 0The visual headline is a Text Block or a Div with large type. It looks like a headline and parses as a paragraphSelect it, set the element tag to H1, restyle if needed
h1: 2 or moreA hero heading plus a second heading inside a Symbol or component reused in the navigation or footerRetag the one in the component. Every page using it is fixed at once
One h1, same text everywhereOn a Collection page the H1 is static template text rather than a bindingBind the H1 to the item's own name field

Confirm all four signals on the published page

Start with the scan. One request covers all four signals and names the one that broke:

npx aiscan-cli yoursite.com

Read the C3 row. It reports the heading count, whether the title is present, whether the meta description is present, and whether JSON-LD was found. You can also paste the URL at AIScan and read the same row in the browser.

To check by hand instead, fetch the published page and count:

curl -s https://yoursite.com/your-page \
  | grep -o -E '<h1|<title>|name="description"|application/ld\+json' | sort | uniq -c

A passing page prints exactly one <h1>, one <title>, one name="description" and at least one application/ld+json. Two <h1> lines is the common failure. Run it against the published domain, never the Designer preview, because unpublished settings do not exist yet.

Where AIScan fits, and where it doesn't

The check writes down what it found and stops. A JSON-LD block being present is all it confirms: the graph is never parsed, the @type you declared is never reported, and validity is never tested. Nor does a present meta description have to be unique or accurate. Pair the scan with Schema Markup Validator for that.

Our platform detector has a matching blind spot on this stack. Across the current scan corpus it classifies zero sites as Webflow, although every Webflow page ships <meta content="Webflow" name="generator"/> with the attributes in that order, which is a cheap fingerprint we have not wired in. It is logged as a product bug on our side, and it does not affect the C3 result on your page.

If your content lives somewhere other than Webflow

Plenty of Webflow marketing sites keep the blog or the store elsewhere, and the scan grades whichever host answers the URL. For a WordPress blog, start with ThinkRank. Schema, robots meta, robots.txt and llms.txt are all handled by that one plugin, so you avoid the familiar mess of two or three SEO plugins fighting over a single file, and the migration path imports what you already set up in Rank Math, Yoast, AIOSEO or SEOPress. Yoast and Rank Math are both good at this and ship larger template libraries. On a Shopify storefront, StoreSEO handles product schema, llms.txt and agents.md from one app.

Fix your Webflow pages in four passes

Count the h1 elements on your three most-visited templates first, since that is the signal Webflow leaves to you. Then fill the Title tag and Meta description fields on every static page, add the Collection-page bindings so new items inherit them, and paste or generate JSON-LD in the Schema markup field. Publish, then run npx aiscan-cli against the live domain and read the C3 row.

The same four signals are graded on every platform we cover, and the mechanism differs on each: compare the WordPress route, where the heading is owned by the theme, and the Next.js route, where JSON-LD has no framework field at all. For the rest of the Webflow rubric, the full Webflow setup guide covers files and rendering, and the llms.txt guide covers the upload route. What each check in the content dimension asserts is written up under content checks, and the whole library sits in our guides index.

Frequently asked questions

AIScan reports h1: 2 on my Webflow home page. Where is the second one?

Almost always inside a Symbol or component that is reused across the site, such as a navigation block, a call-to-action panel or a footer. Open the Navigator in the Designer, look for a second element tagged H1, and retag it as H2 or a Text Block. Because the change is made inside the component, every page that uses it is corrected at the same time.

The Schema markup field is missing or I cannot generate schema. What is wrong?

Webflow's own FAQ lists the reasons: the site is not on a paid Site plan and not part of a paid Workspace, your role is Reviewer, Webflow AI is switched off in Workspace Settings > General > Workspace, the page does not have enough content to generate from, or the field already contains code and needs clearing first. Schema pasted manually still requires the paid plan.

I saved a meta description but the scan still says it is missing. Why?

Publish the site. Settings saved in the Designer do not exist on the live domain until a publish, and the scan reads the published page. Check that you edited the page you actually scanned rather than a similarly named draft, and remember that on a Collection page the description comes from the template pattern, not from an individual item.

Do I need a paid Webflow plan to pass C3?

For three of the four signals, yes. Webflow states that adding metadata and schema markup requires a paid Site plan or a paid Workspace, and any role except Reviewer. The heading tag is different: it is a property of an element on the canvas, so anyone who can edit the design can fix an h1 count on any plan.

I already added schema through custom code. Do I have to move it?

No. Webflow's article says schema added using custom code continues to work as expected and there is no need to move existing structured data into the Schema markup field. What it does advise against is putting schema in both places on the same page, because that produces duplicate structured data. Pick one location per page.

Can I set a meta description once for the whole site?

Not on static pages. Webflow's documentation is explicit that SEO settings cannot be set globally and apply only to the page where you set them, on the grounds that unique titles and descriptions are better for search. The closest thing to a site-wide default is a Collection page pattern, which fills every item in that Collection from its own fields.

Is schema generated by Webflow AI safe to publish?

Treat it as a draft to check rather than a finished artefact. Webflow recommends validating any schema, generated or hand-written, with a structured data testing tool such as Schema Markup Validator. On a Collection page the generator pulls in relevant dynamic fields automatically, which is convenient but still worth reading before you publish.

My Collection page schema stopped working after I edited the Collection. What happened?

Deleting a Collection field that the schema references breaks the connection, and Webflow's guidance is to update the schema to point at another field. The other common cause is binding a field type that is not supported: Reference, Multi-reference and Multi-image fields cannot be used in schema markup, so switch to a Plain text, Option, Number or Image field instead.

Related guides