Skip to main content

HubSpot

Why HubSpot Workflows Do Not Enroll Migrated Contacts


Rebuild a workflow, switch it on, and the migrated records never enroll. The activation question causes it, and the other answer is worse.

Julia HanneyBy Julia HanneyUpdated October 8, 20267 min read
A HubSpot workflow activation prompt asking whether to enrol records that already meet the trigger criteria.

Key Takeaways

  • The activation prompt decides whether migrated records are ever seen: choosing to enrol only records that qualify after switch-on excludes everything already loaded.
  • Records enrol the first time they meet a trigger and re-enrollment is off by default, so a workflow tested before the load may have already used up its one enrollment.
  • List-triggered workflows enrol on joining the list, so contacts imported before the list existed never trigger it.
  • Deduplication during a migration produces merged records, which do not auto-enrol unless that setting is switched on.
  • Answering the activation prompt the other way is the dangerous direction: audit every action for sends before you enrol an existing database.

The automation was rebuilt faithfully. Same triggers, same branches, same actions as the platform the client left. It was switched on the morning after the data landed, and a week later it had enrolled eleven people out of forty thousand.

The workflow is correct. It was simply told, at the moment it was activated, to ignore everybody who was already there.

The prompt that decides it

When you turn a HubSpot workflow on, it asks whether to enrol records that already meet the enrollment criteria. One of the options is to enrol only records that meet the criteria after the workflow is switched on.

On a portal in normal operation that is often the safe answer, and it is the one most people pick by reflex.

On a portal that was populated three days ago by a migration, it means the workflow will never see the database. Every migrated record met the criteria before the workflow existed. None of them will meet it again, because meeting a trigger is not a recurring event.

This single click is, in our experience, the most common reason a technically perfect migration produces a portal where nothing appears to be running.

Why they do not qualify a second time

The behaviour underneath is worth stating plainly, because it explains several symptoms at once.

Records enrol the first time they meet the enrollment triggers, or when they are enrolled manually. Re-enrollment is off by default and has to be switched on, with specific re-enrollment triggers chosen.

So enrollment is not a state the record sits in, it is a moment the record passes through. A contact whose lifecycle stage was already Marketing Qualified Lead when it arrived did not become one inside HubSpot. There was no transition for the workflow to catch.

This also explains a subtler failure: a workflow that was tested during the build, using a handful of sample records, has already used up the single enrollment for those records. When the real load arrives and somebody re-tests with the same contacts, nothing happens, and the natural conclusion is that the workflow is broken.

The other four causes, all of which a migration triggers

HubSpot documents several reasons a record fails to enrol. Four of them are disproportionately likely in the weeks after a data load.

List membership timing. Records enrol when they join a list. A contact that was already a member before the workflow was built never joins it again. After a migration, where lists are frequently rebuilt and populated in bulk before the automations are switched on, this is the default state rather than the exception.

Merged records. Merged contacts do not automatically enrol unless the setting to enrol merged records meeting the enrollment condition is switched on. Deduplication is a standard migration step, so a migration produces merged records in volume, precisely at the moment the automations are being brought up.

Immediate unenrollment. A record that matches the workflow's goal, a suppression list, or an unenrollment trigger is removed at the point of enrollment. Migrated data frequently satisfies goals on arrival: a contact imported with a closed-won deal already attached meets the goal of a nurture sequence before the first email sends. The record enrols and leaves in the same instant, which reads in the interface as never having enrolled.

Date-based triggers. Triggers phrased as more than or less than a number of days ago are evaluated at the start of the day rather than continuously. On a freshly loaded set with historical dates, this produces a delay that looks like failure on the afternoon everyone is watching.

The direction that is actually dangerous

Everything above describes a workflow that does too little. The opposite mistake is the one that ends up in an apology email.

Answer the activation prompt the other way, on a database of forty thousand migrated contacts, and every action in that workflow executes against every qualifying record. If the workflow sends a marketing email, that email goes out. If it creates tasks, the sales team arrives to thousands of them. If it notifies record owners, it notifies all of them at once.

Before you enrol existing records on a migrated portal, walk the workflow action by action and ask what each one does forty thousand times.

The safe sequence we use:

  1. Audit every action in the workflow for anything outbound: marketing email, internal notification, task creation, owner assignment, integration webhook.
  2. Enrol a controlled sample first. Build a list of a few dozen records, enrol them manually, and watch what happens end to end.
  3. Then enrol the rest, once the sample has proved the blast radius is what you expected.

Step two is not optional on a portal you did not build. The cost of skipping it is measured in client relationships rather than hours.

Bringing automations up after a load

