Allow for basic in-report formulas, like dividing two columns

Status: Idea Submitted

I recently made a report and was trying to calculate a conversion rate. Pretty simple--one column had page views by channel, the next had form submits.

Unfortunately, you can’t just make a formula to divide one column by another.

Basic math functions like that would be great.

Math, date, string functions - a must!

Math, String and date functions are super important. Also functions like Excel/GSheets’s NETWORKDAYS.INTL (difference in business days) are really important for things to report on in Hubspot

I’ve seen multiple Ideas for this; commenting here as this is the most recent. It would DEFINTIELY make reports even more valuable.

- https://community.hubspot.com/t5/HubSpot-Ideas/Create-formulas-in-custom-reports-data-blending/idi-p/435313

- https://community.hubspot.com/t5/HubSpot-Ideas/Formulas-within-pivot-tables/idi-p/808649

- https://community.hubspot.com/t5/HubSpot-Ideas/Adding-formulas-to-reporting/idi-p/988878

This is exactly the wall I keep hitting, and I want to add a use case plus the technical reason it’s harder than it looks, in case it helps whoever picks this up.

The core issue is that formula fields in the custom report builder are row-level computed columns. They only ever see one record’s values, so there’s no way to write a formula that divides one total by another total. The single aggregation dropdown runs after the row math has already collapsed each record to one number, so you’re aggregating a column of per-row results, not dividing one sum by another.

Here’s a real example. I built three KPI cards on one report:

  • Leads YTD = 6,893

  • Contacts YTD = 1,815

  • Leads YTD / # Contacts YTD = 41.16

The first two are correct. The third should be 379.7% (6,893 ÷ 1,815). It returns 41.16. Both inputs are sitting right there on the same report, so you can see the division just isn’t happening. What’s actually going on: my numerator and denominator come from different row populations (this is a newer portal with a big historical import, so a lot of contacts created in prior years enter this stage this year). At the row level those cross-year records evaluate to 1/0, which is null, so they get silently dropped, and averaging what’s left gives 41. If every row value is either 0 or 100, no aggregation can ever exceed 100, which is how you know 41 isn’t the real answer.

One thing worth naming for the product team: this already exists in Datasets through summary functions and FIXED(), and HubSpot’s own docs show the win-rate pattern doing exactly this. So the math is solved, it’s just gated behind Data Hub. The real ask is to bring a basic version of post-aggregation calculation (a “calculated measure,” in Looker/Tableau/Power BI terms) down into the base report builder for Pro. Conversion and funnel rates are about as common as reporting needs get, so it shouldn’t require the top tier to compute one.

Attaching a screenshot of the three cards, it makes the failure obvious in one frame.