Skip to main content

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.

PDF documentPDFMarkdown documentMDExcel workbookXLS
WordPress logoHubSpot logo

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

Complexity: High
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

1023%
3070%
37%
  • 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 HubSpotInto HubSpot

Becomes 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 wayTwo way

Becomes 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 HubSpotInto HubSpot

Becomes 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. 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. 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. 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. 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. 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. 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. 7

    Build System Pages

    404, 500, search results, password prompt, and subscription preferences

  8. 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. 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. 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. 11

    Rebuild Forms and Re-embed or Replace Third-party Integrations

    Rebuild forms and re-embed or replace third-party integrations

  12. 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. 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. 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. 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.

Custom fields and properties across all records

Everything beyond the out-of-the-box fields, added up across contacts, companies, deals and anything custom.

Automations, workflows and rules

Anything that fires on its own: workflows, sequences, assignment and validation rules, approvals.

Marketing assets to rebuild

Email templates, forms, landing pages, lists and segments taken together.

Third-party integrations wired into the current system

Anything connected by API, webhook or installed package that has to keep working afterwards.

Users to move across

Seats, plus whatever permission structure sits behind them.

Roughly how many contact records

This affects the sync approach and the reconciliation effort, not the per-record work. The connector moves records; people do not.

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

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!