All posts
Platform migrations

HubSpot CMS to Framer Migration Guide

HubSpot to Framer migration, step by step: rebuild the site, embed HubSpot forms the right way in Framer, and run UTM and attribution checks before launch.

By Mehdi Hassan7 min read

The short answer

A HubSpot to Framer migration means rebuilding your pages in Framer, moving the blog into a Framer CMS collection, adding the HubSpot tracking code in Framer's site-wide custom code, and placing HubSpot forms with an embed or a small code component. Before launch, test that every form submission records the right page, UTM source and contact in HubSpot.

Key takeaways

  • Use the same HubSpot form IDs on Framer so workflows and notifications keep firing.
  • A code component that renders the HubSpot form in the page gives the most reliable attribution.
  • Check that page views register when visitors move between Framer pages, not only on first load.
  • Run a written UTM test for every form before switching DNS.
  • Recreate HubSpot redirects in Framer; HubSpot's redirect tool stops applying after the move.

Part of Leaving HubSpot CMS: Where to Move Your Website and Keep the CRM

Framer is a fast way for a small team to ship a polished, design-led marketing site, and it pairs well with HubSpot as the CRM. Most of the move is a normal rebuild. The part that's specific to Framer is how HubSpot forms and tracking behave inside it, and that's where attribution quietly breaks if nobody checks. This how-to focuses on that. For the overall picture of what stays in HubSpot and what moves, read our hub on leaving HubSpot CMS while keeping the CRM.

Is Framer a good fit after HubSpot CMS?

Framer is a good fit after HubSpot CMS when your team is small, design matters and the site is mostly marketing pages and a blog. It's less suited to very large content libraries or complex data relationships, where Webflow or a headless CMS with Next.js handles more.

The trade-off is speed versus structure. Framer makes it fast to design, animate and publish, and its CMS is straightforward for blogs and simple collections. Its CMS has plan-based limits on items and collections and simpler relationships than Webflow or a headless CMS, so check Framer's current plan page against your content first. Our comparison of Framer vs HubSpot CMS for B2B startups goes deeper, and the HubSpot to Webflow guide covers the main alternative.

How do you embed HubSpot forms in Framer?

You embed HubSpot forms in Framer either by pasting HubSpot's form embed code into Framer's Embed component, or by adding a small code component that loads HubSpot's forms script and renders the form directly in the page. Both use your existing form IDs, so HubSpot workflows don't change.

Method

Setup effort

Styling

Attribution reliability

Embed component with HubSpot code

Low

Limited

Check carefully; see below

Code component calling HubSpot's form script

Medium

Good, with CSS

High when the form renders in the page

Framer native form plus integration

Low to medium

Full Framer styling

Often loses the HubSpot cookie

Framer form to your own endpoint, then Forms API

High

Full Framer styling

High if you pass the cookie and page URL

We default to the code component. It's a few lines of React that load HubSpot's script once and create the form inside a container, with your portal ID, form ID and region as properties editors can set. It renders in the page itself, so HubSpot sees the real page URL and the visitor's tracking cookie.

Why the embed method needs checking in Framer

Depending on how an embed is rendered, third-party HTML can end up isolated from the main page, for example in an iframe. If that happens, the form may report a page URL that isn't your page, and it may not read the HubSpot tracking cookie set on your domain. The result is a contact with no original source.

You don't need to guess. Submit a test form, open the new contact in HubSpot, and look at the conversion page and source. If the page URL is wrong or the source is missing, switch that form to a code component.

Whichever method you use, keep forms usable: visible labels, clear errors and keyboard access, as our accessible forms guide explains. If you collect health data, read our guide to HIPAA compliant forms on Webflow, Framer and Next.js first.

Where does the HubSpot tracking code go in Framer?

The HubSpot tracking code goes in Framer's site settings, in the custom code section for the head or end of body, so it loads on every page. Paste it once there rather than on individual pages, and publish to make sure it's live on the production domain.

Then check navigation. Some sites move between pages without a full browser reload, and a tracking script that only runs on load will record the first page and miss the rest. Visit four or five pages in a row, then check the visit in HubSpot. If only one page shows, add a small script that tells HubSpot about each new path and page view when the route changes.

How do you run UTM and attribution checks before launch?

