Agency Migration Guide
WordPress to HubSpot Migration
What actually transfers, what quietly does not, and what has to be rebuilt by hand.
We mapped WordPress against HubSpot feature by feature: 43 features, 3 synced objects, 13 documented traps and 20 items that have to be rebuilt. The whole map is on this page, ungated.
The PDF is the same reference, formatted to send to a client.
Get The Guide And The Calculator
The full WordPress to HubSpot reference as a branded PDF you can send straight to a client, plus the Excel calculator we scope these migrations with: every one of the 43 features as a row, enter your counts, get hours.
Three files: the guide as a PDF, the same guide unbranded in Markdown for your AI tool, and the full Excel effort calculator.
WordPress to HubSpot is a high migration, typically 4-20 weeks. Of 43 features we mapped, 10 carry across as they are and 30 land with something lost. The work is not moving records: it is the 20 items nothing moves for you.
Migration Scorecard
- Migration complexity
- High
- Typical timeline
- 4-20 weeks
- Recommended method
- Content import then rebuild
- Native sync
- Content import, source to hubspot
- Smart transfer
- Not supported
- HubSpot subscription
- The blog import tools are available on all products and plans. The destination tier is what matters: Content Hub Free caps at 25 pages; HubDB and smart content require Content Hub Professional; memberships, multi-site, and additional root domains require Content Hub Enterprise. Custom objects, if used to replace custom post types, require an Enterprise tier.
Feature parity across 43 capabilities
- Maps directly: 10 (23%)
- Maps partially: 30 (70%)
- No equivalent: 3 (7%)
3
Objects synced natively
13
Limitations and traps
20
Manual rebuild items
3
Source editions covered
Where this comes from: Our own research corpus, verified 2026-08-01, behind every number on this page.
The Three Objects That Sync Natively
What the connector moves for you, and which way each one flows.
Blog posts
Into HubSpotBecomes Blog posts
Three import routes exist, in HubSpot's recommended order. WordPress connect reads the public WordPress REST API from just the blog homepage URL and is the fastest and most accurate, but fails on installs where the REST API is disabled, restricted, or heavily customised, which is common on hardened or enterprise WordPress. Smart copy scrapes a live post URL to infer template structure and works with any CMS. XML import uses a WordPress export file and is the documented fallback. Blog posts are the ONLY content type any of these tools import.
Pages
Two wayBecomes Website pages
There is no page import at all. Every website page must be manually recreated in HubSpot using templates and modules. This is the defining constraint of a WordPress migration and the reason it is a rebuild project rather than a data transfer.
Form submissions (via HubSpot WordPress plugin)
Into HubSpotBecomes Contacts
The HubSpot WordPress plugin adds the tracking code and captures submissions from existing WordPress forms into the HubSpot CRM. This is a coexistence tool useful during a phased migration, not a content migration mechanism. It is often the right first step months before any rebuild starts.
Thirteen Things the Sync Does Not Tell You
Each one is documented, and each one has ended a migration in a bad week.
Only Blog Posts Import. Pages Do Not.
All three HubSpot import methods handle blog content exclusively. Website pages, landing pages, and any structured content beyond posts must be rebuilt by hand in HubSpot templates and modules. A 200-page WordPress site is a 200-page rebuild, not an import with cleanup.
Workaround: Scope by template rather than by page. Identify the distinct page types, build a reusable template and module set for each, then populate. Rebuilding page by page is the single most expensive way to run this project.
There Is No Plugin Ecosystem, and No Hooks System to Emulate One
HubSpot has no equivalent of functions.php because it has no concept of hooks or filters. Every plugin-provided capability must be replaced with a native HubSpot feature, a marketplace app, a custom module, a serverless function, or a third-party service. HubSpot's own developer documentation explicitly declines to cover themes that rely on complex plugins.
Workaround: Inventory active plugins first and classify each as native equivalent, marketplace app, custom build, third-party service, or drop. The plugin audit is the single best predictor of true project cost, and it should happen before any quote is issued.
HubSpot Has No Custom Post Type Concept, Though HubDB Covers Most Uses
Custom post types are the standard WordPress pattern for structured content such as team members, case studies, locations, and product directories. HubSpot has no post type concept, but HubDB tables driving dynamic pages reproduce the outcome, generating a page per row with its own URL and analytics; that requires Content Hub Professional, and is capped at 10 dynamic pages per table. CRM custom objects are the other route and require an Enterprise tier.
Workaround: Map each custom post type to HubDB or a custom object early, because the answer determines the required subscription tier. A site with several custom post types and Advanced Custom Fields data is often a Content Hub Professional project minimum, which frequently exceeds what the client expected to pay.
HubL Is Not PHP, and the Developer Pool Is Much Smaller
WordPress themes are PHP. HubSpot themes are HubL, with template inheritance via extends, drag-and-drop areas built from widget_container blocks, and asset loading through require_css, require_js, and get_asset_url rather than wp_enqueue_style and get_template_directory_uri. Existing PHP developers cannot transfer straight across, and HubSpot developers are fewer and typically cost more.
Workaround: Confirm who is building before quoting. An agency's existing WordPress team will need ramp-up time, and that time belongs in the estimate rather than being absorbed silently.
Redirects Are the Whole SEO Risk, and They Are Manual
URL structures rarely match one to one after a HubSpot rebuild. Every changed URL needs a 301 redirect mapped before go-live. Skipping or rushing this is the most common cause of post-launch ranking loss, and the damage surfaces weeks later when it is expensive to diagnose.
Workaround: Crawl the live WordPress site and build a complete URL inventory before any rebuild starts. Map redirects as part of the build, not as a launch-day task, and keep the WordPress site crawlable in a staging environment for reference. Expect performance to stabilise two to four weeks after a correctly executed migration.
WordPress Connect Fails on Hardened or Customised Installs
The fastest import route depends on the public WordPress REST API being reachable and standard. Security plugins, headless setups, custom permalinks, and enterprise hardening routinely disable or restrict it, and the tool then fails without a clear diagnosis.
Workaround: Test WordPress connect against the live blog early, during discovery, rather than discovering the failure during the build. Fall back to smart copy, then to XML export. Each fallback is progressively less accurate and needs more cleanup, which is an estimating input.
System Pages Are Consistently Forgotten
404 pages, 500 error pages, search results pages, password prompt pages, and email subscription preference pages all need building in HubSpot. They are invisible in a sitemap-driven page count, so they are routinely missing from both the estimate and the launch checklist.
Workaround: Add system pages to the template inventory explicitly at scoping time. They are low effort individually and embarrassing collectively when missed at launch.
WooCommerce Has No HubSpot Equivalent
HubSpot Content Hub is not an ecommerce platform. Revenue Hub covers payments, quotes, invoices, and subscriptions, but not a product catalogue, cart, checkout, shipping, tax, or inventory. A WooCommerce store cannot be rebuilt in HubSpot.
Workaround: Keep the store on a dedicated ecommerce platform and integrate it with HubSpot, or advise against the migration for ecommerce-led sites. Product content and pricing pages can move; the store itself cannot.
Advanced Custom Fields Data Has No Direct Destination
ACF is near-universal on serious WordPress builds and stores structured field data against posts, pages, and custom post types. HubSpot has module fields for template-level content and HubDB for tabular data, but no equivalent concept of arbitrary custom fields attached to any content record.
Workaround: Model ACF field groups as either module fields, where the data belongs to one page, or HubDB columns, where the data is a repeating set. Repeater and flexible-content fields are the hard cases and often need restructuring rather than mapping.
Tier Gates Land in Unexpected Places
Content Hub Free caps at 25 pages. HubDB, smart content, A/B testing, SEO recommendations, and custom reporting require Professional. Memberships, multi-site, additional root domains, and partitioning require Enterprise. A WordPress site that was effectively free to host can require a Professional or Enterprise subscription purely to reproduce what it already did.
Workaround: Derive the required tier from the feature and content-structure audit and put it in the proposal explicitly. Discovering the HubDB requirement mid-build is a commercial problem, not a technical one.
AJAX, Cron, and Server-side Logic Need Rearchitecting
WordPress patterns such as admin-ajax handlers and arbitrary server-side PHP have no direct HubSpot equivalent. WP-Cron is the exception: Data Hub Professional runs schedule-triggered workflows with JavaScript or Python custom code actions, a pattern HubSpot itself documents as writing cron jobs. Serverless functions cover some of the rest, with their own execution limits, and other cases require an external service.
Workaround: Identify server-side behaviour during the plugin and theme audit. This is where migrations discover work that cannot be done at all in HubSpot and needs an external service, which is far better learned during scoping than during build.
Multilingual Sites Need Restructuring, Not Translation Import
WPML and Polylang store translations with their own data structures and URL schemes. HubSpot supports multi-language variants of a page or post as a linked group. There is no import path from either plugin, and the URL structure will usually change.
Workaround: Rebuild language variants manually and map redirects per language. Confirm that the required language count is supported at the client's intended tier before committing.
Media, Tracking Codes, and WordPress-specific Markup Should Not Be Copied Across
HubSpot's own guidance is that WordPress-specific code, including anything from wp-includes or wp-content, should not be carried over, and that third-party tracking codes should be re-exported from the vendor rather than copied out of WordPress. Media must be re-uploaded to the HubSpot Files tool, and every in-content image reference updated.
Workaround: Treat the media migration as its own task with a URL rewrite pass over imported post bodies. Imported posts that still reference the old wp-content image URLs will break the moment WordPress hosting is switched off.
Three WordPress Features HubSpot Cannot Replace
Not a workaround away. If a client depends on one of these, it belongs in the conversation before the contract.
Functions.php and Hooks
HubSpot's own documentation states there is no equivalent file, because HubSpot has no concept of hooks. Extend via HubL macros, serverless functions, or custom apps instead.
WooCommerce
HubSpot Content Hub is not an ecommerce platform. Revenue Hub covers payments, quotes, invoices, and subscriptions but not a storefront.
LMS Plugins
No HubSpot equivalent.
Two Things a Migration Does Not Rebuild
These are WordPress's own code and products. A HubSpot migration does not port them, so they carry no hours in any estimate. They still need a decision, because the client is giving something up.
Bespoke Custom Plugins
The highest-risk discovery item. Surface these during scoping rather than during build.
WordPress Multisite
Confirm the target tier before promising equivalent separation.
The 20 Items That Get Rebuilt by Hand
This is the list that separates a quote that holds from one that does not.
Data And Objects
Website Pages
Every page must be rebuilt in HubSpot. No import tool exists for pages in any of the three import routes.
Custom Post Types
Team members, case studies, locations, and similar structured content must be rebuilt as HubDB tables driving dynamic pages, or as CRM custom objects.
Advanced Custom Fields Data
ACF field groups must be remodelled as module fields where the data belongs to a single page, or HubDB columns where it repeats.
Media Library
All images, PDFs, and documents must be re-uploaded to the HubSpot Files tool, with folder structure recreated and every in-content reference rewritten.
Blog Post Cleanup After Import
Imported posts need author mapping, tag and category reconciliation, featured image checks, meta description validation, and internal link rewriting.
Automation
Plugin-driven Functionality
Every capability provided by a plugin must be replaced: forms, SEO, caching, security, booking, maps, calendars, membership, live chat, analytics, and any IDX or feed integrations.
Server-side Logic, AJAX Handlers, and Cron Jobs
PHP executed on the server, admin-ajax endpoints, and WP-Cron scheduled tasks have no direct equivalent and must be rebuilt as serverless functions or moved to an external service.
Forms
Gravity Forms, Contact Form 7, and similar must be rebuilt as HubSpot forms, with notification, routing, and confirmation behaviour recreated.
Reporting
Analytics Continuity
WordPress analytics plugin configuration and any goal or event tracking must be re-established using HubSpot analytics and re-exported third-party tracking codes.
SEO Reporting Baseline
Rankings, indexed page counts, and traffic baselines must be captured before migration so post-launch changes can be attributed.
Sales And Marketing Config
Templates, Modules, and Theme
The WordPress theme must be rebuilt as a HubSpot theme: base template, global header and footer partials, page templates per page type, drag-and-drop areas, and custom modules.
System Pages
404, 500, search results, password prompt, and subscription preference pages must all be built.
Navigation Menus
WordPress menus must be rebuilt using HubSpot's advanced menu tool and menu modules.
301 Redirect Map
Every changed URL needs a mapped redirect in HubSpot's URL redirects tool, built from a full pre-migration crawl.
Domain, DNS, and SSL
Domains must be connected to HubSpot with DNS records updated and SSL provisioned, coordinated so there is no window where the site is unreachable.
Multilingual Variants
WPML or Polylang translations must be rebuilt as HubSpot multi-language page and post variants, with per-language redirects.
Users And Permissions
Users and Roles
WordPress roles such as administrator, editor, author, and contributor must be recreated as HubSpot users with appropriate permission sets. Blog post authors must be mapped to HubSpot blog authors separately from user accounts.
Gated Content and Memberships
Membership plugins providing gated content map onto Content Hub Professional memberships and access groups. HubSpot memberships are access control rather than a membership platform: no lesson delivery, no drip scheduler beyond workflow-driven access group changes, and no certificates.
Integrations
WooCommerce or Ecommerce
Store functionality cannot be rebuilt in HubSpot and must remain on a dedicated ecommerce platform integrated with HubSpot.
Third-party Embeds and Feeds
IDX and MLS property feeds, booking systems, maps, review widgets, and job boards must be re-embedded or replaced, and any that depended on PHP need rearchitecting.
The Sequence
Sync First, Then Migrate
Order is the content here. These are a dependency chain, and running them out of order is a documented way these migrations fail.
- 1
Audit Plugins First and Classify Each as Native Equivalent, Marketplace App, Custom Build, Third-party Service, or Drop; This Predicts Project Cost Better Than Page Count
Audit plugins first and classify each as native equivalent, marketplace app, custom build, third-party service, or drop; this predicts project cost better than page count
- 2
Crawl the Live Site for a Complete URL and Page Inventory, and Capture SEO Baselines for Rankings, Indexed Pages, and Traffic
Crawl the live site for a complete URL and page inventory, and capture SEO baselines for rankings, indexed pages, and traffic
- 3
Identify Distinct Page Types and Custom Post Types, and Decide HubDB Versus Custom Objects, Which Determines the Required Subscription Tier
Identify distinct page types and custom post types, and decide HubDB versus custom objects, which determines the required subscription tier
- 4
Test WordPress Connect Against the Live Blog During Discovery So Import-route Failures Surface Early Rather Than Mid-build
Test WordPress connect against the live blog during discovery so import-route failures surface early rather than mid-build
- 5
Install the HubSpot WordPress Plugin to Start Capturing Form Submissions and Tracking Data Into the CRM While the Rebuild Proceeds
Install the HubSpot WordPress plugin to start capturing form submissions and tracking data into the CRM while the rebuild proceeds
- 6
Build the HubSpot Theme
base template, global header and footer, then a template per page type with drag-and-drop areas and custom modules
- 7
Build System Pages
404, 500, search results, password prompt, and subscription preferences
- 8
Import Blog Posts via WordPress Connect, Falling Back to Smart Copy Then XML, Then Clean up Authors, Tags, Featured Images, and Meta Descriptions
Import blog posts via WordPress connect, falling back to smart copy then XML, then clean up authors, tags, featured images, and meta descriptions
- 9
Re-upload Media to the Files Tool and Rewrite In-content Image References Away From Wp-content URLs
Re-upload media to the Files tool and rewrite in-content image references away from wp-content URLs
- 10
Rebuild Pages Against the Templates, Then Populate HubDB Tables for Any Structured or Dynamic Content
Rebuild pages against the templates, then populate HubDB tables for any structured or dynamic content
- 11
Rebuild Forms and Re-embed or Replace Third-party Integrations
Rebuild forms and re-embed or replace third-party integrations
- 12
Build the Complete 301 Redirect Map From the Pre-migration Crawl and Load It Into the URL Redirects Tool
Build the complete 301 redirect map from the pre-migration crawl and load it into the URL redirects tool
- 13
QA Across Browsers and Devices, Validate Every Redirect, and Check Metadata Page by Page Against the Baseline
QA across browsers and devices, validate every redirect, and check metadata page by page against the baseline
- 14
Connect the Domain, Update DNS, Provision SSL, and Go Live in a Low-traffic Window
Connect the domain, update DNS, provision SSL, and go live in a low-traffic window
- 15
Monitor Search Console, Rankings, and 404 Reports Intensively for Four Weeks; Correctly Executed Migrations Stabilise in Two to Four
Monitor Search Console, rankings, and 404 reports intensively for four weeks; correctly executed migrations stabilise in two to four
Typically 4-20 weeks end to end, depending on how much of the source configuration is actually in use.
Effort Estimator
How Big Is This Migration?
A handful of questions, no email required. The ranges come from the research above: every feature we mapped carries an effort figure, and this adds up the ones that apply to you.
Estimated Effort
Answer a couple of questions and an hours range appears here.
Built from our research on 43 WordPress features. It is a range, not a quote.
A planning range, not a quote. It is delivery effort only, with no project management line and no agency markup, so add your own. What moves it most in practice is data quality.
What Goes Wrong Most Often
The failures that show up again and again, in roughly the order they bite.
Only Blog Posts Import. Pages, by Far the Larger Share of Most Sites, Are a Manual Rebuild
Only blog posts import. Pages, by far the larger share of most sites, are a manual rebuild
WordPress Connect Fails Silently on Installs With a Disabled or Restricted REST API, Which Is Common on Hardened Sites
WordPress connect fails silently on installs with a disabled or restricted REST API, which is common on hardened sites
There Is No Plugin Ecosystem and No Hooks System, So Functions.php Logic Has Nowhere to Go
There is no plugin ecosystem and no hooks system, so functions.php logic has nowhere to go
Custom Post Types Do Not Exist in HubSpot, and the HubDB Versus Custom-object Decision Sets the Required Tier
Custom post types do not exist in HubSpot, and the HubDB versus custom-object decision sets the required tier
HubDB Needs Content Hub Professional; Memberships, Multi-site, and Extra Root Domains Need Enterprise
HubDB needs Content Hub Professional; memberships, multi-site, and extra root domains need Enterprise
System Pages Are Invisible in a Page Count and Routinely Missing From Both Estimate and Launch Checklist
System pages are invisible in a page count and routinely missing from both estimate and launch checklist
Imported Posts Still Referencing Wp-content Image URLs Break the Moment WordPress Hosting Is Switched Off
Imported posts still referencing wp-content image URLs break the moment WordPress hosting is switched off
Redirects Are Manual and Are the Entire SEO Risk; Rushing Them Is the Top Cause of Post-launch Ranking Loss
Redirects are manual and are the entire SEO risk; rushing them is the top cause of post-launch ranking loss
WooCommerce Cannot Be Rebuilt in HubSpot at All
WooCommerce cannot be rebuilt in HubSpot at all
ACF Repeater and Flexible-content Fields Need Restructuring, Not Mapping
ACF repeater and flexible-content fields need restructuring, not mapping
PHP Developers Cannot Move Straight to HubL, and That Ramp-up Time Belongs in the Estimate
PHP developers cannot move straight to HubL, and that ramp-up time belongs in the estimate
Client Decision-making Speed, Not Build Complexity, Is the Biggest Single Timeline Factor on These Projects
Client decision-making speed, not build complexity, is the biggest single timeline factor on these projects
Questions
WordPress To HubSpot, Answered
Yes. Content import, source to hubspot, covering 3 objects. What it does not do is rebuild configuration: that is the 20 items below.
Typically 4-20 weeks. Complexity is driven by automation and reporting depth, not by record count: the connector moves records, so a large database is not by itself a long project.
Of 43 features we mapped, 10 (23%) carry across directly and 30 (70%) map partially, meaning something is lost or reshaped. 3 have no HubSpot equivalent at any tier.
20 items have to be rebuilt by hand, and 13 documented limitations are not surfaced by the connector at all. The full list of both is on this page.
The blog import tools are available on all products and plans. The destination tier is what matters: Content Hub Free caps at 25 pages; HubDB and smart content require Content Hub Professional; memberships, multi-site, and additional root domains require Content Hub Enterprise. Custom objects, if used to replace custom post types, require an Enterprise tier.
3: functions.php and hooks, WooCommerce, LMS plugins. If a client depends on one, it belongs in the conversation before the contract.
No. 2 items are WordPress's own code and products, which a HubSpot migration does not port and which carry no hours in an estimate. They still need a decision, because the client is giving something up.
Only in one direction. The sync is not bidirectional here, so a parallel period means picking a system of record and accepting drift in the other.
Ready to get started?
Let's do something great together.
Augment your agency's marketing team's bench with our end-to-end inbound and digital solutions and find out why we're "The HubSpot Agency for HubSpot Agencies."
Fill out this form, and someone from our Solutions team will be in touch with you soon!