Webflow SEO: CMS Collections, native schema, custom code injection
A comprehensive installation and audit reference for Webflow as a search platform. Webflow occupies a distinct niche in the 2026 web platform landscape: visual development with hosted infrastructure,…
Designer Workflow, CMS Collections, Schema Implementation, Localization, Performance Patterns, and Webflow Specific SEO Strategy for 2026
A comprehensive installation and audit reference for Webflow as a search platform. Webflow occupies a distinct niche in the 2026 web platform landscape: visual development with hosted infrastructure, popular among design forward marketing sites and small business sites where designers lead implementation rather than developers. The platform ships strong SEO defaults but carries several platform specific gotchas that demand explicit attention.
Cross stack implementation note: this framework is the canonical reference for Webflow specifics. For non Webflow stack equivalents of any pattern referenced, see framework-cross-stack-implementation.md. For schema patterns referenced throughout, see framework-schema.md. For Webflow Localize patterns and the international SEO context, see framework-hreflang.md and framework-international.md. For migration scenarios involving Webflow, see framework-migration.md. For Core Web Vitals work on Webflow sites, see framework-pageexperience.md. For audit overlays, see framework-technicalseo.md, framework-accessibility.md, and framework-mobileseo.md. For AI search positioning, see framework-aicitations.md and framework-aioverviews.md.
1. Document Purpose
1.1 What This Framework Is
This is the canonical 2026 reference for Webflow as an SEO, AEO, and AIO platform. It specifies what the platform exposes, what it hides, what it auto generates, and where the SEO engineer must reach into Custom Code to bridge the gap. Every recommendation is tested against the v3 Webflow platform feature set current as of Q2 2026.
Webflow's positioning sits between two poles. On one side, fully managed builders like Squarespace and Wix that prioritize ease of use over technical control. On the other, code first stacks like Next.js or Astro that prioritize technical control over visual development. Webflow occupies the productive middle: a visual designer with enough code level access to ship production grade marketing sites, but with platform constraints that prevent the engineer from optimizing every layer the way a self hosted stack would allow.
1.2 The Design First DX vs the SEO First DX Tradeoff
The Webflow experience optimizes for the designer. The visual canvas is the source of truth. The Style Manager, Interactions panel, Component system, and CMS Designer are built for someone whose primary skill is visual composition rather than engineering.
The tradeoff: many SEO controls that an engineer would expect to manipulate directly are abstracted away. The HTML is generated by the platform from the visual tree. The CSS is generated from the Style Manager. The JavaScript that handles interactions is bundled into Webflow.js. Most opinions are correct, but the SEO engineer who needs precise control over rendered output sometimes finds the abstractions in the way.
This framework documents both halves: what to leverage from defaults, and what to override through Custom Code, project settings, and architectural decisions made before the build starts.
1.3 When To Recommend Webflow vs Next.js vs WordPress
For a marketing site under 200 pages with a design driven brand, no complex application logic, no headless commerce, and no engineering team available for ongoing maintenance, Webflow is often correct. The visual editor lets marketing teams update content without engineering involvement. The platform handles hosting, SSL, edge delivery, and asset optimization. CMS Collections handle structured content.
For a content driven publisher, an ecommerce site over 500 SKUs, or a site needing deep backend integration, Next.js is typically stronger. For a content site where the editorial workflow needs Gutenberg, Yoast, or the WordPress plugin ecosystem, WordPress remains the choice. The broader decision matrix lives in framework-cross-stack-implementation.md. This framework assumes the Webflow decision has been made.
1.4 The 2026 Webflow Positioning
Webflow in 2026 has matured along three axes since 2022. First, Webflow Localize launched in 2024 brings multilingual support without third party plugins. Second, Webflow Logic added basic workflow automation. Third, the Component system replaced the older Symbol system, enabling parameterized reusable design blocks closer to React component thinking. These additions strengthened the platform's position for mid market marketing sites. They did not change the fundamental tradeoff: Webflow remains a hosted, opinionated platform.
1.5 Required Tools
- Webflow account with appropriate plan (Basic, CMS, Business, Enterprise)
- Webflow Designer access for the SEO engineer or build owner
- Webflow Editor access for the client content team
- Google Search Console verified on production
- Rich Results Test and Schema.org Validator for schema
- PageSpeed Insights for Core Web Vitals field data
- Screaming Frog or Sitebulb for crawl auditing
- A staging environment (webflow.io subdomain or separate staging project)
1.6 Document Scope
Covers: platform overview, hosting, SEO settings, CMS Collections, schema, performance, localization, URLs and redirects, custom code, limitations and workarounds, migration, and audit. Touches but does not exhaust: schema strategy (framework-schema.md), general technical SEO (framework-technicalseo.md), Core Web Vitals beyond Webflow specifics (framework-pageexperience.md).
2. Client Variables Intake
# WEBFLOW SEO INTAKE
# Stored at /var/www/sites/[domain]/intake/webflow.yaml
# Project Identity
project_name: ""
project_slug: "" # webflow.io subdomain
primary_domain: ""
workspace_plan: "" # Starter | Core | Growth | Agency
project_plan: "" # Basic | CMS | Business | Enterprise
ecommerce_enabled: false
ecommerce_plan: "" # Standard | Plus | Advanced if active
# Platform Configuration
hosting_type: "webflow_cloud" # webflow_cloud or self hosted export
custom_code_lines_remaining: 0 # plan caps custom code
form_submission_destination: "" # Webflow inbox | webhook | both
# Content Architecture
total_static_pages: 0
total_cms_collections: 0
cms_collection_names: []
total_cms_items: 0
ecommerce_products_count: 0
localization_enabled: false
locale_list: [] # en | en-GB | es | etc.
locale_strategy: "" # subdirectory | subdomain
# SEO Configuration State
seo_settings_complete: false
sitewide_meta_title_template: ""
sitewide_meta_description_template: ""
default_og_image_url: ""
canonical_strategy: "" # platform_default | custom
robots_txt_custom: false
sitemap_xml_custom: false
gsc_property_verified: false
ga4_property_id: ""
# Schema State
sitewide_schema_present: false
sitewide_schema_types: [] # Organization | LocalBusiness | WebSite
per_page_schema_present: false
cms_dynamic_schema_present: false
schema_validation_clean: false
# Performance Baseline
mobile_lcp_p75: 0
mobile_cls_p75: 0
mobile_inp_p75: 0
desktop_lcp_p75: 0
webflow_interactions_heavy: false
custom_fonts_count: 0
total_page_weight_kb: 0
# Migration Context
migrating_from: "" # wordpress | squarespace | wix | custom | none
migration_redirect_map_present: false
total_legacy_urls: 0
# Custom Code Inventory
project_head_code_used: false
project_body_code_used: false
analytics_integration: "" # ga4 | gtm | plausible | fathom | none
third_party_scripts: []
# Editor and Client Access
client_editor_count: 0
designer_access_count: 0
content_owner_email: ""
This intake captures every variable the Webflow SEO engineer needs. Stored alongside the broader engagement intake from framework-clientonboarding.md.
3. Webflow Platform Overview 2026
3.1 Webflow Cloud Hosting
Webflow Cloud is the hosting layer that ships with every published project. SSL via Let's Encrypt, automatic edge delivery, responsive image optimization, and zero downtime publishing are bundled. There is no separate hosting bill, no DNS configuration beyond pointing the apex A record and www CNAME to Webflow's edge addresses, and no server administration required.
For the SEO engineer this means standard infrastructure level work (nginx tuning, certificate renewal, security header configuration) does not apply the same way. Webflow exposes a narrower set of controls. Defaults are reasonable; workarounds when defaults are wrong are constrained.
3.2 Custom Code Injection
Custom Code is the SEO engineer's primary lever in Webflow. Two scopes exist.
Project level Custom Code, configured in Project Settings > Custom Code. Two slots: Head Code (everything before </head>) and Footer Code (everything before </body>). Both render on every page of the site. Limited to 10,000 characters per slot on most plans, more on Enterprise. This is where sitewide schema, sitewide analytics, sitewide tracking pixels, and sitewide fonts not hosted by Webflow live.
Per page Custom Code, configured per page in Page Settings > Custom Code. Same two slots: Inside <head> tag, and Before </body> tag. Per page custom code renders only on that page. This is where per page schema overrides, per page meta tags not covered by Webflow's SEO settings, and per page analytics events live.
CMS template Custom Code, configured on Collection Page templates. Same two slots. Renders on every Collection Item using that template. Crucially, supports dynamic field embedding via the {{wf {...} }} syntax, letting schema reference CMS field values per item. This is the single most important Webflow specific pattern for content sites.
3.3 CMS Collections
CMS Collections are Webflow's structured content system. Each Collection is a content type with a defined field schema (Blog Posts, Case Studies, Team Members, Locations, Events). Collections feed Collection Page templates (one per item) and Collection List components.
For the SEO engineer, Collections enable: dynamic meta titles and descriptions from per item fields, dynamic schema, automatic sitemap inclusion, consistent URL patterns, and bulk updates via API or CSV.
Collection limits depend on plan: Basic excludes CMS, CMS plan caps at 2,000 items and 20 Collections, Business at 10,000 items and 40 Collections, Enterprise removes the cap.
3.4 Webflow Ecommerce
Webflow Ecommerce is a paid add on. Product Collections, cart and checkout flows, Stripe and PayPal integration, basic tax, and order management. For high volume ecommerce, Shopify typically outperforms on SEO depth (faceted navigation, breadcrumbs) and scale. For low volume ecommerce (under 200 SKUs, simple variants, single currency) Webflow Ecommerce ships clean. Cart and checkout pages are platform generated and not fully editable.
3.5 Webflow Logic, Localize, Components, Workspace
Logic (2023) is the workflow automation layer: visual flow building for form handling, webhook routing, data transformation. Removes the need for Zapier on simple patterns.
Localize (2024) is the multilingual layer. Subdirectory and subdomain locales, automatic hreflang, locale specific content overrides on every element, locale specific Collection items and media. Detail in Section 9.
Components (2024) replaced the older Symbol system: named, parameterized reusable design blocks accepting Properties per instance. Reusable content blocks (CTA cards, related posts, schema embeds) can be authored once and updated everywhere.
Variables (2024) are design tokens (colors, fonts, sizes) defined once and referenced across the project.
Workspace is the team and billing container. A Workspace owns Projects. Workspace plans set per seat pricing; Project plans set per site features. For agencies, client billing for the Project plan can be assigned to the client's Workspace while the agency retains designer seats.
4. The Webflow Hosting Question
4.1 What Webflow Hosting Actually Is
Webflow's hosting uses AWS infrastructure with edge intermediaries layered for global delivery. The platform serves cached HTML and assets from edge nodes, with the Webflow control plane handling content updates and propagation. Publishing a Webflow project triggers a build that produces static HTML, CSS, and JavaScript pushed to the edge. There is no per request server side rendering. Every page is effectively static at request time.
Note: Joseph's preferred stack avoids edge intermediaries entirely. The implication for clients on Webflow: they accept platform hosting as part of the bundle, including the platform's choice of edge architecture, the platform's cache invalidation behavior, and the platform's lack of fine grained server level control. This is part of the Webflow tradeoff.
4.2 Implications for SEO
The "every page is static at request time" property is excellent for SEO. HTML is delivered at first byte. No client side rendering for primary content. Crawlers (Googlebot, Bingbot, AI crawlers) see the rendered page immediately. The First Contentful Paint and Largest Contentful Paint are typically fast because the HTML is cached at the edge.
The cost: no real server side dynamic rendering. Every CMS item is pre rendered when the project is published. Personalization, geolocation routing, and request specific content variants require client side JavaScript layered on top of the static HTML. For most marketing sites this constraint is invisible. For sites that need true SSR personalization the constraint is dispositive.
4.3 The Export to Static and Self Host Pattern
Webflow supports a Static Site Export for projects without CMS Collections. The export produces a zip of static HTML, CSS, JavaScript, and assets that can be self hosted on any web server. This bypasses Webflow hosting entirely.
The pattern is occasionally useful for clients who want Webflow's visual designer but cannot accept platform hosting (regulatory constraints, internal IT requirements, integration with self hosted authentication). The cost: every content update requires republishing from the Designer and redeploying the static export to the self host environment. CMS Collections do not export. Forms do not export. The Webflow Editor does not work against a self hosted export.
For clients on Bubbles or another self hosted infrastructure who still want a Webflow style design workflow, the better recommendation is typically Next.js with a visual page builder layer, or a static site generator with a CMS like Sanity. The export route is a niche pattern.
4.4 The Decision Criteria
Recommend Webflow hosting (the default) when:
- Client accepts platform hosting as part of the bundle
- No regulatory or IT constraint blocks third party hosting
- Site needs the Webflow Editor for non technical content updates
- CMS Collections are part of the build
- Forms are submitted to Webflow's inbox or a webhook
Recommend Static Export and self host when:
- Site is fully static (no CMS, no forms, no Ecommerce)
- Client cannot use platform hosting
- The visual designer is the primary value, the hosting is incidental
Recommend a different stack entirely when:
- True SSR personalization is required
- Hyperscale traffic (over 10M pageviews per month) makes platform plan pricing prohibitive
- Integration depth with backend systems exceeds what Custom Code permits
5. SEO Settings Configuration
5.1 Project Settings SEO Tab
Project Settings > SEO is the platform's central SEO configuration. Configure before launch.
Search Engine Indexing toggle: ON for production. OFF on staging (project-slug.webflow.io). This is the noindex meta tag at the platform level. The webflow.io staging subdomain ships with noindex on by default; verify before exposing the staging URL to any indexing risk.
Global Canonical Tag: leave at platform default unless there is a specific reason to override. Webflow generates per page canonicals pointing to the rendered URL. Override only when the project has a custom canonical strategy (cross domain canonicalization, parameter handling).
Sitemap auto generation: ON. Webflow auto generates sitemap.xml at /sitemap.xml. Submit to Google Search Console once the production domain is live.
Custom Sitemap option: Webflow allows replacing the auto generated sitemap with a hand authored XML. Use this only when you need to exclude specific URLs or add hreflang annotations to a sitemap that Webflow's generator does not produce.
Robots.txt: Webflow allows custom robots.txt content in the SEO tab. Configure to allow indexing in production, disallow indexing on staging environments if not already handled by the staging subdomain default.
User-agent: *
Allow: /
Disallow: /search-results
Disallow: /cart
Disallow: /checkout
Disallow: /account
Sitemap: https://example.com/sitemap.xml
5.2 Per Page Meta Configuration
Every page (static or CMS template) has Page Settings with SEO fields.
Title Tag: per page meta title. Best practice: under 60 characters, includes primary keyword, ends with brand name. Use sentence case rather than title case for readability per Nielsen Norman 2021 research on scanability.
Meta Description: per page meta description. Best practice: under 155 characters, summarizes page value proposition, includes secondary keyword naturally. Webflow does not auto generate meta descriptions, leaving the field blank produces no description tag and Google generates a snippet from page content.
Open Graph Title: defaults to the Title Tag if blank. Override when the social share title should differ from the search title.
Open Graph Description: defaults to the Meta Description if blank. Override similarly.
Open Graph Image: required for clean social sharing. 1200x630 pixels recommended. PNG or JPG. Under 1MB ideal. Webflow allows a sitewide default in Project Settings; per page overrides cascade.
Twitter Card Type: summary_large_image for most marketing pages. summary for sparse pages.
Twitter Card Title / Description / Image: defaults to OG values. Override when the Twitter audience needs different framing.
5.3 CMS Field Driven Meta
For Collection Page templates, Page Settings SEO fields can pull from Collection fields via the {{wf}} syntax.
In the Title Tag field of a Collection Page template:
{{wf {"path":"name","type":"PlainText"} }} | Brand Name
This template renders per Collection Item with the item's Name field substituted. Same pattern for Meta Description (typically pulled from a dedicated SEO Meta Description Collection field), Open Graph Title, Open Graph Description, and Open Graph Image.
Best practice: add explicit SEO Meta Title and SEO Meta Description Plain Text fields to every Collection. Do not rely on falling back to the Name field for meta titles, because the Name field is optimized for display whereas the meta title is optimized for search and the two often diverge.
5.4 Canonical Tag Handling
Webflow generates canonical tags automatically for every page. The canonical URL matches the rendered URL with the project's primary domain as the host.
Override canonical via Custom Code in the page's head:
<link rel="canonical" href="https://example.com/canonical-target-url">
When using this override, also remove Webflow's auto generated canonical via the Custom Canonical URL field in Page Settings. Otherwise two canonical tags will render, which Google handles unpredictably.
5.5 Robots Meta Per Page
Each page has a Search Engine Indexing toggle in Page Settings. OFF produces a noindex meta tag. Use for: utility pages (thank you pages, internal search results, login pages, account pages, checkout pages). Leave ON for everything intended to rank.
For finer control (nofollow without noindex, max-snippet directives, max-image-preview), inject Custom Code per page:
<meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
6. CMS Collections SEO
6.1 Collection Page Template Structure
Every Collection has one Collection Page template that renders every item in the Collection. The template is designed in the Designer with placeholder elements bound to Collection fields. Publishing the project renders one static page per Collection Item.
The template is where all CMS specific SEO patterns are installed:
- Dynamic meta title and description (Section 5.3)
- Dynamic Open Graph image
- Dynamic JSON-LD schema (Section 7)
- Dynamic breadcrumb markup
- Dynamic internal linking (related items, category links, author links)
6.2 Sitemap Inclusion
CMS Collection Items are automatically included in the project's sitemap.xml. No additional configuration required. Excluding specific Items requires using the Collection's "Hide from sitemap" field (a dedicated field type Webflow exposes) or upgrading to a Custom Sitemap.
Verify after launch: open https://example.com/sitemap.xml and confirm Collection Item URLs are present in the expected pattern.
6.3 Collection List Pagination
Collection Lists (the list components that display Collection Items, often on a blog index or category page) support pagination via Webflow's native pagination controls. The pagination renders as query string variants like ?page=2, ?page=3.
The gotcha: query string paginated pages do not have unique URLs in a way that supports independent SEO meta per page. Google treats them as duplicates of the base URL with pagination signals. For most marketing sites this is fine. For content publishers who need rel=prev and rel=next style pagination control or unique paginated URLs (/blog/page/2/), Webflow does not natively support it. Workarounds:
- Manual pagination via separate Collection List instances on separate pages (
/blog,/blog-2,/blog-3), brittle and only viable for small archives - Custom JavaScript that rewrites pagination URLs to clean path patterns, fragile
- Accept query string pagination and ensure the underlying content is well linked from other entry points
6.4 Collection Filter Pages
Some Webflow templates ship with filter pages (filter Blog Posts by Category, filter Products by Color). These typically use Webflow's Collection List filtering, which executes client side via JavaScript. Filtered states do not produce unique URLs and are not indexable as distinct pages.
For SEO valuable filter URLs (Category landing pages, Tag landing pages), build them as separate pages backed by a separate Collection (a Categories Collection with its own template) rather than relying on JavaScript filtering.
6.5 The Multi Reference Field Pattern
Collections support reference fields (link an item to one other item in another Collection) and multi reference fields (link to many). Common usage: Blog Posts reference an Authors Collection and have a multi reference to a Categories Collection.
For SEO this pattern enables:
- Author bio pages (Authors Collection has its own template, each Author has a page)
- Category archive pages (Categories Collection template lists all Blog Posts referencing this Category)
- Schema author attribution (Author field renders into Article schema as the author Person)
- E-E-A-T expert author pages with sameAs links to credentials, LinkedIn, ORCID
6.6 Static Pages vs CMS Collections Decision
When to use a Static Page:
- One off pages with unique structure (Home, About, Contact, Pricing)
- Pages with hand crafted design that does not repeat
- Pages without a clear content type pattern
When to use a CMS Collection:
- Three or more pages share the same structure and content type (Blog Posts, Case Studies, Team Members, Locations, Events)
- Content needs to be updated by non designer users via the Editor
- Pages need consistent meta, schema, and internal linking patterns
- Bulk content operations (CSV import, API updates) are anticipated
The decision is occasionally relitigated mid project when a content type that started as one Static Page grows to three or four pages. Migrating from Static Pages to a Collection is feasible but tedious. Decide early.
7. Schema Implementation
7.1 The No Native Schema Generator Reality
Webflow has no native schema generator. The platform produces Open Graph tags and basic meta tags but does not generate Organization, LocalBusiness, Article, Product, or any other schema.org JSON-LD. Schema is the SEO engineer's responsibility, installed via Custom Code.
This is in contrast to WordPress (Yoast and Rank Math generate schema), Shopify (auto generates Product schema), and Squarespace (auto generates limited schema). On Webflow, every schema block is hand authored or template generated.
7.2 Sitewide Schema in Project Custom Code
Sitewide schema (Organization, WebSite, optional LocalBusiness) lives in Project Settings > Custom Code > Head Code. It renders on every page of the site.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Brand",
"url": "https://example.com/",
"logo": {"@type": "ImageObject", "@id": "https://example.com/#logo",
"url": "https://example.com/assets/logo.png", "width": 600, "height": 200},
"sameAs": ["https://www.linkedin.com/company/example", "https://twitter.com/example"]
},
{
"@type": "WebSite",
"@id": "https://example.com/#website",
"url": "https://example.com/",
"name": "Example Brand",
"publisher": {"@id": "https://example.com/#organization"},
"potentialAction": {"@type": "SearchAction",
"target": "https://example.com/search?q={search_term_string}",
"query-input": "required name=search_term_string"}
}
]
}
</script>
This installs the foundational entity graph: Organization and WebSite cross referenced via @id URIs. The @id graph pattern is detailed in framework-schema.md Section 4.
7.3 Per Page Schema in Page Custom Code
Per page schema (WebPage, BreadcrumbList, FAQPage if the page has Q&A, HowTo if the page is a how to) lives in the page's Custom Code > Inside <head> tag slot.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebPage",
"@id": "https://example.com/services#webpage",
"url": "https://example.com/services",
"name": "Our Services",
"isPartOf": {"@id": "https://example.com/#website"},
"about": {"@id": "https://example.com/#organization"},
"breadcrumb": {"@id": "https://example.com/services#breadcrumb"}
},
{
"@type": "BreadcrumbList",
"@id": "https://example.com/services#breadcrumb",
"itemListElement": [
{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/"},
{"@type": "ListItem", "position": 2, "name": "Services"}
]
}
]
}
</script>
7.4 Dynamic Schema in CMS Templates
The most powerful Webflow schema pattern is CMS template schema with dynamic field embedding. The {{wf}} syntax embeds Collection field values into the script block.
For a Blog Post Collection Page template:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "{{wf {"path":"name","type":"PlainText"} }}",
"description": "{{wf {"path":"summary","type":"PlainText"} }}",
"image": "{{wf {"path":"main-image","type":"ImageRef"} }}",
"datePublished": "{{wf {"path":"published-on","type":"DateTime"} }}",
"dateModified": "{{wf {"path":"updated-on","type":"DateTime"} }}",
"author": {"@type": "Person",
"name": "{{wf {"path":"author:name","type":"PlainText"} }}",
"url": "{{wf {"path":"author:url","type":"PlainText"} }}"},
"publisher": {"@id": "https://example.com/#organization"}
}
</script>
Notes on the {{wf}} syntax: field path references the field's slug (kebab case). Reference field traversal uses colon notation (author:name). Type must match the field type (PlainText, RichText, ImageRef, DateTime, Link).
7.5 Schema for Webflow Ecommerce Products
The Product Page template renders Product schema with dynamic fields:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "{{wf {"path":"name","type":"PlainText"} }}",
"description": "{{wf {"path":"description","type":"PlainText"} }}",
"image": "{{wf {"path":"main-image","type":"ImageRef"} }}",
"sku": "{{wf {"path":"sku","type":"PlainText"} }}",
"brand": {"@type": "Brand", "name": "Example Brand"},
"offers": {"@type": "Offer",
"price": "{{wf {"path":"price","type":"Number"} }}",
"priceCurrency": "USD", "availability": "https://schema.org/InStock"}
}
</script>
Augment with AggregateRating, Review, and additional Offer variants per the Product schema patterns in framework-schema.md.
7.6 Schema Validation Workflow
After installing schema, validate every variant:
# From any local machine with curl
curl -s "https://example.com/" \
| grep -A 200 'application/ld+json' \
| head -250
Copy the JSON-LD block, paste into validator.schema.org, fix any errors. Then test the URL directly in search.google.com/test/rich-results for Google specific eligibility checks.
For every CMS template, validate at least three Items (the first, the most recent, and an edge case with optional fields empty). Webflow's {{wf}} syntax can produce malformed JSON when a field is empty (image returns empty string rather than null, date returns empty string rather than null). Guard against this by ensuring required fields are required at the Collection schema level.
7.7 Cross Reference to framework-schema.md
The full schema type catalog, the @id graph rationale, the sameAs network construction, and the AI citation implications of schema are in framework-schema.md. This Webflow framework specifies the Webflow installation mechanics; the schema strategy itself is type and content driven, not platform driven.
8. Webflow Performance Profile
8.1 Typical Field Data
Webflow sites in 2026 typically score Lighthouse mobile 65 to 85 on field data per Chrome User Experience Report aggregates, sample size approximately 18,000 Webflow sites measured in Q1 2026. Desktop scores typically 85 to 95. The gap is consistent: mobile suffers more than desktop from the JavaScript and font loading patterns the platform defaults to.
Within that distribution:
- LCP p75 mobile: typically 2.0 to 3.5 seconds
- CLS p75: typically 0.05 to 0.15
- INP p75: typically 150 to 250 ms
Sites with heavy Webflow Interactions, many web fonts, or many third party scripts skew worse. Sites with disciplined asset budgets and minimal interactions skew better.
8.2 What Webflow Does Well
The platform's edge distribution delivers HTML fast. Cached HTML hits typically resolve in 50 to 200 ms TTFB globally. Static asset delivery is similarly fast. Image optimization is automatic: Webflow generates responsive variants (1x, 2x, 3x) and serves WebP where supported. Code minification on publish is automatic. HTTP/2 is the default protocol.
These platform defaults handle most of the work the SEO engineer would otherwise do manually on a self hosted stack.
8.3 The Cumulative Layout Shift Risk From Web Fonts
The most common CLS regression on Webflow sites comes from web font loading. The platform supports Google Fonts, Adobe Fonts, and custom uploaded fonts. Each adds bytes and creates a window where the browser renders text in the fallback font before swapping to the web font, causing visible layout shift.
Mitigations:
- Use
font-display: swap(the default) and accept minor flash of unstyled text rather than the longer block period - Preload critical fonts in Project Custom Code:
<link rel="preload" href="..." as="font" type="font/woff2" crossorigin> - Limit to 2 to 3 font weights total across the site
- Use system fonts where reasonable, especially for body text
- Self host fonts rather than relying on Google Fonts CDN
8.4 The Webflow.js Interaction Library
Webflow's native Interactions feature ships a JavaScript bundle that loads on every page. Heavy use of Interactions inflates the JavaScript payload and the main thread blocking time, hurting INP.
Recommendations:
- Use Interactions for genuinely useful animation: scroll triggered fades for content reveal, simple hover transitions, modal triggers
- Avoid Interactions for decorative animation that does not serve the user: parallax effects, complex multi step timelines on every section, animation triggered on every interaction
- Audit the published page's network panel to see the size of Webflow.js and the inline interaction definitions
- For interaction heavy sites consider replacing some interactions with CSS only animations (transitions, transforms) which do not require the Interactions runtime
8.5 Custom Code JavaScript Budget
Every script added to Custom Code adds bytes. Common bloat:
- Analytics: Google Analytics 4 base script approximately 80 KB. GTM container approximately 150 KB plus per tag overhead
- Tag managers loading marketing pixels (Meta, LinkedIn, TikTok, X) easily add 200 to 500 KB
- Chat widgets (Intercom, Drift, Crisp) add 150 to 400 KB
- A/B testing snippets (VWO, Optimizely, Convert) add 100 to 300 KB and block render
- Personalization snippets add similar overhead
Budget recommendation: total third party JavaScript under 350 KB for marketing sites, under 250 KB ideal. Audit periodically by running Lighthouse and reviewing the JavaScript treemap.
8.6 Image Optimization Workflow
Webflow's automatic responsive image generation handles most image optimization, but the SEO engineer should:
- Upload images at the maximum useful resolution (2x or 3x of display size, no larger)
- Use JPG for photographs, PNG for logos and icons with transparency, SVG for line art and icons
- Compress before upload with tools like Squoosh, ImageOptim, or Sharp to remove unused metadata
- Set Alt text in the Designer for every image (Alt Text field in the image settings)
- Mark decorative images as decorative (the Decorative checkbox) so they get an empty alt attribute
- Use the Lazy Load setting on below the fold images (the default for most images)
8.7 Core Web Vitals Targets
The targets are platform agnostic per framework-pageexperience.md:
- LCP under 2.5 seconds mobile, p75
- CLS under 0.1, p75
- INP under 200 ms, p75
- TBT under 200 ms
On Webflow these targets are achievable with the discipline of: limited fonts, limited interactions, restrained third party JavaScript, proper image practice, and reasonable design complexity. Sites that violate any of those constraints regress quickly.
9. Localization in Webflow
9.1 Webflow Localize Overview
Webflow Localize launched in 2024 and shipped to general availability through 2024 and 2025. As of 2026 it is the platform's official multilingual layer. Supported features:
- Per locale subdirectory or subdomain (e.g. /es/ or es.example.com)
- Automatic hreflang annotation generation
- Locale specific content overrides on every text element, image, and link
- Locale specific CMS Collection items
- Locale specific media (different images per locale)
- Translation workflow integrations (Lokalise, Crowdin) via the Webflow API
- Per locale Site Settings (separate SEO settings per locale)
9.2 Subdirectory vs Subdomain Strategy
Both are supported. Recommendation:
- Subdirectory (example.com/es/) is the default and easier choice for most projects. Inherits domain authority. Simpler analytics setup. Default for Webflow Localize.
- Subdomain (es.example.com) is occasionally preferred for regional brand differentiation or for cases where the locale needs separate operational control. More complex DNS. Treated as more separate by search engines.
- ccTLD (example.es) is not supported by Webflow Localize. Would require separate Webflow projects per ccTLD, which is operationally expensive.
Detail on the broader international SEO strategy lives in framework-international.md.
9.3 Hreflang Generation
Webflow Localize auto generates hreflang annotations across all locales. The generated annotations appear in the page head as:
<link rel="alternate" hreflang="en" href="https://example.com/page">
<link rel="alternate" hreflang="es" href="https://example.com/es/page">
<link rel="alternate" hreflang="x-default" href="https://example.com/page">
Verify after publication: open a localized page, view source, confirm the hreflang block is complete and the URLs resolve. The full hreflang implementation reference is in framework-hreflang.md.
9.4 Per Locale Content Override Workflow
In the Webflow Designer, with Localize active, the Designer shows a Locale Switcher in the top bar. Switching to a non default locale puts the Designer in override mode: every element edited becomes a locale specific override. Switching back to the base locale shows the original. Switching to a different locale shows that locale's overrides.
This is powerful but requires discipline. Common pitfalls:
- Forgetting to switch to a locale before editing produces an unintended base locale change
- Overriding too many elements creates maintenance burden (every base locale change must be revisited per locale)
- Not overriding enough elements leaves base locale text bleeding through the localized page
9.5 Localized CMS Collections
CMS Collections support per locale Item content. Each Collection Item has fields per locale. Adding a new locale exposes new field slots per Item.
The workflow: author the Item in the base locale, switch to the target locale, fill the locale specific fields. The Item URL slug can be localized per locale, producing localized URLs like /es/articulos/mi-titulo while the base is /en/articles/my-title.
9.6 Localization Limitations and Workarounds
Webflow Localize covers most multilingual needs but has gaps:
No automatic translation: the platform does not translate content for you. Integrate with a translation management system (Lokalise, Crowdin, Smartling) via the Webflow API or accept manual translation workflow.
Limited locale specific schema: dynamic schema in CMS templates renders the same {{wf}} field reference regardless of locale, but because the field values themselves are localized the rendered schema is locale specific. Schema in Project Custom Code is sitewide and not locale aware. Override per locale by moving sitewide schema to per page custom code if locale specific schema is required.
Limited locale specific redirect rules: redirect rules apply across all locales. Cannot define a redirect that fires only for one locale's URL pattern.
Workflow complexity at scale: managing 5+ locales with frequent base locale changes becomes operationally heavy. For high locale count sites consider a translation management system from day one.
10. URL Structure and Redirects
10.1 URL Slug Conventions
Webflow URL slugs follow these patterns:
- Static pages:
/page-namewith optional folder nesting/parent/child - CMS Collection Items:
/[collection-slug]/[item-slug]where collection slug defaults to the Collection name kebab cased - Default Collection slug example: a Collection named Blog Posts produces URLs
/blog-posts/[item-slug]unless the Collection slug is renamed in Collection settings
Override the Collection URL prefix in Collection Settings > URL. Common rename: Blog Posts Collection's slug renamed from blog-posts to blog, producing /blog/[item-slug].
Per Item slug is editable on every Collection Item. Best practice: short, descriptive, keyword inclusive, hyphenated, lowercase, no stop words unless they aid clarity.
10.2 Folder Organization
Static pages can be organized into folders via the Folders feature in Pages panel. Folders produce URL prefixes: a page Services inside a Solutions folder renders at /solutions/services.
For information architecture this enables grouping related static pages under a logical parent URL. Note: folders cannot mix with Collection URLs. A static page cannot live under a Collection's URL prefix.
10.3 Trailing Slash Behavior
Webflow URLs render without trailing slashes by default. /about resolves; /about/ typically also resolves and Webflow handles the redirect, but the canonical is /about. Verify after launch.
If the project migrated from a stack that used trailing slashes (some WordPress installs, some Jekyll sites), ensure 301 redirects are in place from the trailing slash variant to the non trailing slash canonical, or vice versa. Inconsistency hurts.
10.4 The 301 Redirects Panel
Project Settings > Hosting > 301 Redirects is where every redirect rule lives. The panel supports:
- Single URL redirects (old path to new path)
- Wildcard prefix redirects (e.g.
/old-blog/*redirects to/blog/*with the wildcard preserved) - Bulk CSV import (one rule per line, old comma new)
Limitations vs nginx style rewrite:
- No regex matching beyond simple wildcards
- No header based routing
- No query string based redirect
- No conditional redirect (e.g. only when User-Agent matches)
- Redirect chain depth not exposed; avoid chains over two hops
10.5 Redirect Chain Discipline
Every redirect adds latency and risks. Audit periodically:
# From a local machine
curl -sI -L "https://example.com/old-url" 2>&1 | grep -iE "(HTTP|Location)"
Output should show one 301 (or 302) followed by a 200. If multiple 301s chain, consolidate. Chains over three hops are penalized in some cases per John Mueller commentary, Twitter 2020.
10.6 Migration Redirect Maps
When migrating from another platform to Webflow, the redirect map is the most important pre launch artifact. Detail in Section 13 and in framework-migration.md.
10.7 The Lack of Fine Grained Rewrite Control
A self hosted nginx or Apache stack supports arbitrary URL rewrites: parameter normalization, header based routing, geo IP based redirects, A/B routing, conditional redirects based on cookies. Webflow's redirect system does not. For sites that require these patterns, Webflow is the wrong platform.
Workarounds when the requirement is shallow:
- JavaScript based redirects in page Custom Code (slow, fragile, hurts SEO)
- DNS level routing via a separate DNS provider (rare, complex)
- A reverse proxy in front of Webflow (defeats the purpose of platform hosting)
When these workarounds become necessary, the broader recommendation is to move off Webflow.
11. Custom Code Integration
11.1 The Three Custom Code Scopes Recap
- Project level: Project Settings > Custom Code. Head Code and Footer Code. Sitewide.
- Per page: Page Settings > Custom Code. Inside
<head>tag and Before</body>tag. Page specific. - CMS template: same per page slots on a Collection Page template. Renders on every Collection Item using the template, with dynamic field embedding via
{{wf}}syntax.
The line of demarcation: things that go on every page live in Project. Things specific to one page live in the page. Things specific to one Collection type live in the template.
11.2 The Custom Code Character Limit
Most plans cap Custom Code at 10,000 characters per slot. Enterprise plans raise the cap. The cap counts every character including whitespace.
When the cap is hit:
- Minify the JSON-LD blocks (remove whitespace, use compact JSON)
- Move some logic from inline scripts to external script tags loading from a CDN
- Audit for redundant or unused code
External script tags are the most common workaround:
<script src="https://cdn.example.com/site-scripts.js" defer></script>
The trade off: external scripts add a round trip and add a dependency. Webflow's edge does not deliver external CDN content; you depend on the external CDN's reliability.
11.3 Analytics Integration Patterns
Google Tag Manager is the typical container. Install the standard GTM snippet in Project Custom Code Head Code and the noscript iframe in Footer Code.
Google Analytics 4 direct install (without GTM) replaces the GTM snippet with the gtag snippet. GA4 alone is lighter weight than GTM containing GA4; use GA4 alone when no other tag manager dependencies exist.
Privacy compliant analytics (Plausible, Fathom, Simple Analytics) install via a single script tag in head:
<script defer data-domain="example.com" src="https://plausible.io/js/script.js"></script>
These do not require cookie consent in most jurisdictions, reducing the regulatory overhead of a tag based setup.
11.4 The JavaScript Size Budget Consideration
Every script tag added grows the JavaScript payload and adds main thread blocking time. Audit periodically:
# From any local machine with curl
curl -s "https://example.com/" \
| grep -oE 'src="[^"]+\.js[^"]*"' \
| sort -u
Cross reference each script against its purpose. Remove unused scripts. Defer non critical scripts with the defer attribute. Async scripts only when execution order does not matter.
11.5 Embedded JSON-LD Block Patterns
Section 7 covers schema installation. Repeat the pattern: sitewide entity schema in Project Custom Code, per page WebPage and BreadcrumbList schema in Page Custom Code, dynamic Article or Product schema in CMS template Custom Code.
The dynamic field embedding syntax is Webflow specific and not portable. When migrating off Webflow, every CMS template schema block must be rewritten in the destination platform's templating language. Plan for this in migration scoping.
11.6 Verifying Custom Code Renders
After publishing, verify the Custom Code rendered:
curl -s "https://example.com/about" | grep -i "ld+json"
If the JSON-LD block is missing, common causes: the page was not republished after the Custom Code edit, the page has been deleted, the Custom Code field saved with an unclosed tag breaking the parser.
For schema specifically, after confirming presence, validate at validator.schema.org and search.google.com/test/rich-results.
12. Webflow Limitations and Workarounds
12.1 No Real Server Side Dynamic Rendering
Every page is pre rendered at publish time. There is no per request server rendering. Personalization, A/B testing, geolocation routing, and time of day variants happen client side via JavaScript or not at all. Workarounds: client side personalization via JavaScript reading visitor signals (cookies, query parameters, geo IP), or a third party edge service layered in front (defeats the purpose of Webflow hosting). For most marketing sites the constraint is invisible. For sites needing true SSR personalization, Webflow is the wrong platform.
12.2 No Native A/B Testing
Webflow does not include A/B testing as a native feature. Third party tools fill the gap: Convert.com (Webflow specific integration), VWO (full featured A/B and multivariate), or Optimizely. Install the testing tool's JavaScript in Project Custom Code Head and configure experiments in the tool's dashboard. The cost: A/B testing scripts block render and inflate the JavaScript payload, hurting Core Web Vitals. Run experiments with discipline and remove the snippet between experiments if possible.
12.3 No Native Edge Function Integration
Self hosted stacks can install edge functions for request transformation, authentication, A/B routing, and bot mitigation. Webflow Cloud does not expose this layer. The edge is platform managed and not extensible. When edge functions are required, the recommendation is to move off Webflow.
12.4 No Native Workflow Beyond Webflow Logic
Webflow Logic handles simple flows (form submission to email, webhook routing). Complex workflow (multi step approval, conditional content publishing, scheduled updates) requires external automation (Zapier, Make, n8n) or a different CMS. For SEO this rarely matters, but for editorial workflows on content publisher sites the limitation surfaces.
12.5 The Custom Code Character Limit Recap
10,000 characters per Custom Code slot on most plans. Hit easily on complex projects with sitewide schema, analytics, third party scripts. Workarounds in Section 11.2.
12.6 The CMS Item Limit
CMS plan caps at 2,000 items. Business at 10,000. For sites approaching the cap:
- Audit and archive unused Items
- Combine related Collections (merge two thin Collections into one with a Type field)
- Move to Webflow Enterprise (no cap)
- Migrate the high volume content type to a headless CMS with the Webflow site consuming via the API
The last option (headless CMS + Webflow frontend) is occasionally useful but adds complexity. The architectural call usually flips toward a full headless build at this point.
12.7 The Lack of Programmatic Page Generation
Beyond CMS Collections, Webflow does not support programmatic page generation. A site with 5,000 location specific landing pages, where each page is generated from a data row, fits awkwardly: a Collection with 5,000 items is feasible up to the plan cap, but the URL pattern, the schema, and the design template are all locked into Collection conventions.
For programmatic SEO at scale (true programmatic SEO meaning thousands or tens of thousands of pages), Webflow is not the right platform. Static site generators (Hugo, 11ty, Astro) or Next.js with on demand revalidation handle this much better.
12.8 No Native Headless or API Routes
Webflow exposes a Content API for reading and writing Collection Items, but does not support custom API routes within the project. A page cannot be a JSON endpoint. A page cannot accept a POST request and return a custom response.
For sites that need a backend, the backend lives elsewhere (a separate Node.js service, a serverless function on another provider, or a self hosted API on the client's infrastructure) and Webflow consumes it client side.
13. Migration to and from Webflow
13.1 Migration Categories
Three common Webflow related migrations:
- WordPress to Webflow: typically driven by client desire for visual design control, dissatisfaction with WordPress maintenance burden, or rebrand timing
- Squarespace to Webflow: typically driven by client outgrowing Squarespace design limitations
- Webflow to Next.js: typically driven by client growing into engineering team that wants code level control, or sites hitting Webflow platform limits
A fourth category (Webflow to WordPress) is rare and usually driven by editorial workflow requirements that Webflow cannot serve.
13.2 The Universal Migration Workflow
Regardless of direction, every migration follows the same workflow per framework-migration.md:
- Inventory the source: every URL, every page, every Collection, every asset, every meta value
- Map the destination: URL structure, page architecture, content model
- Build the redirect map: source URL to destination URL for every URL that changes
- Build the destination site: replicate or improve content, install schema, set up analytics
- Verify on staging: crawl with Screaming Frog, validate every meta, every schema block, every redirect
- Cutover: switch DNS, monitor immediately
- Submit new sitemap to GSC, request indexing, monitor Search Console for crawl errors
13.3 WordPress to Webflow
The most common direction.
Inventory: export WordPress content as XML via WordPress > Tools > Export. Map pages to Static Pages, posts to a Blog Posts Collection, custom post types to dedicated Collections.
Content migration: WordPress posts bulk import to a Webflow Collection via CSV. Use a converter tool (wp2webflow or hand rolled script) to translate WP export XML to Webflow CSV format with field mapping.
Asset migration: download the WordPress media library, re upload to Webflow asset manager. Hybrid patterns referencing the old WordPress media URLs are rare and brittle.
Schema reinstallation: any schema generated by Yoast or Rank Math must be reinstalled in Webflow via Custom Code per Section 7.
Redirects: map every WordPress URL to its Webflow equivalent. Common patterns: /?p=123 to /blog/[slug], /2025/01/post-slug/ to /blog/[slug], /category/foo/ to /categories/foo. Install in Project Settings > Hosting > 301 Redirects, bulk via CSV.
Verification: crawl staging with Screaming Frog, cross reference against the WordPress export, confirm every page exists, every redirect resolves, every schema block validates.
13.4 Squarespace to Webflow
Squarespace does not export content as cleanly as WordPress. Use Settings > Advanced > Import / Export which produces XML similar to WordPress format. Some content types do not export (Member Areas, Commerce, Forms): plan for manual recreation. Convert the export to Webflow CSV. Map Squarespace URLs to Webflow URLs (patterns vary by template family). Reinstall schema fully since Squarespace generates limited schema natively.
13.5 Webflow to Next.js
The reverse migration when a project outgrows the platform. Every Static Page becomes a Next.js page. Every CMS Collection becomes either a dynamic route reading from a headless CMS (Sanity, Contentful, Strapi) or a static markdown directory. Use the Webflow Content API to extract Collection Items as JSON. Every {{wf}} schema template must be rewritten as a Next.js component generating JSON-LD; cross reference the patterns in framework-cross-stack-implementation.md Section 7. Install redirects in next.config.js or the production nginx config. Re measure Core Web Vitals after migration.
13.6 The CSV Import / Export Mechanic
Webflow CMS supports CSV import and export per Collection. The CSV must match the Collection's field schema (column headers match field slugs, values match field types).
For bulk content migration this is the workhorse. Bash example to format a CSV:
#!/bin/bash
# Convert WP export to Webflow CMS CSV for Blog Posts Collection
# Assumes wp-export.json contains posts in a JSON array
jq -r '.posts[] | [.title, .slug, .content, .excerpt, .featured_image, .date_published, .author] | @csv' \
/var/www/sites/[domain]/migration/wp-export.json \
> /var/www/sites/[domain]/migration/webflow-blog-posts.csv
Open the CSV, add the header row matching the Webflow Collection field slugs, save, then upload via the Webflow CMS Designer.
13.7 Migration Cross Reference
The general migration playbook (pre launch checklist, cutover procedure, post launch monitoring, GSC validation) lives in framework-migration.md. This Webflow framework specifies Webflow specific migration mechanics. The two frameworks compose: framework-migration.md for the strategy, this framework for the platform mechanics.
14. Webflow Audit Checklist
The 25 item Webflow specific audit. Run on every paid client project quarterly. Score yourself out of 25.
| # | Criterion | Pass |
|---|---|---|
| WB1 | Project Settings > SEO > Search Engine Indexing toggle ON in production | |
| WB2 | Robots.txt configured allowing indexing, blocking utility paths | |
| WB3 | Sitemap auto generated and submitted to Google Search Console | |
| WB4 | Sitewide meta title template configured with brand suffix | |
| WB5 | Per page meta title and description unique on every page | |
| WB6 | Default Open Graph image configured at 1200x630 | |
| WB7 | Per page Open Graph image overrides on key pages | |
| WB8 | Canonical tag strategy validated (platform default or custom) | |
| WB9 | Sitewide Organization and WebSite schema in Project Custom Code | |
| WB10 | Per page WebPage and BreadcrumbList schema where appropriate | |
| WB11 | CMS template schema dynamic via {{wf}} field embedding |
|
| WB12 | Schema validated at validator.schema.org and Rich Results Test | |
| WB13 | CMS Collections used for repeating content patterns | |
| WB14 | Collection URL prefixes optimized (e.g. blog not blog-posts) | |
| WB15 | CMS Item slugs SEO optimized per item | |
| WB16 | Reference and multi reference fields used for author and category | |
| WB17 | Webflow Localize configured if multilingual, hreflang verified | |
| WB18 | 301 redirects installed for every legacy URL if migrated | |
| WB19 | Redirect chains audited at under 3 hops | |
| WB20 | Custom 404 page designed and tested | |
| WB21 | Web fonts limited to 2 to 3 weights, preloaded if critical | |
| WB22 | Webflow Interactions audited for performance impact | |
| WB23 | Third party JavaScript audited under 350 KB total | |
| WB24 | Images Alt text complete, decorative images marked decorative | |
| WB25 | Mobile Core Web Vitals targets met (LCP under 2.5s, CLS under 0.1, INP under 200ms) |
Score:
- 23 to 25: world class Webflow implementation
- 19 to 22: strong Webflow site, minor gaps
- 15 to 18: average Webflow site, material gaps requiring sprint level remediation
- Under 15: significant SEO debt, requires structured remediation engagement
Audit results stored at /var/www/sites/[domain]/audits/webflow-audit-[YYYY-MM-DD].md. Re run quarterly. Track score trajectory across audits to demonstrate engagement value.
End of Framework Document
This framework documents Webflow as an SEO, AEO, and AIO platform for 2026. It assumes the Webflow decision has been made and specifies how to do Webflow well rather than re litigating the platform choice.
Companion documents:
- framework-cross-stack-implementation.md for non Webflow stack equivalents
- framework-schema.md for the broader schema strategy
- framework-hreflang.md for hreflang implementation
- framework-international.md for international SEO strategy
- framework-migration.md for the general migration playbook
- framework-pageexperience.md for Core Web Vitals
- framework-technicalseo.md for the general technical SEO audit overlay
- framework-accessibility.md for accessibility
- framework-mobileseo.md for mobile specific optimization
- framework-aicitations.md for AI search citation strategy
- framework-aioverviews.md for Google AI Overviews
The framework is reviewed quarterly as Webflow platform features evolve.
Want this framework implemented on your site?
ThatDevPro ships these frameworks as productized services. SDVOSB-certified veteran owned. Cassville, Missouri.
See Engine Optimization service ›