Table of contents
- Quick summary
- Webflow moved schema into the SEO panel and left the h1 on the canvas
- Set the title tag and meta description in Page settings
- Bind both fields to Collection fields on a CMS template
- Put JSON-LD in the Schema markup field, not in custom code
- The heading level that no panel owns
- Confirm all four signals on the published page
- Where AIScan fits, and where it doesn't
- If your content lives somewhere other than Webflow
- Fix your Webflow pages in four passes
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 signal | Where it lives in Webflow | Who can set it | Time |
|---|---|---|---|
<title> | Pages panel > Page settings > SEO settings > Title tag | Any role above Reviewer, paid Site plan or paid Workspace | 1 min per page |
| Meta description | Same panel, Meta description field | Same | 1 min per page |
| JSON-LD | Page settings > Schema markup, a first-class field since 2026 | Same | 2 min per page |
Exactly one <h1> | Nowhere. It is the tag on a Designer element | Anyone editing the canvas | 5 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.
- Type a Title tag. Webflow's guidance is to keep it under 60 characters.
- 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.
- 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.
- Open the Collection page's Page settings > SEO settings.
- Click Add field inside the Title tag box and pick the Collection field to insert, usually the item name.
- Do the same in the Meta description box, using a summary or excerpt field.
- 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:
- Pages panel > hover the page > Settings icon > Schema markup.
- Paste your JSON-LD, or click Generate schema markup to have Webflow AI build it from the page content.
- Click Save, then publish to your custom domain or staging domain.
- 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 type | Usable in Schema markup |
|---|---|
| Plain text, Number, Date/Time, Option, Switch | Yes |
| Image, Video link, Link, File, Color | Yes |
| Email, Phone | Yes |
| Reference, Multi-reference, Multi-image | No |
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 reports | What is actually on the canvas | The fix |
|---|---|---|
h1: 0 | The visual headline is a Text Block or a Div with large type. It looks like a headline and parses as a paragraph | Select it, set the element tag to H1, restyle if needed |
h1: 2 or more | A hero heading plus a second heading inside a Symbol or component reused in the navigation or footer | Retag the one in the component. Every page using it is fixed at once |
| One h1, same text everywhere | On a Collection page the H1 is static template text rather than a binding | Bind 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
How to ship one h1, title, meta description and JSON-LD on Next.js
Next.js hands you a Metadata API that writes your <title and your meta description into the head automatically. It does not write your JSONLD, and it does not write your <h1. Those two are ordinary…
Gate AI readiness in CI so a regression fails the build
A green pipeline is supposed to mean the site is fine. On an AI readiness check it often means something narrower: that the gate could not tell a file from a phantom. This step, which appears in a…
How to ship one h1, title, meta description and JSON-LD on WordPress
WordPress sites fail AIScan's C3 check more often than their owners expect, and almost never for the reason they expect. Across the 129 WordPress sites in our scan corpus, verified on 8 September…
The complete AI readiness setup for Wix in 2026
Every other platform in this series asks you to create something. Wix has already created it. Before you open a single panel, a Wix site is serving a robots.txt, a sitemap index, serverrendered HTML…
