← Back to blog

5 HubSpot Dashboard Report Smells I Find on Every Audit

If a dashboard has these on it, the team isn't using it. They're decorating with it.

·5 min read·hubspot · analytics · audits

I audit a lot of HubSpot portals. Same dashboard smells keep showing up — not because anyone is incompetent, but because the report builder is permissive and nobody opens these dashboards after they're built.

Here are the five I check for first. Each one takes about ten seconds to spot once you know the shape.

1. The KPI widget that isn't a KPI

What it looks like. A single-number KPI tile titled something like "Deals by Stage" or "Contacts by Lifecycle." You stare at it. It's just one number. Where's the breakdown?

Why it happens. Someone built a report, hit "Save as KPI" because the layout looked compact, and the dimension got collapsed away. The title was set when the report was first drafted as a chart and never got renamed. The widget now contradicts itself.

How to spot it in 10s. Skim the dashboard. If a tile's title contains "by <something>" and the tile shows a single number, it's broken. Bonus check: ratio of single-number tiles to ones with actual chart geometry. If 4 out of 6 widgets are flat numbers, the dashboard is decorative.

How to fix. Two options. Either rename the tile to what it actually shows ("Open Deals", "Total Contacts") or rebuild it with the dimension restored. Don't leave the lie up.

2. The bar chart with 200 bars

What it looks like. A horizontal bar chart that goes off the bottom of the widget and keeps scrolling. You can't read any label. The top 3 are 90% of the volume and everything else is noise.

Why it happens. A free-text property — original_source_drill_down_2, traffic_source, a custom "How did you hear about us?" field — got used as a dimension. Every typo, every variant, every "google ", "Google", "google.com" is a separate bar.

How to spot it in 10s. Count visible bars. If it's more than 25, the chart is unusable. Open it full-screen — if you have to scroll inside the report, ship it back.

How to fix. Two paths depending on the property. If the cardinality is real (e.g. company names), add a "Top N" limit (top 10) and stop pretending the long tail matters. If the cardinality is fake (e.g. campaign names that need to roll up into Paid / Organic / Referral), do the rollup in a calculated property or a custom code action and chart the rollup instead.

3. Mixed date scopes on one dashboard

What it looks like. Same dashboard, same theme, three reports. One says "All time." One says "This entire month." One says "Custom: Jan 1 – Mar 31." The dashboard-level date filter exists but doesn't propagate to any of them.

Why it happens. Reports get added to a dashboard one at a time over months. Each one was set up with whatever date range made sense to the person building it that day. Nobody ever ran an "is the date scope coherent across this dashboard?" pass.

How to spot it in 10s. Glance at the subtitle under each report title. If two adjacent reports disagree about what time period they cover, the dashboard is incoherent — you cannot compare the numbers, and viewers will compare them anyway.

How to fix. Pick one scope per dashboard ("rolling 90 days", "this fiscal quarter", "all time"), edit every report to match, and verify the global date filter actually flows through (test it by changing the filter and confirming every widget updates).

4. Last Touch Converting Campaign on a portal that doesn't use campaigns

What it looks like. A pie chart or bar chart with "Last Touch Converting Campaign" as the dimension. There are four slices. One of them is 87% labeled "(no value)". The other three are tiny.

Why it happens. That property is auto-populated only when contacts come through tracked campaigns inside HubSpot's marketing email / ads tools. On portals that run paid traffic through other systems, or don't use HubSpot campaigns at all, the property is empty on 98%+ of contacts. People reach for it because it sounds like the right field. It isn't.

How to spot it in 10s. When you see a chart with one giant "(no value)" slice or bar, the dimension is wrong for that portal. Verify by sorting contacts by that property descending — if "(no value)" is the top bucket by an order of magnitude, don't put it on the dashboard.

How to fix. Use a property that's actually populated. original_source_type and original_source_drill_down_1 cover most of what people want from this report. If you genuinely need campaign attribution, fix the population problem upstream (tag your ads, use UTM-mapped properties) before charting it.

5. The "Digital Sources" chart that secretly includes Offline

What it looks like. A chart titled "Digital Sources" or "Online Channels" filtered by Original Source = anything that isn't a specific list. Looks fine. But one of the bars is enormous and labeled "Offline Sources."

Why it happens. "Offline Sources" is a real enum value in HubSpot's original_source_type field — it's the catch-all bucket for imports, list-uploads, and integrations that didn't set a source. It dominates almost every portal that's been around for more than a year. When you filter for "digital channels," you have to explicitly exclude it. People filter inclusively ("source IS Email Marketing OR Paid OR Organic") and miss the exclusion path entirely. Or worse, they use "is known" — which lets Offline through.

How to spot it in 10s. Look at the chart's biggest bar. If it's "Offline Sources" and the chart title says "Digital" anywhere, the filter is broken.

How to fix. Add Original Source Type ≠ OFFLINE as an explicit filter. Verify by checking the visible buckets after applying it — there should be no offline catch-all left.

Why this matters more than it looks

These aren't aesthetic complaints. A broken dashboard isn't neutral — it's worse than no dashboard. Someone glances at it in a meeting, half-reads a number, and makes a decision against the wrong denominator. The fix is almost never new tooling. It's a 20-minute audit that anyone with edit rights can do.

If you want a checklist version of this: walk every report on the dashboard, ask "does the title match what I see?", "is the date scope coherent with its neighbors?", and "is the biggest bar telling the truth?" That's it. That's the whole audit.