RevOps HQ
← BACK TO BLOG
8/15/2026
HubSpotRevOps Metrics & Forecasting

HubSpot Custom Report Builder: Choosing a Chart Type, and What Each One Is For

HubSpot custom report builder: what each chart type is for, how dimensions and measures decide which you can use, and which reports to delete.

P

Paul Maxwell

AUTHOR

GET WEEKLY REVOPS INSIGHTS

No spam. Unsubscribe anytime.

You pick a data source in the custom report builder, drag two properties into slots, and HubSpot offers ten ways to draw the result. Nothing in the interface says which one answers the question you came in with, so the chart chosen is usually the familiar one. That is how a portal ends up with forty reports, six of which anyone opens.

This article covers three things in order: how a report is assembled, from object through property to parameter; what each chart type is actually for, and which shape of question it answers; and what to do about the reports that accumulate and quietly cost you credibility. The join and primary-source mechanics that decide whether a total is correct are covered near the end, because they matter enormously and only after the chart can answer the question at all.

Two terms first, because the builder's whole behaviour follows from them. A dimension is a field with no aggregation — a stage name, an owner, a month. A measure is a field with an aggregation method set on it — a count of deals, a sum of amount, an average of days to close. HubSpot displays dimensions in grey and measures in green, and the colour tells you where the field is allowed to go.

Objects, Properties, Parameters

A report is built in three passes, and doing them out of order wastes the time.

The object pass decides the record universe: you choose a primary data source, may add related sources, and that choice fixes what the report can count. A report built on deals counts deals; adding contacts lets you break deals down by contact properties, and it does not turn the report into a contact report.

The property pass fills the field slots, and the two field types are allowed in different places: dimensions occupy the X-axis and the breakdown slot, while measures occupy only the Y-axis, to a maximum of twelve per report. If a field will not drop where you want it, the reason is almost always that you are trying to put a dimension on an axis that needs an aggregate, or the reverse.

The parameter pass is filters and display, where filters use ALL of the filters below or ANY of the filters below, with custom filter rules available for AND/OR grouping when the plain form is not enough. Display settings carry the axis scale, legend position, data labels, and axis minimum and maximum.

The order matters because each pass constrains the one after it. Choosing a chart before the object pass means choosing a picture before knowing what is in the room it has to describe.

Chart Types and the Questions They Answer

The builder offers vertical bar, horizontal bar, line, area, combination, donut and pie, KPI, gauge, pivot table, table, and scatter, plus a smart chart that suggests one. They are not interchangeable, and each answers a different shape of question. The panels below hold the data constant and change only the rendering, so every difference between them is a property of the chart.

One dataset, eight renderings — scroll sideways

Vertical bar

Comparing a quantity across a handful of unordered categories.

02142RiveraChenOkaforBaptiste42312418

Horizontal bar

The same comparison when the category names are long enough to collide.

Rivera42Chen31Okafor24Baptiste18

Line

A trend over an ordered axis. The slope is the point.

01734MarAprMayJunJulAug

Area

The same trend when the volume beneath it is part of the message.

01734MarAprMayJunJulAug

Combination

Two measures in different units against one axis of categories.

01734MarAprMayJunJulAug0%18%35%

Stacked bar

Composition within each category, when the total also matters.

02856MarAprMayJunJulAug

Donut

One series as parts of a whole, when there are few enough parts to read.

115Rivera37%Chen27%Okafor21%Baptiste16%

Scatter

The relationship between two measures, one record per mark.

MarAprMayJunJulAugDeals closed →Win rate
The same four owners and the same six months in every panel, so any difference in what can be seen is a property of the chart rather than of the numbers.
One dataset drawn eight ways — the same four owners and six months in every panel

KPI. One number against a target or a prior period, for the figure someone would ask for by name — pipeline created this quarter, deals closed this month. A KPI with no comparison is a number without a verdict, so set the comparison period.

Gauge. One number against a fixed goal drawn as progress, answering "how far through" rather than "how much", which suits quota attainment and onboarding completion. Where there is no fixed target, a KPI is the honest choice.