You run UTM and attribution checks by submitting every form from a fresh browser session that arrived on a URL with UTM parameters, then confirming in HubSpot that the contact's original source, conversion page and page-view history are correct. Do this on staging and again on the live domain.

  1. Open a private browser window and land on a page using a test URL with utm_source, utm_medium and utm_campaign values.
  2. Browse two or three more pages so you can check page-view history.
  3. Submit the form with a test email address you can find later.
  4. In HubSpot, open the contact and check original source, the conversion page URL and the page views listed in the timeline.
  5. Confirm the workflow fired: owner assigned, notification sent, list membership updated.
  6. Repeat for every form type: demo, contact, newsletter and any gated content.
  7. Delete or tag the test contacts so they don't pollute reporting.

What are the steps in a HubSpot to Framer migration?

You migrate from HubSpot to Framer by auditing your pages and HubSpot connections, building in Framer, importing the blog, wiring forms and tracking, recreating redirects and testing attribution before switching the domain.

  1. Audit

    Crawl the site and list every URL, form, workflow, smart content module, CTA, chatflow and URL-based list in HubSpot.

  2. Design and build in Framer

    Build pages and CMS templates for posts, authors and tags. If you're coming from a coded site rather than HubSpot, see our guide to moving from code to a visual builder.

  3. Import the blog

    Export posts from HubSpot, clean the HTML and import into a Framer CMS collection by CSV or plugin. Re-host images and check posts against the live site.

  4. Wire tracking and forms

    Add the tracking code in site settings and place forms using the code component or embed, with existing form IDs.

  5. Recreate redirects

    Add every changed URL to Framer's redirects, including blog tag and author paths.

  6. Test attribution

    Run the UTM checks above for every form, on staging and on the live domain.

  7. Switch DNS and monitor

    Point the domain to Framer, then watch 404s, Search Console and new-contact sources for several weeks.

What can't you move from HubSpot to Framer?

You can't move HubSpot smart content, HubSpot-native page A/B tests or HubDB-driven pages to Framer as they are. Smart content only runs on HubSpot-hosted pages, and HubDB tables need to become Framer CMS collections or be rebuilt another way.

  • Smart content: replace simple rules in Framer, use a personalization tool, or keep those pages on a HubSpot subdomain.
  • HubDB tables: export to CSV and import into a Framer collection; check how references translate.
  • Gated content and memberships: if HubSpot handles access to gated content, plan a new way to deliver it.
  • Large programmatic page sets: check Framer's current CMS limits; our guide to programmatic SEO in Framer explains what's possible.

If your content model is more complex than Framer suits, the HubSpot CMS migration cost guide compares what each destination costs to build.

Frequently asked questions

Does Framer integrate with HubSpot natively?
Framer and HubSpot can work together through HubSpot's tracking code, HubSpot form embeds and code components. Framer's own forms can also send submissions to other tools, so check Framer's current form integrations. For lead forms, we prefer rendering HubSpot's form directly, because it keeps HubSpot's routing, consent fields and attribution in one place.
Can I style HubSpot forms to match my Framer design?
Yes. When the form renders in the page through a code component, you can style it with CSS: fonts, colors, spacing, borders and button styles. Keep labels visible and error messages clear while you do it. If you need complete control, build the form in Framer or React and submit to HubSpot's Forms API instead.
Will my HubSpot chat widget work on Framer?
Yes, HubSpot chatflows load through the tracking code, so they appear on Framer pages once the code is installed sitewide. Check each chatflow's targeting rules: if they target specific page URLs and those URLs changed, update them to the new Framer paths, or the chat won't appear where you expect it.
How do I move HubSpot blog posts into Framer CMS?
Export posts from HubSpot's blog export or its API, clean the HTML, then import into a Framer CMS collection using CSV or a plugin. Re-host images, keep the same slugs where possible and redirect any that change. Check twenty posts side by side with the live site to catch formatting problems before launch.

· CEO & Design Director

Copywriter, designer and developer, and founder of Designify Studio. Over five years, 60+ projects across 14+ industries, for startups that have raised $300M+.

Want this done for you? Website, $8,000.

A multi-page marketing site, designed by us, developed in Next.js and animated. $8,000, one-time, up to 6 pages. Book a free 30-minute call to see if it fits.

Schedule Call