Most HubSpot audit checklists tell you what to review: contacts, workflows, properties, reports. Then they leave you alone with a portal of 40,000 records and no idea what a bad result looks like.
This one is built the way we run audits for clients. Every check has three parts: the filter that finds the problem, the threshold that means you failed, and the fix. You need super admin access, a spreadsheet with 25 rows, and about 90 minutes. Write down pass or fail and the record count. Do not fix anything while you audit. You will prioritise at the end.
Deals and pipeline: 6 checks
Start here, because these six decide whether your forecast is real. HubSpot’s forecast is amount multiplied by stage probability, bucketed by close date. If any of the three inputs is stale, the number on the dashboard is wrong.
| # | Check | Filter to run (Deals) | Fail if |
|---|---|---|---|
| 1 | Open deals with a close date in the past | Close Date is more than 1 day ago, Deal Stage is none of Closed won / Closed lost | More than 5% of open deals |
| 2 | Open deals with no amount | Amount is unknown, deal is past your first stage | Any deal past qualification |
| 3 | Open deals with no recent activity | Last Activity Date is more than 14 days ago, or unknown | More than 20% of open deals |
| 4 | Deals with no contact attached | Number of Associated Contacts is equal to 0 | Any open deal |
| 5 | Deals stuck in a stage | Date entered current stage is more than twice your normal time in that stage. Run it once per stage | More than 10% of a stage |
| 6 | Deals owned by nobody | Deal owner is unknown, or is a deactivated user | Any open deal |
The fix. Checks 1 to 3 are rep behaviour, so they need a recurring nudge, not a one-time cleanup: a weekly workflow that creates a task for the deal owner when a close date passes or a deal goes quiet. Check 2 is a settings fix. In the pipeline settings, make Amount and Close date required from your qualification stage onward. Checks 4 and 6 are one bulk edit each.
Contacts and companies: 6 checks
Contact problems cost money in two ways. Bad records inflate your marketing contacts tier, and unowned records mean leads nobody calls.
| # | Check | Filter to run (Contacts) | Fail if |
|---|---|---|---|
| 7 | Leads with no owner | Contact owner is unknown, Lifecycle Stage is any of Lead, MQL, SQL, Opportunity | Any |
| 8 | Duplicates | Data Management, then Data Quality, then Manage duplicates (Professional and up). Check both the Contacts and Companies tabs | More than 2% of the database |
| 9 | Paying for contacts you cannot email | Marketing contact status is Marketing contact AND (Email hard bounce reason is known OR Unsubscribed from all email is true) | Any. Each one counts toward your billing tier |
| 10 | Unreachable records | Email is unknown AND Phone Number is unknown | More than 5% |
| 11 | Contacts with no company (B2B) | Contacts not associated with any company record | More than 15% |
| 12 | Broken source tracking | Report on Original Traffic Source for contacts created in the last 90 days | Offline sources is your largest bucket and you do not import lists |
The fix. Check 9 is usually the fastest money in the whole audit. Set those contacts to non-marketing and the change applies at your next renewal or monthly update date. For check 7, the root cause is almost always a form or an integration that creates contacts without going through your assignment workflow. Find the source with Original Traffic Source Drill-Down 1 before you bulk-assign. For check 11, turn on automatic company association in the Companies settings if your contacts use work email domains.
Properties: 3 checks
Every portal older than two years has property sprawl. The risk is not the clutter. The risk is that reports and workflows quietly read from the wrong one of three fields called Industry.
| # | Check | Where to look | Fail if |
|---|---|---|---|
| 13 | Custom properties nobody fills | Settings, Properties, filter to custom properties, sort by Fill rate | More than a third of custom properties sit under 5% fill rate |
| 14 | Properties that mean the same thing | Same screen. Search for the usual suspects: industry, source, region, type, status | Any pair where both are used in a form, workflow or report |
| 15 | Required fields by deal stage | Settings, Objects, Deals, Pipelines, then edit the properties for each stage | Amount and Close date are not required by your qualification stage |
The fix. Do not delete. Open each candidate, check the Used in tab, and move unused properties into a group called Archive first. For true duplicates, pick the survivor, copy values across with a workflow, then repoint forms and reports before you archive the loser.
Lifecycle stage and lead status: 3 checks
These two properties cause more reporting arguments than anything else in HubSpot. Lifecycle stage says where a contact is in the funnel. Lead status says what sales is doing about it right now. The audit only asks whether they are filled in and whether they agree with the deals.
| # | Check | Filter to run (Contacts) | Fail if |
|---|---|---|---|
| 16 | Contacts with no lifecycle stage | Lifecycle Stage is unknown | More than 1% |
| 17 | Customers who never bought | Lifecycle Stage is Customer, and no associated deal is Closed won | More than a handful |
| 18 | Sales-ready leads with no status | Lifecycle Stage is SQL AND Lead Status is unknown | Any |
The fix. For check 17, look at the lifecycle stage sync setting under Settings, Objects, Contacts. HubSpot can move contacts to Opportunity when a deal is created and to Customer when it is won. If that is off and a workflow does the job instead, you have found the reason for the mismatch. For check 18, have the workflow that sets SQL also set Lead status to New, so a rep’s queue is a single filter.
Workflows and automation: 4 checks
| # | Check | Where to look | Fail if |
|---|---|---|---|
| 19 | Workflows that are on but enrol nobody | Workflows list, the Unused tab (no actions in the last 90 days), filtered to workflows that are turned on | More than 10% of active workflows |
| 20 | Workflows with errors | Workflows list, the Needs review tab | Anything older than a week |
| 21 | No naming convention | Read the list. Can a new admin tell what a workflow does and who owns it from the name? | You cannot |
| 22 | Several workflows writing the same property | Open Lifecycle stage, Lead status and Contact owner in Settings, Properties, then the Used in tab | More than one workflow sets the value with no documented order |
The fix. Check 22 is the one that matters. Two workflows fighting over Contact owner is a common reason leads bounce between reps. Consolidate every write to one property into one workflow with branches. For check 21, a convention as simple as [Object] | [Team] | [What it does] is enough. Turn unused workflows off for 30 days before deleting them.
Users, seats and integrations: 3 checks
| # | Check | Where to look | Fail if |
|---|---|---|---|
| 23 | Paid seats held by inactive users | Settings, Users & Teams. Compare the Seats tab with the Last active column | Any paid seat with no login in 60 days |
| 24 | Too many super admins | Same screen, filter by Super admin | More than three, or any former employee or agency |
| 25 | Integrations nobody owns | Settings, Integrations, Connected apps and Private apps. Look at sync errors and last activity | Any app with errors, or a private app token nobody can explain |
The fix. Check 23 pays for the audit. Reassign the records first, then remove the seat. For check 25, every connected app gets a named internal owner in your admin doc. An integration without an owner is a future outage.
How to score it and what to fix first
Count your fails. Under 5 is a healthy portal. Between 5 and 12 is normal for a team with no dedicated admin. Over 12 means the portal has been growing without anyone steering it, and you should plan a cleanup project rather than a list of tickets. These bands are our rule of thumb, not an industry standard.
Then fix in this order, regardless of what annoys you most:
- Money leaks. Checks 9 and 23. Unemailable marketing contacts and idle seats are costs you can remove this week.
- Forecast accuracy. Checks 1 to 6 and 15. Leadership decisions depend on these numbers.
- Lead handling. Checks 7, 18 and 22. Every unowned or mis-routed lead is lost pipeline.
- Data trust. Checks 8, 12, 16 and 17. These decide whether anyone believes your reports.
- Hygiene. Everything else. Worth doing, never urgent.
Book the next audit now. Quarterly works for most teams. Save each filter as a view the first time, and the second audit takes half an hour.
FAQ
How long does a HubSpot audit take?
This checklist takes about 90 minutes to run if you only record results. Fixing what it finds is a separate job: a few hours for a small portal, several weeks for a large one with years of history.
How often should you audit HubSpot?
Quarterly for most teams. Run the deals section monthly, before the forecast call, because deal data decays fastest.
Can HubSpot audit itself?
Partly. The data quality tools under Data Management flag duplicates, formatting problems and unused properties on higher tiers. They do not check your process: whether deals have owners, whether lifecycle stages match reality, or whether two workflows are fighting over the same field. Those are the checks that change revenue, and they need a person or a tool built for them.
Should you hire someone to do it?
If you failed more than 12 checks, or nobody on the team has the hours to fix what you found, it is cheaper to bring in an admin than to let the portal drift another quarter. That is what our HubSpot admin as a service exists for. If you just want a second pair of eyes on the results, send us your scorecard and we will tell you what we would fix first.
Related reading
Alignify
On this page
Get the audit checklist
All 25 checks as a spreadsheet with auto-scoring.
Talk to Alignify
45 minutes, your portal on screen, no slides. We show what we would fix first.