Pillar guide
The HubSpot Revenue Audit: A Definitive Method
Most HubSpot portals are sitting on revenue nobody is actively chasing — stalled deals, missed renewals, quiet customers, and lost opportunities that never got a second look. Here is a repeatable, defensible method for finding it, sizing it, and turning it into a 30-day recovery plan.
17 minute read · written by knovaly
What a HubSpot revenue audit is (and isn't)
A HubSpot revenue audit is a structured review of every deal, contact, and company record in a portal, undertaken specifically to answer one question: where is revenue that the business is entitled to, or has already earned the right to pursue, sitting unaddressed? It is not a data-quality audit, though data integrity is one of its six areas. It is not a forecast review, though open pipeline is one of its six areas. And it is not a CRM adoption audit, though follow-up discipline overlaps with adoption.
The distinction matters because each of those adjacent exercises answers a narrower question. A forecast review asks whether the quarter will land, using the subset of deals reps have already flagged as commit or best-case in their pipeline meetings. A CRM audit asks whether the system is being used correctly — are fields populated, are stages consistent, is data clean. A revenue audit asks a wider, more commercially blunt question: across the entire history in this portal, including deals nobody is thinking about right now, what is recoverable?
That reframing is deliberate. Deals that stalled eight months ago and were never formally closed lost. Contracts that renewed automatically without anyone checking usage or expansion potential. Customers who went quiet eleven months ago after a champion left, with no one flagged to re-engage them. None of these show up in a forecast call, a QBR deck, or a pipeline review — because by definition, they've fallen out of anyone's active attention. A revenue audit exists to surface exactly that category of exposure: real, dollar-denominated, and currently invisible.
Who should run one, and when
In our experience the request to run a revenue audit tends to come from one of four situations, each with a slightly different emphasis.
Post-quarter, when the number missed narrowly
When a quarter comes in at 91% or 94% of target, the instinct is to look at what went wrong in the last thirty days. The more useful exercise is to look at everything that quietly fell out of the pipeline over the preceding twelve months and ask whether any of it could have closed the gap. Frequently the answer is yes, several times over — deals sitting in dealstage values that haven't moved in 90+ days, silently dragging the whole team's hit rate down without anyone noticing which specific deals are responsible.
A new CRO or VP Sales in the first 30 days
New sales leaders inherit a pipeline they didn't build and often don't fully trust. Running a revenue audit in week two or three — before committing to a number for the coming quarter — gives an evidence-based read on what's real, what's inflated, and what's simply been sitting untouched under the previous owner_id assignments. It also creates a baseline the new leader can point back to twelve months later to demonstrate what they fixed.
Pre-board or pre-fundraise
Boards and investors increasingly ask about pipeline quality, not just pipeline size. A revenue audit that quantifies exposure by category — and shows a credible plan to recover a meaningful share of it — is a stronger answer than a raw pipeline coverage ratio, which says nothing about how much of that pipeline is real.
Post-migration or post-acquisition
Any time data has moved — a CRM migration, a merger of two HubSpot portals, an M&A integration — historical hygiene tends to degrade sharply. Duplicate contacts, orphaned deals, and broken owner assignments accumulate fast, and dormant relationships from the acquired book are especially easy to lose track of. An audit immediately post-migration catches this before it compounds for another two quarters.
The six areas to audit
A comprehensive audit covers six distinct areas. Each has its own diagnostic questions, its own HubSpot properties, and its own typical failure modes.
- Open pipeline credibility. Which open deals haven't had a stage change or logged activity in 60, 90, or 120+ days, and are they still realistically alive?
- Renewals and rebookings. Which contracts are approaching or have passed their renewal date with no linked renewal deal, task, or recent contact?
- Dormant relationships. Which customers or high-value contacts have had no logged engagement in six months or more, despite an active or recently active lifecyclestage?
- Win-back opportunities. Which closed-lost deals, especially those lost to "no decision" or budget rather than to a named competitor, are worth a second approach?
- CRM data integrity. How many duplicate contacts or companies exist, how many deals are missing amount or closedate, and how consistently is dealstage used across the team?
- Follow-up discipline. How many contacts or deals have exceeded your internal SLA for a follow-up touch after their last inbound signal?
The rest of this guide walks through each of these in the audit method below, with the specific properties and view filters to use for each.
Step-by-step audit method
The method below is designed to be executed inside HubSpot itself, using saved views and property filters, so that it is reproducible by anyone on the team and re-runnable on a schedule without rebuilding it from scratch each time.
- Fix the audit window and confirm access. Default to a 24-month lookback (36 months if your typical contract term exceeds 12 months). Confirm you have reporting access across deals, contacts, companies, and engagements for the whole portal, not filtered to your own owned records.
- Build the stalled-pipeline view. Filter deals where hs_is_closed is false, and hs_lastmodifieddate is older than 90 days, grouped by dealstage and hubspot_owner_id. Cross-reference against amount to rank by dollar exposure, not deal count.
- Build the renewals view. For subscription or contract businesses, filter closed-won deals or active company records where a renewal or expiration date property is within 60 days forward or has already passed, with no associated open renewal deal. If you don't track a dedicated renewal date property, approximate using closedate plus contract term.
- Build the dormancy view. Filter contacts and companies where lifecyclestage is customer or opportunity, and both hs_last_sales_activity_timestamp and notes_last_contacted exceed 180 days, excluding records with an open support ticket that would explain the quiet.
- Build the win-back view. Filter deals where dealstage is closed-lost, closedate falls within the lookback window, and the closed-lost reason property excludes "competitor selected" — no-decision and budget-related losses convert back at meaningfully higher rates than competitive losses.
- Build the data integrity view. Run HubSpot's duplicate management tooling for contacts and companies, and build a separate view for deals missing amount, missing closedate, or sitting in a dealstage that has not been used by the rest of the team in the past 90 days (a sign of an abandoned or legacy pipeline stage).
- Build the follow-up discipline view. Filter contacts with a recent form submission, meeting request, or inbound email where notes_last_contacted is either blank or older than your SLA (commonly 48 or 72 hours for inbound-qualified leads).
- Export, reconcile, and de-duplicate across views. A single account can appear in both the dormancy and renewals views; decide a hierarchy so it's only counted once in the total exposure figure, with a note on which categories it also touches.
- Size each finding conservatively. See the sizing method in the next section — do not sum face-value deal amounts uncritically.
- Package findings by owner and category, not as one long list. A rep or CS manager needs their fifteen relevant records, not a 400-row spreadsheet covering the whole portal.
Sizing each finding in dollars, defensibly
The single most common way a revenue audit loses credibility is by summing raw deal amounts without adjustment. A CFO who sees "$2.1M of recoverable pipeline" made up of full-value stalled deals will, correctly, discount it heavily and possibly dismiss the whole exercise. The fix is to apply a conservative, category-specific adjustment to every finding before it goes into a total.
- Open pipeline at risk: apply your historical stage-to-close conversion rate for that specific dealstage, not a flat 50%. A deal stalled in an early-stage bucket with a 12% historical close rate should be sized at 12% of amount, not full value.
- Renewals: size at the historical renewal rate for that customer segment (commonly 80-95% for healthy SaaS books), applied to the contract's annual value, minus any known churn signals (support escalations, usage decline) which should push the estimate down further.
- Dormant relationships: size using an expansion or reactivation rate benchmark from your own closed-won history for similarly dormant accounts that were later re-engaged, not from the account's full potential spend.
- Win-backs: apply your historical win-back conversion rate (typically lower than fresh pipeline, often 8-20%) to the original deal amount, adjusted for how much time has elapsed since the loss.
- Data integrity and follow-up discipline findings: these are usually sized as risk-to-existing-pipeline rather than net-new dollars — for example, the dollar value of deals whose data quality issues make their forecast inclusion unreliable.
The output of this stage should be two numbers for every category: a gross figure (what's technically at stake) and a recoverable estimate (what a conservative, historically grounded conversion rate suggests is realistically achievable). Present both. Boards and CFOs trust ranges with visible methodology far more than a single confident number with none.
Manual spreadsheet vs native reporting vs consultant vs automated scan
There are four broadly available ways to run this audit, and they trade off differently on speed, coverage, and reproducibility.
| Approach | Time to first answer | Coverage | Repeatability | Cost | Evidence trail |
|---|---|---|---|---|---|
| Manual spreadsheet export | 1-2 weeks | Depends on analyst thoroughness; easy to miss cross-object overlaps | Low — rebuilt from scratch each time | Low direct cost, high internal time cost | Static snapshot, hard to reconstruct exact filters later |
| HubSpot native reporting | 2-4 days | Good for single-object views; weak at cross-object dormancy and win-back logic | Medium — dashboards persist but require manual upkeep | Included in existing subscription | Dashboards are live but filter logic isn't always self-documenting |
| Consultant engagement | 3-6 weeks | Thorough, often includes process and org recommendations | Low — a point-in-time engagement, not a running system | $15,000-$60,000+ typical for a mid-market portal | Strong narrative report, but a one-off document |
| Automated read-only scan | Minutes to hours | Full-portal, cross-object by design (pipeline, renewals, dormancy, win-backs, data, follow-up) | High — re-runs identically on demand | Typically far below a consultant engagement | Every figure traceable back to the underlying records and filters |
None of these is universally wrong. A consultant engagement earns its cost when the findings need to feed a broader operating-model redesign. Native reporting is perfectly adequate for a single-category question, like "how many deals are stalled in negotiation." Where an automated scan tends to win is when the ask is exactly the one this guide is built around: a full-portal, defensible, re-runnable answer to "where is the recoverable revenue," delivered fast enough to act on this quarter rather than next.
Worked example: auditing a mid-market portal
To make the method concrete, here is a composite worked example based on the pattern we see repeatedly in mid-market B2B SaaS portals with roughly $8M in trailing twelve-month revenue, a team of eleven account executives, and no formal revenue audit in the past eighteen months.
| Category | Gross exposure | Conservative adjustment | Recoverable estimate |
|---|---|---|---|
| Open pipeline at risk (deals stalled 90+ days) | $740,000 across 34 deals | Stage-weighted conversion (avg 19%) | $140,600 |
| Renewals & rebookings (overdue or unconfirmed) | $1,120,000 in annual contract value | 88% historical renewal rate, minus 3 flagged at-risk accounts | $865,000 |
| Dormant relationships (180+ days no engagement) | $960,000 estimated account potential | 14% historical reactivation rate | $134,400 |
| Win-back opportunities (closed-lost, non-competitive) | $410,000 across 22 deals | 15% historical win-back rate, time-decayed | $61,500 |
| Data integrity (unreliable-forecast deals) | $285,000 in deals missing amount/closedate | Treated as forecast-risk, not additive | Not summed into total |
| Follow-up discipline (SLA-breached inbound leads) | 47 contacts past 72-hour SLA | Treated as leading indicator, not sized in $ | Not summed into total |
Summing the four dollar-denominated categories gives a recoverable estimate of roughly $1.2M against $8M in trailing revenue — about 15%. That figure sat in the middle of the 8-22% range we noted earlier is typical for a portal of this profile and audit gap. The two non-dollar categories (data integrity, follow-up discipline) aren't summed into the headline figure, but they explain a meaningful share of why the first four categories exist in the first place: 47 SLA-breached leads this quarter alone is a leading indicator that next quarter's dormancy and win-back numbers will grow if the underlying process isn't fixed.
This is the structure worth replicating: a small number of dollar-denominated, conservatively-adjusted category totals, plus a couple of leading-indicator counts that explain the trend rather than inflate the headline.
Turning the audit into a 30-day recovery plan
An audit that ends as a PDF changes nothing. The value is entirely in what happens in the thirty days after it lands. A recovery plan that has held up well in practice looks like this.
Week 1: reassign and triage
Every finding is reassigned to its accountable hubspot_owner_id, or explicitly reassigned if that rep has since left the company. Findings are triaged into "genuinely dead" (mark closed-lost properly, stop counting it) and "worth a real attempt" — this triage alone often removes 20-30% of the gross figure honestly, which is a feature, not a failure, of the process.
Weeks 2-3: work the highest-value 20%
Rank the surviving findings by recoverable-dollar estimate and work the top fifth first. In the worked example above, that means the handful of renewal accounts worth $865,000 in aggregate get the first calls, not the 22 win-back deals worth a combined $61,500 — sequencing by size, not by ease, is what makes the first two weeks defensible in a leadership review.
Week 4: review, re-forecast, and lock a cadence
At the 30-day mark, review what actually converted against the estimate, fold confirmed wins into the live forecast, and set the recurring cadence for re-running the audit (see below). This is also the point to update any conversion-rate assumptions used in the sizing method, based on what was actually observed this cycle.
Common mistakes that invalidate an audit
A handful of recurring errors are enough to undermine an otherwise well-run audit, either by inflating the headline number past credibility or by making the findings impossible to act on.
- Summing face-value deal amounts without any conversion-rate adjustment, producing a number that collapses under the first skeptical question in a leadership review.
- Double-counting across categories — an account that's both dormant and has an overdue renewal should be resolved to one category with a note, not counted twice in the total.
- Ignoring deal ownership changes, so findings get sent to a hubspot_owner_id no longer at the company, and nobody notices for weeks.
- Treating the audit as a one-off rather than building it as saved, reusable views, which means next quarter's version starts from zero rather than from a comparable baseline.
- Running the audit without involving the reps who own the accounts, producing a list that gets quietly deprioritised because the people expected to act on it had no input into its accuracy.
- Using a single blanket conversion rate across all deal stages or account segments, rather than the stage- and segment-specific rates that make the sizing defensible.
How often to re-run it
A revenue audit is not a once-a-year event; the categories it covers accumulate continuously, and a portal that goes untouched for twelve months between audits will surface a materially larger — and less recoverable — backlog than one reviewed quarterly.
| Category | Recommended cadence | Trigger for an off-cycle run |
|---|---|---|
| Open pipeline at risk | Monthly | Any quarter tracking below 90% of target |
| Renewals & rebookings | Monthly, tightening to weekly inside the renewal window | Any known churn signal on a major account |
| Dormant relationships | Quarterly | Loss of a key champion or executive sponsor |
| Win-back opportunities | Quarterly | Launch of a new product or pricing tier |
| CRM data integrity & follow-up discipline | Quarterly, or immediately post-migration | CRM migration, merger, or new sales-ops hire |
The practical shortcut most revenue leaders land on is a full six-category audit each quarter, with the pipeline and renewals categories checked monthly in between given how quickly they move. Because the saved views built in the method above are reusable, a quarterly re-run is a few hours of work rather than the days it took to build the first time — and if it's run through an automated scan instead, the marginal cost of re-running it each quarter is close to zero.
Frequently asked questions
- How is a revenue audit different from a forecast review?
- A forecast review asks whether this quarter's number will land, using deals already flagged by reps as committed or best-case. A revenue audit asks a broader question: across the entire portal, including deals nobody is actively working, where is money sitting that isn't in anyone's forecast at all? It looks at closed-lost deals from eighteen months ago, customers who went quiet, and contacts frozen mid-pipeline — none of which a forecast call ever touches.
- Do we need admin access to HubSpot to run this?
- You need at minimum a reporting-capable seat with visibility into deals, contacts, companies, and their activity properties across the whole portal, not just your own pipeline. Super admin isn't required to build the views described here, though it makes exporting and property auditing faster. If you're running a read-only scan via an integration, HubSpot's private app or OAuth scopes for read access to deals, contacts, companies and engagements are sufficient — no write access is needed.
- How far back should the audit look?
- Twenty-four months is the practical default. It's long enough to catch a full renewal cycle for annual contracts and to distinguish a genuinely dormant account from one that's simply between quarterly touchpoints, but short enough that the data is still representative of your current ICP and pricing. For businesses with multi-year contracts, extend the lost-deal and dormancy windows to 36 months; anything older rarely converts and mostly adds noise.
- Can a spreadsheet audit be accurate, or do we need software?
- A careful analyst with export access can produce a directionally correct spreadsheet audit, and for a first-pass, low-stakes review that's often enough. Where it breaks down is repeatability and evidence trail: six weeks later, when someone asks how the $410,000 figure was derived, a static export with manual filters is hard to reconstruct exactly. If the audit is feeding a board deck or a comp conversation, you want a method that recomputes identically on demand.
- What's a realistic size of recoverable revenue for a typical portal?
- It varies enormously with company age and CRM discipline, but in portals we've reviewed that hadn't been audited in over a year, the sum of open-pipeline risk, overdue renewals, dormant accounts and win-back candidates has typically landed between 8% and 22% of trailing twelve-month revenue. Newer, smaller portals with tight sales-ops discipline sit at the low end; larger portals with owner turnover and multiple CRM migrations sit at the high end.
- Should the audit include marketing-sourced pipeline separately?
- Yes, tag it, but don't segregate the analysis by source when sizing exposure — a stalled deal is stalled regardless of whether it came from an inbound form or an SDR outbound sequence. What's useful is noting hs_analytics_source at the finding level, because it tells you whether the fix is a sales process gap (dead deals from outbound) or a lead-routing gap (marketing-qualified deals nobody followed up on within SLA).
- Who should own the findings once the audit is done?
- Ownership should mirror your existing pipeline ownership model, not a separate audit team. Each finding should be reassigned to the hubspot_owner_id already on the record (or reassigned deliberately if that rep has left), with a named manager accountable for the category total — typically the CRO or VP Sales for pipeline and renewals, and RevOps or a Customer Success lead for dormancy and win-backs.
- Is a read-only scan actually read-only, or does it change data in HubSpot?
- A properly built read-only scan requests only read scopes on the relevant objects and never issues a write, update or delete call to your portal. You should be able to verify this from the HubSpot integration's permissions screen before granting access, and from your account's integration audit log afterward. knovaly's scan is built this way deliberately, since asking a revenue leader to hand over write access to run a first assessment is a needless trust hurdle.
Related reading
The Opportunity Score explained
How knovaly's 0-100 score turns audit findings into a single prioritised number.
Read morePipeline health guide
A deeper look at diagnosing and fixing stalled open pipeline.
Read moreCRM health score guide
How to measure and improve the data integrity side of your portal.
Read moreReactivating dormant customers
A focused playbook for the dormancy and win-back categories above.
Read moreSee a sample scan
View an example of what a completed knovaly scan report looks like.
Read more