Case study · CRM data hygiene

Auditing a HubSpot portal nobody had cleaned in six years

An old portal sends email that nobody owns. I wrote an audit that lists every workflow, finds the four ways they break, and ranks what to fix first.

Marketing operationsHubSpot APIPythonDeliverability
80+workflows pulled and read
~30still sending automated email
7 in 10of those were a single email with no follow-up
4failure types, each with a fix

Problem

Nobody could say what the portal was sending.

Workflows had been built by different people over several years. Some were named after campaigns that had ended. Two could fire from the same form. The same email was attached to more than one workflow, so a contact could get it twice.

The HubSpot screen shows workflows one at a time. It will not tell you which ones overlap. To see that, you have to pull them all and compare them.

The four ways email workflows break

Two workflows, one form

The same form starts more than one workflow. The contact fills in one thing and gets two emails. This is the worst of the four because the contact sees it straight away.

The same email in two places

One email is used by two live workflows. Change the copy and you change it in both, often without knowing.

No suppression list

The workflow has nothing to stop it emailing people who should be left alone: open deals, unsubscribes, staff, competitors.

Re-enrolment left on

The contact can enter the same workflow again and get the same sequence again. Fine for a form receipt. Bad for an eight-email nurture.

Method

Pull it all, then compare.

  1. Pull every workflow from the HubSpot API, live and paused.
  2. Pull what each one is joined to: the form or list that starts it, the emails it sends, the subject lines.
  3. Compare across workflows. Two workflows on one form is an overlap. One email in two workflows is reuse.
  4. Score each workflow against the four failure types and sort by risk.
  5. Write the cleanup as a checklist, one line per workflow, with the decision already made: turn off, merge, add a suppression list, or leave alone.

The audit runs again in a few minutes. That matters more than the first result. A portal drifts back, so the check has to be cheap enough to repeat.

What it proves

Data hygiene is a repeatable job, not a spring clean.

Most email problems are not copy problems. They are two workflows firing on one form, or a nurture that keeps re-enrolling the same person. You find those by reading the whole portal at once, which means reading it through the API.

The same audit works on any portal. It reads what is there and does not need to know the business first.

Account IDs, workflow IDs, campaign names, and contact data are withheld. Counts are rounded.