A HubSpot to Pardot migration is mostly an automation rebuild. Emails and landing pages are an HTML and CSS job and everyone worries about them first; the operational programs are the actual work. Pardot has no equivalent of a HubSpot workflow, so one workflow becomes some mix of automation rule, completion action, dynamic list and Engagement Studio program. Lifecycle and scoring get redesigned, not copied.

What was the situation at the security services organisation?

A security services organisation was running marketing on HubSpot and moved to Pardot. This is work our consultants have delivered, and the decision to move was already made by the time the build started — we are not going to invent a tidy reason for it here.

What was live in HubSpot looked like most portals that have been running a few years. Workflows still active with nobody left who owned them. Lists built for one campaign and never deleted. Smart CTAs on pages the marketing team could edit, forms embedded on pages they could not. None of that is a criticism of anyone. It is what an instance looks like after it has been used.

Where does a HubSpot to Pardot migration start?

With an inventory. Before anything was created in Pardot, the portal was walked object by object: custom properties and which of them were actually populated, active workflows and their enrolment triggers, every form and where it was embedded, lists and whether anything still referenced them, the field mappings on the CRM side.

This part is tedious and there is no tool that does it for you. You end up in a spreadsheet arguing about whether anybody still uses a field called Lead Source Detail 2.

The output was a written project plan. Not a kickoff deck — a document listing what was migrating as-is, what was being rebuilt differently in Pardot, and what was being left behind on purpose. That third column is the one that saves the project. Get the marketing lead to sign it, because the alternative is rebuilding a decayed workflow in a system that makes it harder to maintain than the one you left.

Why are HubSpot and Pardot automation models so different?

HubSpot puts enrolment, branching, delays, actions and re-enrolment inside a single object. Pardot has no such object. A workflow lands as some combination of an automation rule, a completion action attached to the asset itself, a page action on a URL, a dynamic list, and an Engagement Studio program. There is no one screen where the logic is visible any more.

Two things are worth knowing before you plan the work. Pardot caps the number of active automation rules, so a one-for-one rebuild will hit that cap and you will be refactoring under time pressure. And a prospect carries a single Pardot campaign, set at first touch — HubSpot's original and latest source properties do not survive that model intact.

Anyone who tells you a HubSpot workflow maps cleanly onto an Engagement Studio program has not maintained one. Some of what we found was genuinely a timed sequence. Plenty of it existed only to set field values, and field-setting does not belong in a program.

Why are the operational programs the hard part, not the emails?

Because an email is a known quantity and the operations are a redesign. An email is HTML you rebuild, test and tick off. Lifecycle logic has to be re-expressed in a system with a different vocabulary, which means decisions rather than production. The operational layer is where the schedule went.

  • Data normalisation. Country and state values arrived from several form sources in whatever shape the visitor had typed them. One long HubSpot branch became a stack of automation rules, one per pattern, plus a naming convention so the next person can find them.
  • Lifecycle. The lifecycle stage property was not rebuilt inside Pardot. It went to the CRM, where sales could see it and where it was not competing for automation-rule headroom. Plenty of practitioners will disagree with that. We would make the same call again.
  • Scoring and grading. Behaviour stayed as score. Firmographic fit became grading criteria, which meant first agreeing what fit means for a security services buyer — a conversation with marketing, and slower than the build.
  • Suppression and preferences. Subscription types became a preference page and dedicated suppression lists. Under GDPR, settle this before the first send.

Pardot gives you folders and a naming convention to hold all of this together. That is the toolkit. The discipline has to come from the team.

How did the asset and program migration run?

Once the operational layer was standing, the assets ran as a production line. Layout templates were rebuilt in HTML and CSS with Pardot variable tags; HubL modules and drag-and-drop sections do not convert, so that is a rewrite. Each form got a decision rather than a default — a Pardot form where we controlled the page, a form handler where the existing site form had to stay put — and every one of them needed its completion actions wired individually.

Say this out loud at kickoff. Prospect records and field values migrate. Email engagement history — every open and click sitting behind the timeline view — does not, in any form a marketer can use. Someone will ask for it after go-live regardless.

What did the review pass catch?

The same handful of mistakes it always catches. On the migrations we have run, the last step before anything is activated is someone senior going through the team's output object by object, and the findings repeat: hardcoded URLs where a variable tag belongs, dynamic lists whose criteria match far more of the database than anyone intended because a rule was left loose, form handlers with no completion actions, unsubscribe links still pointing at the old preference centre. Pardot will let you activate that list without complaint.

Have the review done by someone who has built the thing rather than someone reading a checklist. The audit export you review from is a CSV. That tells you how often anyone is expected to do this.

Frequently asked questions

How long does a HubSpot to Pardot migration take?

Asset count is a poor predictor. What drives the timeline is how much operational logic is live in HubSpot workflows, how many form embeds sit on pages marketing does not control, and how quickly the business can decide things like grading criteria. A portal with hundreds of emails and simple automation moves faster than a small portal running lifecycle, routing and scoring through undocumented workflows.

Can HubSpot workflows be migrated to Pardot automatically?

No. There is no export format Pardot can consume, and the mapping is one-to-many: a single workflow typically becomes an automation rule, a completion action on an asset, and sometimes a dynamic list. The rebuild is manual, and it should be a redesign. Copying the structure across produces automation that runs into Pardot's rule limits and cannot be maintained afterwards.

Does contact activity history transfer from HubSpot to Pardot?

Prospect records, field values and list membership can be recreated. Email engagement history does not come across in any usable way. Plan for a reporting gap at the cutover date, keep the HubSpot portal readable for a defined period if the contract allows, and tell stakeholders before go-live rather than when someone asks for a year-on-year comparison.

What happens to HubSpot forms and CTAs?

Forms are rebuilt as Pardot forms where you control the page, or as form handlers where the site form has to keep posting from its current template. Each needs completion actions set individually. Smart CTAs have no direct equivalent; they become ordinary tracked links or custom redirects, and any personalisation logic behind them has to be rebuilt or dropped deliberately.

Should HubSpot lead scoring be rebuilt as-is in Pardot?

No. HubSpot holds one score property covering both behaviour and fit. Pardot separates score from grade, and collapsing them into score alone wastes the grading model. Split the criteria, put engagement into scoring and firmographic fit into the grading profile, and agree the fit definition with marketing before building. It is a positioning question disguised as a configuration task.