Vertical bar. Comparison across a small number of categories, or a count over time where the periods are discrete. It stays readable to roughly ten bars, past which the labels collide and a horizontal bar carries the same comparison better.

Horizontal bar. The same comparison when the category names are long or numerous — owners, industries, lead sources, lifecycle stages. Long labels read straight across instead of at an angle, and that legibility is the entire reason to choose it over the vertical form.

Line. A trend in a continuous measure over time, for when the question is direction rather than magnitude — whether average deal size is rising, whether time-to-close is drifting — and note that a line drawn through four points is a bar chart rendered badly.

Area. A trend where the total and its composition both matter — pipeline by stage over time. It reads well for three or four series and becomes unreadable past that, because the bands stop being separable.

Combination. Two measures on different scales, typically a count as bars and a rate as a line — deals created and win rate, sessions and conversion rate. This is the chart most often needed and least often chosen, because people build two reports instead and put them side by side, where nobody compares them.

Donut and pie. Composition of a whole at one moment, and only where the parts are few and add to something meaningful. Angle and area are read less accurately than position along a common scale, which is the measured reason a bar chart beats a pie for comparison and a pie survives only where the question is genuinely "what share" (Cleveland and McGill 1984). Five slices is a limit rather than a target, and if the question involves change over time this is the wrong chart entirely.

Scatter. The relationship between two measures across records — deal size against days to close, for instance. It is the only chart in the set that answers "do these move together", and it is almost never used.

Table and pivot table. Where the reader needs the values rather than the shape, or wants to export them. A pivot table is the right answer more often than teams expect, particularly for a operations audience who will act on rows rather than trends.

The shape of the question, the chart that answers it, and the fields each requiresSeven shapes of question mapped to the charts that answer them. A single value, such as pipeline created this quarter, wants a KPI or gauge and needs one measure and no dimension. A comparison, such as deals won by owner, wants a vertical or horizontal bar with one dimension on the X-axis and one or more measures on the Y. Change over time wants a line or vertical bar with a date dimension on the X-axis. Two measures on different scales, such as deals created and win rate, want a combination chart. A composition question wants a donut or pie for one moment, or an area chart over time. A relationship between two measures wants a scatter. Where the reader needs the values themselves, a table or pivot table is the answer rather than a chart. Throughout, dimensions may sit on the X-axis and the breakdown slot only, and measures on the Y-axis only, to a maximum of twelve per report.START FROM THE QUESTION, NOT FROM THE CHART PALETTESHAPE OF THE QUESTIONEXAMPLECHARTWHAT THE SLOTS NEEDA single valuePipeline created this quarterKPI · Gauge1 measure, no dimensionComparisonDeals won by ownerVertical bar · Horizontal bar1 dimension on X, 1+ measures on YChange over timeAverage deal size by monthLine · Vertical bardate dimension on X, measure on YTwo scales at onceDeals created and win rateCombination2 measures, separate axesCompositionPipeline by stageDonut · Pie · Area over time1 dimension, 1 measureRelationshipDeal size against days to closeScatter2 measures, one per axisThe values themselvesEvery open deal over $50kTable · Pivot tabledimensions and measures as columnsDimensions sit on the X-axis and the breakdown slot. Measures sit on the Y-axis, twelve at most. A field that will not drop is in the wrong slot.
The shape of the question, the chart that answers it, and the field types each requires

Choosing by the Shape of the Question

Rather than starting from the chart list, start from what is being asked. Questions come in six shapes, and each maps to a small set of charts.

A question about a single value wants a KPI, or a gauge where a fixed target exists. A question about comparison between categories wants a bar, vertical for few and short labels, horizontal for many or long ones. A question about change over time wants a line for a rate or an average, a vertical bar for a count of discrete periods. A question about composition wants a donut for one moment or an area chart for composition over time. A question about relationship wants a scatter, and a question about the values themselves wants a table rather than a chart at all. Later replication of the perception work confirmed the ordering across a much larger sample, so this is a finding rather than a house style (Heer and Bostock 2010).

