HubSpot's help centre states the rule that shapes every HubSpot to Webflow migration: "URL redirects only work for domains connected to and hosted in HubSpot." The day your domain points at Webflow, every redirect you built in HubSpot stops firing. The second rule is just as quiet. HubSpot marks form submissions from a domain you have not added to its tracking settings as spam (HubSpot Knowledge Base, August 2026).
This guide covers the common case: the website moves to Webflow, HubSpot stays as the CRM and marketing platform, and nobody loses the contact history or the source reports. Every limit below comes from HubSpot's or Webflow's own documentation, read in October 2026.
What moves, what stays in HubSpot and what you rebuild
Keeping HubSpot as the CRM means contacts, deals, emails, workflows and lists never move. Only content and pages do.
| HubSpot asset | After the move | How it gets there |
|---|---|---|
| Contacts, deals, workflows, lists, emails | Stay in HubSpot | No action |
| Website pages | Webflow static pages | Rebuilt from the HTML export as a visual reference |
| Blog posts | Webflow CMS Collection | Blog export as CSV, then CSV import |
| HubSpot forms | Embedded in Webflow, or replaced by mapped Webflow forms | See the forms section |
| Landing pages | Rebuilt in Webflow, or kept in HubSpot on a subdomain | A decision per campaign |
| URL redirects | Webflow 301 redirects | Exported as CSV from HubSpot |
| Live chat, pop-up CTAs | Stay in HubSpot, loaded by the tracking code | Tracking code on every Webflow page |
| Smart content rules | No equivalent | Rebuild as separate pages or drop |
| Blog subscription emails | HubSpot RSS email reading the Webflow feed | Marketing Hub Professional or Enterprise |
Sources: HubSpot Knowledge Base, export, redirects and RSS email articles; Webflow Help Center, HubSpot App; read 2026-10-21
Landing pages are the real decision. Rebuilding them in Webflow puts everything on one platform. Keeping them in HubSpot keeps the marketing team's editor, but they need a subdomain, such as go.example.com, once the main domain leaves.
Smart content is the quiet loss. HubSpot's smart content rules are set inside HubSpot's own page editor, so nothing about them comes across to Webflow. If a page changes by lifecycle stage or country, write that down now and decide whether it becomes two pages or one.
Export everything before you touch DNS
HubSpot's export article lists two content exports and one data export. From Content, then Website Pages, Landing Pages or Blog, the Actions menu offers "Export all pages and blog posts (HTML)". The files arrive as a download link by email. The blog has its own export, Actions then Export blog posts, as CSV, XLS or XLSX. Page-level traffic data can be exported from the web traffic analysis report on Marketing Hub or Content Hub Professional or Enterprise.
Add a fourth: the URL Redirects tab under Domains and URLs has an Export button that writes every redirect to a CSV file. It is the only record of years of URL changes.
Keep the dates. Map the blog CSV's publish date to its own Webflow date field and sort by it, otherwise every post looks as if it was written on import day.
Check for HubDB. If the site uses HubDB tables for team pages or office lists, export each table separately and model it as a Webflow Collection.
The URL map: HubSpot paths into Webflow Collections
HubSpot's own help examples show a blog at /blog, a tag page at /blog/tag/news and an author page at /blog/author/john-smith, each with an rss.xml feed beneath it. Webflow serves every CMS item under one Collection folder followed by the item slug. That makes HubSpot blogs easier to move than WordPress blogs with root-level posts, which our WordPress to Webflow migration checklist covers.
| HubSpot URL | Webflow URL | Redirect rule |
|---|---|---|
| /blog/post-name | /blog/post-name (Collection "blog", same slug) | None |
| /blog/tag/news | /tag/news (a Tags Collection) | Old path /blog/tag/(.*) to /tag/%1 |
| /blog/author/john-smith | /author/john-smith (an Authors Collection) | Old path /blog/author/(.*) to /author/%1 |
| /blog/page/2 | No equivalent | Old path /blog/page/(.*) to /blog |
| /blog/rss.xml | The Collection's RSS feed | One rule if the paths differ |
| Website page, for example /pricing | Static page at the same path | None |
| Landing page kept in HubSpot | Same page on a HubSpot subdomain | One rule per page, tested |
| Every row in HubSpot's redirect CSV | Webflow 301 redirect | Rewritten with escaped old paths |
Sources: HubSpot Knowledge Base, RSS feed URLs and URL redirects; Webflow Help Center, redirects; read 2026-10-21
Four Webflow rules decide whether those redirects fire.
Escape the old path. Webflow requires a % before special characters in old paths, including the hyphen, the underscore, the question mark and the equals sign. /blog/old-post becomes /blog/old%-post. The target path needs no escaping.
Order is age. Webflow runs redirects in the order they were added, oldest first, so add specific rules before the wildcards that would catch them.
Wildcards over volume. Webflow sets no hard limit but recommends 1,000 rules at most, because every rule is written to a file browsers download. A HubSpot redirect export that has grown for years can be close to that on its own.
Kill the chains. Rewrite each old HubSpot rule to point straight at its final Webflow URL.
If the blog lived on a subdomain such as blog.example.com, Webflow lets you connect more than one domain to a site and set one as the default. We would connect the old subdomain and test that every post lands on its new path.
Forms: three ways to connect, and what each does to attribution
The form decides whether a submission becomes a contact with history or an orphan with an email address.
| Method | Where the submission goes | Styling | Watch for |
|---|---|---|---|
| Embedded HubSpot form | Straight to HubSpot, bypassing Webflow | HubSpot's style editor, or your CSS with developer code | Developer code needs Marketing Hub or Content Hub Professional or Enterprise |
| Native Webflow form mapped through the HubSpot App | Webflow first, then a copy to HubSpot | Webflow Designer | Plain text inputs only, per Webflow's guide; counts towards Webflow form limits |
| Non-HubSpot forms (collected forms) | Captured by the tracking code | Webflow Designer | No hidden fields, no iframes; same cookie means one contact |
Sources: Webflow Help Center, HubSpot App; Webflow Blog, April 2026; HubSpot Knowledge Base, external forms and non-HubSpot forms
Embedded forms keep the most. Submissions post directly to HubSpot and, per Webflow's help centre, do not count towards your Site plan's form limits. HubSpot still requires its tracking code on the page and the domain in your tracking settings, otherwise the submission is flagged as spam.
Mapped forms are pretty but narrow. Webflow's own guide says only plain text inputs map. Dropdowns, radio buttons and checkboxes do not. Every field also needs a real Label element. If your demo form asks for company size from a dropdown, either rebuild that field as text or embed the HubSpot form instead.
Collected forms drop hidden fields. HubSpot's requirements are strict: a static form in form tags, an email input, a standard submit button, no iframe, no script bound to the submit event, and no hidden fields collected. Teams that pass UTM parameters or ad click IDs through hidden fields lose them on this route.
Watch for duplicates. Webflow's help article for the legacy HubSpot App notes that once the tracking code is on, HubSpot captures every form on the site, mapped or not, into a new form named after the Webflow form ID. With mapping and collection both on, test whether one submission becomes two.
Attribution: what keeps Original Traffic Source intact
HubSpot defines Original Traffic Source as the first known web source through which a contact interacted with your business. On a website, that link runs through cookies. hubspotutk identifies the visitor and is passed to HubSpot on form submission; __hstc holds first, last and current visit timestamps. Both expire after six months.
The practical reading: keep the same domain and the same HubSpot account's tracking code, and a visitor who first arrived on the HubSpot site should still be the same visitor on the Webflow site. We would confirm it in a clean browser before launch rather than assume it.
| Check | How | What failure looks like |
|---|---|---|
| One tracking code per page | Search the published source for the HubSpot loader script | Two copies, so only the first fires |
| Domain added under Advanced Tracking | Tracking and Analytics settings | Embedded form submissions marked as spam |
| Consent banner covers the Webflow domain | Submit a test form with consent declined, then accepted | Contacts with no page views on their timeline |
| Test contact shows its first visit | Arrive from a tagged link, browse, then submit | Source shows Direct traffic or nothing at all |
| Page views carry a content type | Add the setContentType snippet to blog templates | Credit lands in "Pages without asset type" |
| Live chat and pop-up CTAs load | Visit three page types | Nothing appears, because the code is missing |
Sources: HubSpot Knowledge Base, tracking code, site tracking, external forms, source properties and attribution reports; Webflow Blog, April 2026
Add the domain, once. HubSpot asks you to add externally hosted domains under Advanced Tracking. Adding the top-level domain covers its subdomains; cross-domain linking is only needed for distinct domains, such as a separate product domain.
Tell HubSpot what the pages are. By default, attribution credit for an externally hosted page lands under "Pages without asset type". HubSpot documents a one-line setContentType snippet, with values for blog-post, landing-page, standard-page and knowledge-article. Put it in each Webflow Collection template. It is not retroactive, so add it before launch.
Consent changes the timeline. Webflow's guide notes that submissions without tracking consent still reach HubSpot, but without page view history.
The cutover sequence
- Export the HTML, blog CSV, traffic data and redirect CSV.
- Crawl the live site and mark every URL with search traffic or backlinks.
- Build the URL map and decide where each landing page lives.
- Import authors and tags first, then posts.
- Pick a form method per form.
- Install the tracking code once, add the domain and the setContentType snippet.
- Write the Webflow redirects and test every row on staging.
- Move HubSpot landing pages to their subdomain, then point the main domain at Webflow.
- Repoint the RSS email and run the attribution checks.
- Keep redirects for at least a year, Google's guidance.
Google says a small to medium site can take a few weeks for most pages to move in search, and recommends permanent redirects such as 301 or 308.
What this means for a HubSpot team moving to Webflow
We build marketing sites in Webflow and applications in Next.js, so we are not neutral about the destination. If you are still deciding whether to move at all, our Webflow vs HubSpot CMS comparison covers cost, speed and lock-in; this page assumes the decision is made and the CRM stays.
The parts that decide whether sales trusts the new site are the redirect file, the form method and the attribution checks. In our four-week marketing-site process we would put the exports and the URL map in week one, before design, and the attribution checks in the final week with a named owner on the HubSpot side. Our marketing website service page explains how we scope a migration build.


