Custom Report Builder: Allow exact date/time values, not just "Hour of day" as the finest Date part

When building a report in the Custom Report Builder (cross-object reports combining Meetings, Contacts, Companies, etc.), any date or datetime property can only be displayed using a “Date part” grouping. The finest granularity available is “Hour of day,” which rounds every value down to the top of the hour. For example, a meeting scheduled for 11:30 AM displays as 11:00 AM, with no way to show the actual minutes.

This makes it impossible to build a report that shows exact meeting times (or any other exact timestamp) alongside related data from other objects, which is a basic reporting need, not an edge case.

Current workarounds explored:

  • Formula fields in the report builder don’t support date-formatting functions, so they can’t solve this either.
  • Single object reports can show the raw timestamp, but they don’t support pulling in associated Contact/Company properties the way Custom Report Builder does, so they’re not a real substitute for cross-object reporting.
  • The only reliable workaround is building a workflow to copy the value into a separate text property, which requires either a Data Hub subscription (for the native Format data action) or a third-party marketplace app, just to display a field that already exists on the record.

Requested fix:
Add an option in the Custom Report Builder’s Date part selector to display the exact date and time value (or at minimum, add “Minute” as a Date part option), so exact timestamps can be shown natively without requiring extra properties, workflows, or paid add-ons.

Why it matters:
Any team reporting on meetings, calls, or other time-based activities across objects, event/conference dashboards, sales activity analysis, scheduling patterns, needs this level of detail. Right now, native HubSpot reporting is not able to answer from what I can tell, “what time did this meeting happen”.

Thank you in advance for looking in to this.

I agree that exact timestamps should be available in cross-object reports. Rounding to the hour can hide important differences, especially when analyzing meeting schedules or activity patterns. Adding a “Minute” option or simply allowing the raw datetime value would make the Custom Report Builder much more useful without requiring extra properties or workflows.

Hi! I Wanted to close the loop on my original post about the Date part limitation in the Custom Report Builder. I found a way to get exact meeting times to show up using a formula field, sharing here in case it helps others while HubSpot considers the native fix.

Important caveat on access: Formula fields in the Custom Report Builder aren’t available on every subscription and what I believe is it is available under Professional or Enterprise. If you’re not sure what your portal has access to, check with your HubSpot admin or CSM before spending time on this, since availability can vary by portal and product bundle.

Step-by-step: building the formula field

  1. In the Custom Report Builder, scroll to the bottom of the left-hand fields panel and select the option to add a formula field.
  2. Reference the datetime property you want to convert. In my case, the meeting start time.
  3. I used the formula below to pull the hour and minute apart from the raw timestamp and reassemble them into a 12-hour clock format with AM/PM.
  4. Save the field and add it to your report like any other field.

The formula:
CONCAT(
CONCAT(
TO_TEXT(IF(DATEPART(“HOUR”, [MEETING_EVENT.hs_meeting_start_time]) = 0, 12, IF(DATEPART(“HOUR”, [MEETING_EVENT.hs_meeting_start_time]) > 12, DATEPART(“HOUR”, [MEETING_EVENT.hs_meeting_start_time]) - 12, DATEPART(“HOUR”, [MEETING_EVENT.hs_meeting_start_time])))),
CONCAT(
“:”,
IF(DATEPART(“MINUTE”, [MEETING_EVENT.hs_meeting_start_time]) < 10, CONCAT(“0”, TO_TEXT(DATEPART(“MINUTE”, [MEETING_EVENT.hs_meeting_start_time]))), TO_TEXT(DATEPART(“MINUTE”, [MEETING_EVENT.hs_meeting_start_time])))
)
),
CONCAT(" ", IF(DATEPART(“HOUR”, [MEETING_EVENT.hs_meeting_start_time]) < 12, “AM”, “PM”))
)

What it’s doing, in plain terms:
Think of the raw timestamp as a locked box. It holds the exact time, but the report builder only lets you look at it in hour-sized chunks. This formula picks the lock and pulls out the two pieces you actually want, the hour and the minute, then puts them back together in a format people read naturally, like “11:30 AM” instead of “11” and “30” sitting in separate places.

Breaking it into three moves:

  • DATEPART(“HOUR”, …) and DATEPART(“MINUTE”, …) pull the hour and minute out of the timestamp as separate numbers.
  • The nested IF statements convert the 24 hour value into a 12 hour clock (0 becomes 12, and anything over 12 gets 12 subtracted), and pad single digit minutes with a leading zero (“5” becomes “05”).
  • CONCAT stitches the hour, a colon, the minute, and the AM/PM label back into one text string.

Where this still falls short
This gets you a readable time, but it’s a workaround around a workaround. It requires access most portals don’t have, and it needs to be rebuilt any time the underlying date or time property changes format or timezone handling. It’s not a substitute for a native “Minute” or exact timestamp option in the Date part selector, which is still the fix that would be really helpful.

Sharing this in case it can assist in the interim.