If a question does not fall into one of those shapes, it is usually two questions, and it should be two reports.

The Reports Nobody Opens

Report clutter is a credibility problem rather than a tidiness one, and it compounds.

Every portal accumulates reports built for one meeting, one campaign post-mortem, or one executive question that was answered and never asked again. They stay because deleting things feels riskier than keeping them, and the cost arrives later: a person searching for the pipeline report finds four with similar names, cannot tell which is authoritative, and picks one. When two people pick differently, the meeting becomes an argument about which report is right, and the reporting function loses the argument regardless of the answer.

Three rules keep the library from filling up again.

A report is built for a recurring decision or it is a query. If the answer will be looked at exactly once, run it, screenshot it into the deck, and then do not save it. Saving it is what creates the clutter, and the report will be stale the next time somebody finds it.

Every saved report has a named owner and a review date. Ownership is what makes deletion possible later, because the question "can we delete this" has somebody to ask.

A report with no dashboard is a candidate for deletion. Reports that belong to nothing are reports nobody scheduled, and a report nobody scheduled is one nobody is waiting for.

Where a portal is already past this point, the tractable move is to work from the dashboards backwards: everything on a dashboard stays, everything else goes onto a list with a date, and anything not claimed within a fortnight is deleted. The number of complaints this produces is a good measurement of how much of the library was real.

Naming and Grouping

Names decide whether a report is findable, and the default names are the problem. Deals by owner tells you nothing about the filters that make it specific.

A workable convention carries the object, the cut, and the scope: Deals — by owner — current quarter, new business. It sorts sensibly, it distinguishes the four similar reports from each other, and it tells a reader whether this is the one they want without opening it.

Group reports by the decision they serve rather than by the object they are built on. A folder holding every deal report is a filing cabinet, whereas a folder for the weekly pipeline review is a working set somebody uses. The person looking for a report is looking for it because of a meeting, not because of an object type.

The Primary Source and What It Includes

Chart choice decides whether a report can answer the question, and the primary data source decides whether that answer is true.

The primary source fixes the record universe: the report can only count records that exist in it. A report whose primary source is deals cannot show contacts with no deal, no matter which properties are added, and a report built on contacts will silently exclude a whole segment if the filter set implies a deal association. When a report is missing records everyone knows exist, this is nearly always why.

The primary source decides which records a report containsA portal holds three contacts — Ana, Ben and Cara — and two deals. Ana and Ben are each associated to a deal; Cara has none. One deal, worth 12,000, has no associated contact. A deals-primary report returns two rows, one per deal, including the deal with no contact, but Cara never appears. A contacts-primary report returns three rows, one per contact including Cara, but the deal with no associated contact is absent entirely and its revenue is missing from any total.THE DATA IN THE PORTALAnaBenCaraDeal · $40,000Deal · $12,000Ana and Ben are each associated to the $40,000 dealThe $12,000 deal has no associated contactCara has no dealDEALS PRIMARY — THE UNIVERSE IS DEALSDeal $40,000 · contacts: Ana, BenDeal $12,000 · contacts: noneTotal $52,000Cara is not in this reportCONTACTS PRIMARY — THE UNIVERSE IS CONTACTSAna · deal $40,000Ben · deal $40,000Cara · no dealTotal $80,000 — see the next diagramThe $12,000 deal is not in this report
The primary data source fixes which records the report can count at all

The second failure is subtler and more expensive. Where a report joins a one-to-many relationship — deals to line items, companies to deals — a record on the "one" side repeats once per match, and any measure summed across those rows is inflated.

A one-to-many join repeats a deal across rows and multiplies the sumOne deal worth 50,000 dollars is associated to three contacts: Ana, Ben and Cara. In a contacts-primary report, the join produces one row per contact, and each row carries the same 50,000 dollar deal amount. Summing deal amount across those three rows returns 150,000 dollars for a deal worth 50,000. No error is raised, because each row is individually correct.ONE DEAL · THREE ASSOCIATIONS · ONE REPORTDealAmount $50,000AnaAna · deal amount $50,000BenBen · deal amount $50,000CaraCara · deal amount $50,000SUM OF DEAL AMOUNT$150,000for a deal worth $50,000Every row here is correct.Nothing errors, becausenothing is malformed.
How a one-to-many join repeats the parent row and inflates a summed measure

