Good question, and you’ve already spotted the core problem most people miss: `hs_meeting_body` is not a reliable “did the rep add notes” signal because the calendar/email sync pours the Outlook body into it.
To take your three questions in order:
1. No, there is no native property on the meeting activity object that flags “a human manually typed a note.” HubSpot stores the description in `hs_meeting_body` regardless of whether it came from the sync or from a rep, so there’s nothing built-in to filter on.
2. The cleanest and most defensible approach is a workflow-stamped custom property rather than relying on reps to tick a box manually (a manual yes/no almost always gets gamed or forgotten, which kills the leaderboard’s credibility). Two options that actually work:
- Workflow approach: create a custom checkbox/boolean property on the meeting object, e.g. “Rep notes added (Y/N)”. Use a meeting-based workflow that enrolls on meeting create/update, then check whether `hs_meeting_body` contains the rep’s own content. Since the sync content is fairly predictable (it mirrors the calendar invite / email body), you can branch on patterns the sync produces vs. genuine notes. This is imperfect but gets you most of the way.
- More reliable approach: stop trying to detect notes inside the auto-populated field at all, and give reps a dedicated custom text property like “Meeting recap / notes” that the sync never touches. Then your metric becomes simply “is `meeting recap` not empty” - which is clean, unambiguous, and reportable. A short bit of process change (“log your recap in the Recap field, not the description”) usually beats any detection hack. You can even add a workflow to copy the recap into a boolean for easy counting.
3. Yes. Once you have either a boolean property or a dedicated recap property, you can report on it in custom reports using the Activities data source. Build the report on Activities, filter Activity type = Meeting, and count meetings where your boolean = Yes (or recap is known). For the “X of Y this week” leaderboard, set the date range on the meeting timestamp, group/break down by meeting owner, and use a count of meetings as the value - then add a second metric (or a calculated/derived field) for the subset with notes. A ratio between the two gives you the percentage per rep.
One caveat to test before you roll it out: confirm exactly what your sync writes into `hs_meeting_body` on a few sample meetings (invite body, attendee list, email thread, etc.), because the detection logic in the workflow option is only as good as your assumptions about that auto-populated text. If it varies a lot, the dedicated recap property is the safer bet long-term.
Max Buining
HubSpot CRM-specialist
Pipelines · Forecasting · Dashboards
[
LinkedIn →
](https://www.linkedin.com/in/max-buining-2425b7315/)