
HubSpot CMS Migration & Switching Guide 2026
Migrating to HubSpot CMS is a theme rebuild in HubL, not an import, and migrating off keeps the static HTML but not HubL, HubDB, serverless, forms or CTAs.
HubSpot CMS Migration verdict
Migrating to HubSpot CMS is a theme rebuild, and migrating off keeps the static layer but not the dynamic.
Inbound, HubSpot documents recreating a WordPress theme as a HubSpot theme: PHP and hooks become HubL, index.php becomes base.html, and functions.php becomes HubL macros or serverless functions. You then import content.
Migrate to HubSpot CMS when you want the CMS tied into the HubSpot CRM and you are prepared to rebuild the theme in HubL, not import it. Keep your content master and any critical dynamic logic documented outside HubSpot. While the static theme and HTML export cleanly, the HubL, HubDB, serverless, forms and CTAs do not survive a move off-platform. Budget developer time for the functions.php rebuild, and plan multi-portal moves as export-then-import.
- Inbound is a theme rebuild, not an import: WordPress PHP and hooks become HubL, and functions.php has no direct equivalent, becoming HubL macros or serverless.
- The static layer exports well, HTML for pages, posts and templates, HubDB, SEO data and redirects, but the dynamic layer, HubL, serverless, forms and CTAs, stops working off-platform. Serverless functions are Content Hub Enterprise-only on HubSpot's NodeJS runtime, raising both plan tier and lock-in.
- There is no account-to-account merge, so consolidating portals means export-then-import.
- Inbound
- Rebuild theme (WP to HubL)
- Content export
- Broad (static layer)
- Dynamic layer
- Proprietary (one-way)
- Serverless
- NodeJS, Enterprise-only
- Account merge
- Not supported
This page covers migrating in and out of HubSpot CMS. SEO output and pricing live on their own pages.
What moves into HubSpot CMS, and can you leave?
Pick what you are bringing to HubSpot CMS, and see exactly what transfers.
- WordPress theme: manual rebuild, rebuild as a HubSpot theme (PHP/hooks to HubL).
- Content (pages/posts): imports natively, import after the theme is rebuilt.
- URL redirects (301s): imports natively, bulk-upload via CSV at cutover.
- Custom domain + SSL: imports natively, connect domain; SSL auto-provisions.
- Side-by-side during move: imports natively, coexist on a connected subdomain.
- 1Rebuild theme in HubL, functions.php to macros/serverless.
- 2Coexist on a subdomain, optional during migration.
- 3Import content, after theme is ready.
- 4Bulk redirect CSV at cutover, preserve SEO.
- 5Connect domain + SSL, redirects need a HubSpot-hosted domain.
Every row is a documented import/export capability from HubSpot CMS and the source platforms, not an effort estimate.
HubSpot CMS migration configuration
HubSpot themes are local source you manage with the HubSpot CLI (hs), which is also how serverless functions are built and deployed (into a .functions directory). This is the portable, version-controllable half of a HubSpot CMS theme.
npm install -g @hubspot/cli
hs init # authenticate to your HubSpot account
hs fetch <src> <dest> # pull theme/templates down to local source
# ...edit HubL templates, modules, serverless functions locally...
hs upload <src> <dest> # push changes back to HubSpot
# Serverless functions live in a .functions dir (serverless.json + .js + package.json).At cutover, preserve SEO by uploading 301s in bulk via CSV (Settings, Content, Domains & URLs, URL Redirects). HubSpot supports permanent (301), temporary (302) and proxy (305) types, plus flexible pattern rules. Note redirects only work for domains hosted in HubSpot.
# Bulk URL redirects CSV (Settings -> Content -> URL Redirects -> Import)
original_url,destination_url,redirect_style
/old-blog/hello-world,/blog/hello-world,301
/promo,/campaigns/spring,302
# Flexible rule: update URLs by structure, e.g. /old-blog/* -> /blog/*
# Redirects only work for domains connected to and hosted in HubSpot.HubSpot's content export is broad for the static layer: HTML files for pages, posts and templates, plus page/post data, Files, HubDB, memberships, SEO data, the sitemap and URL redirects. The dynamic layer (HubL, serverless, forms, CTAs) does not run off-platform.
# Settings -> Account Management -> Export your content & data
Portable (static layer):
- HTML files for pages, posts, templates
- page/post data, Files, HubDB, memberships, SEO data, sitemap, URL redirects (CSV)
NOT portable (proprietary, stops off-platform):
- HubL templating, HubDB logic, serverless (NodeJS), smart content, forms, CTAsWhat moves when you migrate to HubSpot CMS
| Migration element | On HubSpot CMS | Detail | Source |
|---|---|---|---|
| Theme (inbound) | Rebuild from WordPress | Dedicated guide: recreate WordPress themes as HubSpot CMS themes; PHP/hooks become HubL | — |
| Side-by-side during migration | Subdomain coexistence | Keep the main site on WordPress while some content is hosted in HubSpot via a connected subdomain | — |
| Content export (outbound) | Broad | Export HTML files for pages, posts and templates, plus page/post data, Files, HubDB, memberships, SEO data, sitemap and URL redirects | — |
| Account-to-account merge | Not supported | No merge between HubSpot accounts; export from one and import into the other | — |
| Serverless functions | NodeJS, Enterprise-only | Server-side JavaScript on HubSpot's NodeJS runtime; Content Hub Enterprise; runs only inside HubSpot | — |
| Dynamic layer (outbound) | Does not survive off-platform | HubL, HubDB, serverless, memberships, smart content, forms and CTAs are proprietary and stop working once you leave | — |
Source-to-HubSpot CMS mapping
| WordPress element | Lands on HubSpot as | Caveat | Source |
|---|---|---|---|
| index.php (entry template) | base.html | The base HubSpot template that wires the head and standard includes | — |
| PHP / template tags | HubL filters, functions, tags | Re-author the templating logic in HubL | — |
| functions.php | HubL macros / serverless / custom apps | No direct equivalent; this is the heaviest part of the rebuild | — |
| wp_enqueue_style / _script | require_css() / require_js() | Map asset loading onto HubSpot's require helpers | — |
| Posts and pages (content) | Imported content | Import content after the theme is rebuilt; not a theme-and-content one-click | — |
| Structured data | Template-level JSON-LD | Re-authored in HubL templates; no native schema field | — |
HubSpot CMS migration timeline and rollout
| Phase | What happens | Effort | Source |
|---|---|---|---|
| 1. Rebuild theme in HubL | WordPress PHP/hooks become HubL | High, functions.php has no equivalent | — |
| 2. Coexist on a subdomain | Optional side-by-side during the move | Low, connect a subdomain to HubSpot | — |
| 3. Import content | Pages and posts into HubSpot | Medium, after the theme is ready | — |
| 4. Map redirects | Old URLs to new, bulk CSV | Medium, bulk-upload via CSV; flexible rules | — |
| 5. Connect domain + SSL | Connect domain; SSL auto-provisions | Low, SSL after connect (minutes to ~4h) | — |
What to verify before you commit to HubSpot CMS
- The static layer is portable but the dynamic layer is not: HubL templating, HubDB, serverless functions, memberships, smart content, forms and CTAs are proprietary and stop working once you leave, so anything dynamic is effectively one-way
- Inbound is a theme rebuild, not an import: WordPress PHP and hooks become HubL and functions.php has no equivalent, so budget real development time rather than expecting a one-click migration
- Serverless is Enterprise-only: server-side JavaScript runs on HubSpot's NodeJS runtime and requires Content Hub Enterprise, so any logic you build there raises both the plan tier and the lock-in
- There is no account-to-account merge, so consolidating HubSpot portals means exporting from one and importing into the other rather than merging, plan multi-account moves around that
HubSpot CMS Migration FAQ
Can I import my WordPress site into HubSpot CMS?
Not as a one-click import. HubSpot documents recreating a WordPress theme as a HubSpot theme, which is a rebuild. PHP and template tags become HubL, wp_enqueue_style and wp_enqueue_script become require_css and require_js, and index.php becomes base.html. functions.php, which has no direct equivalent, becomes HubL macros, serverless functions or custom apps. After the theme is rebuilt you import your content. You can also run side-by-side on a subdomain during the migration.
Can I export my site out of HubSpot CMS?
The static layer, yes, and fairly broadly. HubSpot exports HTML files for pages, posts and templates, plus page and post data, Files, HubDB, memberships, SEO data, the sitemap and URL redirects. What does not come with you is the dynamic layer: HubL templating, HubDB logic, serverless functions, smart content, forms and CTAs are proprietary and stop working off-platform. Treat the HTML and theme source as portable and the dynamic features as one-way.
How bad is HubSpot CMS lock-in?
Medium-to-high, and it lives in the dynamic layer. Your theme source is local and version-controllable through the HubSpot CLI, and the content export is generous, so static pages move out cleanly. But anything dynamic, HubL templates, HubDB tables, serverless functions, memberships, smart content, forms and CTAs, only runs inside HubSpot and stops working once you leave. The more of your site depends on those, the more one-way the platform is.
Are HubSpot serverless functions portable?
No. Serverless functions execute server-side JavaScript on HubSpot's NodeJS runtime and require Content Hub Enterprise. They are built and deployed with the HubSpot CLI into a .functions directory, but they run only inside HubSpot. So any logic you put there is both a higher plan tier and a piece of lock-in. If portability matters, keep critical logic in an external service the site calls, rather than in HubSpot serverless.
Can I merge two HubSpot accounts?
No. HubSpot states there is no way to merge all the data between accounts. The supported path is to export your content and data from one account and import it into the other. So if you are consolidating portals after a reorg or acquisition, plan it as an export-then-import project. Account for the dynamic features that will not transfer, and rebuild those in the destination portal.
Sources & verification
| Source | What was checked | Last checked |
|---|---|---|
| Hubspot Cms | Official product page | July 10, 2026 |
| Hubspot Account Management Export Your Content And Dat | Account Management Export Your Content And Data | July 10, 2026 |
| Hubspot Domains And Urls Connect A Domain To Hubspot | Domains And Urls Connect A Domain To Hubspot | July 10, 2026 |
| Hubspot Domains And Urls Create And Manage Url Redirec | Domains And Urls Create And Manage Url Redirects | July 10, 2026 |
| Hubspot Improve Existing Sites Convert Wordpress Theme | Improve Existing Sites Convert Wordpress Theme To Hubspot.md | July 10, 2026 |
| Hubspot Serverless Functions Overview.Md | Serverless Functions Overview.md | July 10, 2026 |
Every fact on this HubSpot CMS page is tied to a named source and a verification date. Freshness-sensitive figures trace to the sources above; verify against the vendor before relying on them.
Explore HubSpot CMS
Every page on HubSpot CMS in one place, you are on migration.
Snapshot, score and verdict
You are here
SEO output and page performance of sites it builds
Every tier and the entry price
Compared and ranked vs peers
Price and feature change history
Browse the full Website Builders category