The repair is to count the measure at the grain it belongs to. Sum deal amount in a deals report; sum line item revenue in a line-items report; do not sum deal amount in a report that has line items joined to it. Where both are genuinely needed, build two reports and place them together on a dashboard rather than forcing one chart to carry both grains.

Verification Before Publication

Custom reports refresh roughly every two hours, so a report checked immediately after a data change will disagree with the record and be right later. Build that into the check rather than debugging a difference that resolves itself.

The verification worth doing on every report before anyone else sees it is a reconciliation against the index page. Apply the same filters in the deals or contacts index, compare the record count, and compare one summed figure. A report that agrees with the index on both is not necessarily correct, and one that disagrees is definitely wrong. It takes about a minute and it is the difference between a reporting function people trust and one they check.

Symptoms and Their Causes

A measure will not drop onto the axis. The field is a dimension — no aggregation is set on it. Set an aggregation or move it to the X-axis or breakdown slot, where dimensions belong.

Revenue reads higher than the deals index for the same filters. A one-to-many join is repeating the parent row. Move the measure to a report built at the grain it belongs to.

A known segment is missing entirely. The primary data source does not contain those records. Rebuild with the object that contains every record you need to count as the primary source.

Twelve measures is not enough. The report is really two reports and should be split. The limit is a design constraint rather than an obstacle, and a chart carrying twelve measures is unreadable well before it is invalid.

Two reports with similar names disagree. Both are probably correct at different grains or filters. Rename both to carry their scope, and delete whichever is not attached to a dashboard.

Scope and Limits

This covers the custom report builder, not the single-object report builder or the attribution reports, which have their own field behaviour and their own limits. Report allowances differ by subscription tier, and the current numbers live in HubSpot's product catalogue rather than in an article, because they change.

The chart guidance above is a set of defaults rather than rules. A horizontal bar with thirty categories is unreadable on a dashboard and exactly right in a sortable operations review that people scroll. The reason to state the default is to make the exception deliberate.

Nothing here addresses dashboard construction — how reports are arranged, filtered together and scheduled. Dashboards carry their own limits, including a maximum count tied to subscription tier and a fourteen-day window to restore a deleted one, and they are a separate problem and a separate article.

References

Cleveland, William S., and Robert McGill. 1984. "Graphical Perception: Theory, Experimentation, and Application to the Development of Graphical Methods." Journal of the American Statistical Association 79 (387): 531–554. https://doi.org/10.1080/01621459.1984.10478080

Heer, Jeffrey, and Michael Bostock. 2010. "Crowdsourcing Graphical Perception: Using Mechanical Turk to Assess Visualization Design." Proceedings of the SIGCHI Conference on Human Factors in Computing Systems: 203–212. https://doi.org/10.1145/1753326.1753357

In Summary

Build in the order the tool implies: object, property, parameter. Choose the chart from the shape of the question rather than from familiarity, and remember that the combination chart exists, because it is the one people need and skip.

Then treat the report library as something that is maintained rather than accumulated. Reports built for a single meeting should not be saved, saved reports should have an owner, and reports attached to nothing should be deleted. Reporting credibility is lost mostly to a room full of similar reports that disagree, and almost never to a single wrong chart that somebody caught.

HubSpot services

Onboarding, implementation, integration, migration, administration and training, each scoped and priced before the work begins

WEEKLY PROGRAM

RevOps Office Hours

A recurring weekly RevOps operating program. Live support plus hands-on HubSpot implementation work.

$1,500/mo
Monthly Operating Program
  • 1 live Office Hours session per week
  • 4 hours of hands-on implementation work per month
  • Hours allocated against priorities agreed at the start of each period
  • Recurring monthly cadence