The order that avoids both failure modes:

  1. Load the data with the automations off. All of them, including the ones you did not build.
  2. Deduplicate and reconcile before anything is switched on, so merges happen while nothing is watching for them.
  3. Decide, per workflow, whether the existing database should be enrolled at all. Many should not. A welcome sequence rebuilt for future signups has no business running against four years of migrated history.
  4. For the ones that should, audit the actions, then sample, then enrol.
  5. Switch on re-enrollment deliberately where the workflow genuinely needs to run again on the same record, and leave it off where it does not.
  6. Record the decision per workflow. A short table of workflow name, enrolled existing records yes or no, and why. This is the document that answers the question you will be asked in month two.

Step three is the one that gets skipped, because the default assumption is that a rebuilt workflow should behave as though it had always existed. It should not. It should behave the way the client needs it to from now on, and those are different specifications.

Proving it worked, rather than assuming

The reason this class of failure survives for months is that a workflow which enrolled nobody looks identical to a workflow which had nobody to enrol. There is no error state for "correctly configured, deliberately ignored."

So the verification has to be explicit, and it takes about a minute per workflow:

  1. Read the enrollment count against a number you predicted beforehand. Predicting it first is the whole trick. A count of eleven is only alarming if you were expecting four thousand, and nobody is surprised by a number they had not thought about.
  2. Open the enrollment history and check the dates. Enrollments clustered in the hour after activation mean existing records were enrolled. Nothing before today means they were not.
  3. Trace one record end to end. Pick a contact that should have enrolled, confirm it did, and confirm the action actually completed rather than merely executing.
  4. Check the records that left immediately. A record that enrolled and unenrolled in the same instant met a goal, a suppression list or an unenrollment trigger on arrival, which is a data question rather than a workflow question.

Step one is where teams go wrong. Without a predicted number there is nothing to compare against, and any count above zero reads as success.

If the workflow sends marketing email, enrollment is only half of the requirement. A record can enrol perfectly and still receive nothing, because migrated contacts are usually loaded as non-marketing contacts and non-marketing contacts do not receive marketing email.

Two independent gates, two different causes, one identical symptom: the automation ran and nobody heard from you. Check both before concluding anything about either.

Why this is a bad thing to inherit

Enrollment decisions leave almost no trace. The workflow shows an enrollment history that is simply short, with no error and no explanation, and the setting that caused it was a radio button clicked once, months ago, by somebody who has left.

The tell on an inherited portal is a set of workflows that are switched on, correctly built, and have enrolled a number of records that bears no relationship to the size of the database. When we find that in a portal audit, it almost always dates to the week the data arrived.

The bottom line

Records enrol the first time they meet a trigger, re-enrollment is off by default, and the prompt shown when you activate a workflow decides whether the existing database is ever considered. After a migration, everything qualifies before the workflow exists, so choosing to enrol only future records excludes the entire client database.

Load with automations off, deduplicate first, decide per workflow whether history should be enrolled at all, and audit the actions before you enrol an existing set. Then check the marketing contact status too, because the two failures look identical from the outside.

If your agency wants someone else to own bringing the automations up after a load, our white-label HubSpot support team does this under partner brands, and our migration team scopes the data side of the same project.

Sources

  1. HubSpot: Troubleshoot workflow enrollment issues (opens in new tab)
  2. HubSpot: Add re-enrollment triggers to a workflow (opens in new tab)
  3. HubSpot: Manage workflow enrollment settings (opens in new tab)

Frequently Asked Questions

Why didn't my migrated contacts enroll in a HubSpot workflow?

Most often because of the prompt shown when the workflow is switched on. Choosing to enrol only records that meet the criteria after activation excludes every record already in the portal, which after a migration is all of them. The workflow is working; it was told to ignore the existing database.

Do HubSpot workflows enroll records more than once?

Not by default. HubSpot documents that records enrol the first time they meet the enrollment triggers or are enrolled manually. Re-enrollment has to be switched on explicitly and re-enrollment triggers selected, otherwise a record that has already been through the workflow will not go again.

Why don't merged contacts enroll in workflows?

Merged records do not automatically enrol unless the setting to enrol merged records that meet the enrollment condition is switched on. This matters after a migration specifically, because deduplicating the loaded data produces merged records in volume.

Why is a list-triggered workflow not enrolling anyone?

Because enrollment happens when a record joins the list. Contacts that were already list members before the workflow was created never join it again, so they never trigger enrollment. This is the default state for everything imported before the workflow was built.

Is it safe to enroll existing records when turning a workflow on?

Only after auditing every action in the workflow. On a freshly migrated database, choosing to enrol existing records can send marketing email, create tasks and notify owners across the entire loaded set at once. Check the actions before answering, not after.

White-Label HubSpot Support

Need a Deeper HubSpot Bench Without Hiring One?

White-label support retainers: our senior HubSpotters handle your clients' portals under your brand, no points, no queues.