Your sales rep took thorough notes during the call. They know the prospect's budget, their timeline, the name of the competitor they are evaluating, and the exact objection that came up at the end. All of it is in a Notion page.

Open the HubSpot contact record for that same prospect and you will find nothing. No notes. No activity. An empty timeline that makes it look like the relationship never happened.

This is not a HubSpot bug and it is not a Notion bug. It is a gap between two tools that were never designed to talk to each other, and it affects every sales team that uses Notion for note-taking and HubSpot as their CRM. Here is why it happens and what actually fixes it. For the full picture of every way to connect the two tools, not just this troubleshooting angle, see the complete Notion HubSpot integration guide.

In this article

1.

2.

3.

4.

5.

6.

Why Notion Notes Do Not Appear in HubSpot

HubSpot and Notion do not have a native two-way integration. There is no built-in feature in either tool that pushes note content from Notion into HubSpot's activity timeline.

HubSpot does list Notion in its App Marketplace, but the integration it offers is a read-only embed. It lets you view a Notion page inside a HubSpot record as an iframe. It does not parse the content of that page or log anything as an activity on the timeline. The core gap remains completely open.

Because there is no native sync, any note a rep writes in Notion stays in Notion by default. The only way it reaches HubSpot is if someone copies it manually, which most reps skip or do only partially, or if a third-party automation handles the transfer.

Diagnose where your notes are getting stuck

Before reaching for a fix, confirm which link in the chain is broken. Walk these in order.

  1. 1

    Confirm the note exists in Notion

    Open the Notion page and check that the content is actually there and on the right account. If the note was never written, no sync can rescue it.

  2. 2

    Rule out the embed assumption

    Check whether your team installed the HubSpot Notion Marketplace app and assumed it syncs. It does not. It only embeds. This is the single most common false start.

  3. 3

    Check whether anyone copied the note over

    If there is no automation in place, the note only reaches HubSpot when a human copies it. Ask whether that step is actually happening, or whether it was skipped after a busy call.

  4. 4

    Inspect any Zapier or Make workflow output

    If an automation is running, open the most recent HubSpot timeline entry it produced. A JSON blob, an unformatted block of text, or a silent error all point to the block-tree problem covered below.

Any note a rep writes in Notion stays in Notion by default. Reaching HubSpot is the part nobody designed.

Why Manual Copy-Pasting Breaks Down

The obvious workaround is to copy notes from Notion and paste them into HubSpot after each call. In practice, this almost never works as a sustainable habit.

The copy-paste step happens at the worst possible time: right after a call, when the rep has follow-up emails to send, another meeting starting, or simply needs a break. It is easy to skip once. Then twice. Then entirely. Within a few weeks, the CRM is weeks behind and catching up feels like too much work to bother with.

Even when reps do paste their notes, the content degrades. Notion pages often include structured sections, bullet lists, and formatted research. What makes it into HubSpot is usually a stripped-down summary written in a hurry, missing the context that made the original note valuable. The CRM technically has a note, but the note does not actually reflect what the rep knows.

Why Zapier and Make Do Not Fix This Either

Teams who recognize the gap often try to automate it with Zapier or Make. The logic seems sound: trigger on a new Notion database entry, take the content, push it to HubSpot as a note. In practice, the technical reality of Notion's API makes this much harder than it looks.

Notion stores page content as a tree of block objects. Each paragraph, heading, bullet point, and callout is a separate block, and the blocks can be nested inside each other. When a Zapier action pulls a Notion page, it receives that block data in raw form. There is no built-in step that reassembles those blocks into readable prose before sending to HubSpot.

What lands on the HubSpot timeline is typically one of three things:

  • An unreadable JSON blob

    The raw block tree arrives verbatim, brackets and all, with none of it rendered as prose.

  • Stripped plain text

    The content survives but loses every heading, bullet, and checkbox, collapsing into one flat paragraph.

  • Nothing at all

    The workflow errors out on a block type it was not built to handle and silently produces no note.

Getting clean output requires writing custom code steps inside the automation to traverse and flatten the block tree, and that code needs to be maintained whenever Notion updates its API or when a rep uses a block type the automation was not built to handle.

The result is hours spent building a workflow that mostly works, followed by more hours fixing edge cases, followed by eventual abandonment. Teams end up back where they started: copying and pasting manually, less often than before.

What the workarounds offer

  • Copy-paste needs no setup at all
  • Zapier feels familiar to ops teams
  • Both can move a note on a slow week
  • No new vendor to evaluate up front

Where they break

  • Copy-paste collapses within weeks under real call volume
  • Zapier mangles Notion's nested block tree
  • Custom code becomes permanent maintenance
  • Formatting loss erodes trust until the team stops syncing

Stop letting your Notion notes die in a silo

NoteLinker syncs your sales notes from Notion straight to HubSpot. No copy-pasting, no missed context, no CRM admin time.

Get Started

What a Purpose-Built Sync Actually Looks Like

The reason generic automation struggles with this is that syncing rich Notion content into HubSpot timelines requires a translation layer built specifically for that job. A general-purpose trigger-action tool does not have that layer and cannot reliably build one without significant custom work.

NoteLinker is built around this exact problem. You connect your Notion workspace to HubSpot once and map your note database to the relevant contacts or deals. From that point on, syncing a note to HubSpot is a single click from inside Notion. NoteLinker handles the block traversal, the formatting, and the correct association to the right contact or deal timeline. The rep never leaves Notion. The CRM gets the full note, not a mangled version of it.

What a working sync handles for you

  • Connect Notion and HubSpot once through OAuth.
  • Traverse and flatten the Notion block tree into readable rich text.
  • Match the note to the correct contact or deal automatically.
  • Sync with one click from inside Notion, no context switch.

For a complete walkthrough of how to set this up, see our guide on how to sync Notion notes to HubSpot CRM automatically. If you have already tried Zapier and hit the limitations described above, the NoteLinker vs. Zapier comparison goes into more detail on exactly where general automation breaks down and what a dedicated sync handles differently.

The gap between Notion and HubSpot is real, but it is solvable. The key is using a tool that was built to close it, not one that was built for something else and bent to fit. If you are troubleshooting a different problem where notes exist in HubSpot but are not appearing in the timeline, see sales notes not showing up in HubSpot for a checklist of common causes.

Frequently Asked Questions