How to Export Webflow CMS Pages as Static Routes Without Missing Posts

I use one rule before moving a Webflow marketing site to static hosting: do not call the export complete until a real collection item has survived the trip. Webflow’s own code export does not include CMS content or functionality, so a normal ZIP can leave a blog or product resource area looking present but empty. A browser-based crawl such as ExFlow’s Webflow exporter can turn public collection pages into static routes—but only if I first make the route inventory and test it like a customer would.

This is a practical route-recovery workflow for a public Webflow blog, portfolio, or resource center. It is not a way to preserve server-side features: native forms, site search, Ecommerce checkout, user accounts, password protection, and Editor access need their own replacement or an explicit exception.

Hand-drawn sitemap of Webflow collection and item routes

The tiny route list that catches the expensive mistake

A CMS migration goes wrong when we only test the collection template, not the individual URLs that contain the useful content. I make a route card before exporting. It takes five minutes and gives the handoff a shape.

Route type One route to record What I check after export
Collection index /journal/ Cards, pagination or load-more behavior, thumbnails, and every link destination
Newest item /journal/newest-post/ Title, hero, body, author/date, canonical URL, and related links
Oldest useful item /journal/evergreen-guide/ Old assets, legacy embeds, and internal links
Media-heavy item /journal/video-or-download/ Images, video poster, PDF, responsive srcset, and lazy loading
A non-CMS control /about/ Navigation, CSS, scripts, and site-wide footer links

Pick actual live URLs, not placeholders. A small sample is a release signal, not proof that every item is correct; it tells you whether to investigate the crawl before you point a domain anywhere. This is the same small-sample habit I use when checking a Webflow content freeze before a redesign.

Export the published site, not a sketch of it

For an archive that people will actually browse, I start with the published URL. In ExFlow, the useful controls are the ones that include all public pages plus CSS, JavaScript, and images/media. Its Webflow exporter says it discovers public pages from the sitemap and internal links, and exports collection item pages as individual static pages. The output can be downloaded as a ZIP or sent to Git, S3, FTP, or ExFlow Hosting.

The point is not to make a generic scraper win a beauty contest. The point is to capture the browser-visible version of a site whose CMS routes, Webflow runtime, font files, and media may be spread across different URLs. If the site has a small handful of pages, a simple downloader may be enough. If the public value sits in collection items, use a tool and a test plan that make those individual routes visible.

Before pressing export, I write three boundaries in the ticket:

  1. Public pages only. A crawler cannot turn private dashboard data into a static site.
  2. Forms need a destination. Decide on an endpoint or provider before the static version replaces the original.
  3. No silent feature promises. Mark search, account areas, checkout, and protected content as retained elsewhere, replaced, or intentionally removed.

That last line prevents a static archive from being mistaken for a full application migration. It is the same distinction that matters when replacing Framer forms and analytics before static hosting.

Hand-drawn static site QA across device sizes

Run a three-item crawl check before deployment

Once the files are local or deployed to a preview URL, I test the route card in this order:

  1. Open the collection index in a normal browser window. Click an item rather than pasting its URL.
  2. Open the newest item directly in an incognito window. Confirm its title, body, image, and canonical tag describe that item—not the collection template.
  3. Open the oldest or media-heavy item on a phone-sized viewport. Watch for missing images, broken relative paths, and layout shifts from a missing font or script.
  4. View page source or use the browser network panel for the selected items. A 200 response is useful; a page full of empty collection markup is not.
  5. Follow one article-to-article link and one navigation link from each sample. This catches a surprising number of rewritten-path errors.

I also check a route with a trailing slash and the same route without one if the new host treats them differently. A redirect map may still be necessary when an old URL shape is changing; my Squarespace static migration checklist has the same principle in a different builder.

Keep a short exception receipt

This is the note I leave with a client or teammate:

Static export: 2026-11-07
Source: published Webflow URL
Checked: index + newest item + oldest/media-heavy item + about page
Working: HTML, styles, public CMS routes, media, navigation
Exceptions: form endpoint, search, checkout, protected pages
Deployment: preview URL checked on desktop and phone
Owner of exceptions: name and due date

The receipt is deliberately boring. It is more useful than a vague message that says “the site was exported.” If a later redesign or hosting change breaks something, you know which surface was demonstrated and which service was always outside the static boundary. That is why I also like to keep an export in version control rather than only in a download folder—especially after building a redirect map before moving hosting.

Hand-drawn archive-to-Git deployment flow

Choose the boring deployment path on purpose

After the route check, choose one destination and state who owns it. A ZIP is right for a backup or a client handoff. Git is useful when the static output belongs in a reviewed deployment flow. S3-compatible storage or FTP can fit an existing hosting setup. ExFlow also offers a hosted path if the goal is fewer moving parts.

Do not choose a destination before the output has passed the route card. A perfect deploy of an incomplete CMS export is still incomplete. Conversely, a successful route check gives you a portable snapshot that is genuinely useful for staging, handoff, cost planning, or a future rebuild.

ExFlow has separate exporters for Framer and Squarespace, but I would keep this workflow platform-specific: Webflow’s native code-export limits are exactly why the CMS-route test belongs here.

My final five-minute release pass

  • One collection index loads and links to actual exported items.
  • One new, one old, and one media-heavy item have content and images.
  • A phone viewport has no missing fonts, overlays, or broken navigation.
  • Canonical tags and key metadata describe the current route.
  • Every server-backed feature has an owner, replacement, or explicit “not included” label.

If those five checks pass, run the Webflow export and keep the route receipt beside the deployment. That is the useful version of a static copy: not just files on disk, but public CMS content you can prove still has a route home.