Plenty of small teams run deals in HubSpot and everything around the deal in Notion: the account plan, the discovery write-up, the proposal draft, the mutual action plan, the client brief an agency works from. The friction is the gap between them. Someone creates a deal in HubSpot, and then someone else has to remember to create its Notion page, name it the same, and keep its stage in step.
This guide automates that gap. Every new HubSpot deal gets a Notion page in your deals database, the page's stage follows the deal, and nothing duplicates when names change. The whole thing rests on one Notion property, so set that up first.
In this article
1.
2.
3.
4.
5.
6.
7.
8.
9.
1. Why a Notion Page for Every Deal
HubSpot is good at the structured half of a deal: amount, stage, owner, close date, associated contacts. It is poor at the unstructured half, the writing that explains why the deal exists and what has to happen next. HubSpot notes are short, flat and buried in the activity timeline.
Notion is the opposite. A deal page can hold a stakeholder map, a discovery summary with headings and checklists, a mutual action plan and the draft proposal, all in one place. For founder-led sales teams and agencies, that page is usually where the deal is actually worked.
2. Set Up the Notion Deals Database First
Before building any automation, create a Notion database for deals with these properties. The names matter for the one marked as required; the rest are suggestions.
| Property | Type | What it holds |
|---|---|---|
| Deal Name | Title | The HubSpot deal name |
| HubSpot Deal ID | Text | The deal's record ID. Required. |
| Stage | Select | The HubSpot deal stage |
| Amount | Number | The deal amount |
| Close Date | Date | The expected close date |
| Owner | Text or Person | The deal owner |
HubSpot Deal ID is the property everything else depends on. Deal names get edited, abbreviated and duplicated ("Acme renewal" exists every year). The record ID never changes and is unique, so it is the only reliable way to find the right Notion page later. Use a Text property rather than Number so long IDs are stored exactly as HubSpot writes them.
If you want every new page to start with the same structure, such as Discovery, Stakeholders, Next Steps, add those headings as a Notion database template for people creating pages by hand, and use a content step in the Zap (covered below) for pages the automation creates.
3. Build the Zap: New HubSpot Deal to New Notion Page
HubSpot has no built-in action that writes to Notion, so the standard route is Zapier. Zapier lists HubSpot as a premium app, which means you need a paid plan; the Free plan cannot use it.
- 1
Trigger: HubSpot, New Deal
Create a Zap and choose HubSpot as the trigger app with the New Deal event. Connect your HubSpot account and pull in a test deal so you have real fields to map.
- 2
Action: Notion, Create Data Source Item
Choose Notion with the Create Data Source Item event. Notion now calls the tables inside a database data sources, so this is the action that adds a row, and each row is a page. Connect Notion and pick your deals database.
- 3
Map the fields
Map the deal name to Deal Name, the deal's ID field to HubSpot Deal ID, and the stage, amount, close date and owner to their properties. Check the test output to confirm the ID landed as a plain number string with no extra characters.
- 4
Optional: add starter content
Add a Notion Add Content to Page step after the create step, pointed at the page the previous step returned, to drop in your standard headings. Zapier counts this as a second task per deal, so skip it if a blank page is fine.
- 5
Test and turn it on
Create a test deal in HubSpot, wait for the next poll, and confirm one page appears with the right ID. Then turn the Zap on.
4. Keep the Page Current When the Deal Stage Changes
A page created once goes stale the first time the deal moves. Build a second Zap to keep Stage, and anything else you care about, in step.
- 1
Trigger: HubSpot, Updated Deal Stage
This fires when a deal moves to a new stage. If you also want amount or close date changes, use Deal Property Change instead and choose the property to watch.
- 2
Find the page: Notion, Find or Create Data Source Item
Search the deals database where HubSpot Deal ID equals the deal's ID from the trigger. Find or Create means a deal that somehow has no page yet gets one, instead of the Zap failing.
- 3
Update: Notion, Update Data Source Item
Point it at the item the previous step returned and write the new stage. Map amount and close date too if they might have changed.
Never look a page up by deal name. Names change, and the day two deals share one, your automation starts editing the wrong page.
Notion edits never flow back to HubSpot in this setup, and that is deliberate. HubSpot owns the deal fields and Notion owns the writing. Trying to sync stage both ways means two automations triggering each other, which is how teams end up with a loop that rewrites the same field every few minutes.
5. The Same Recipe for Contacts and Form Submissions
The pattern carries over to the other HubSpot-to-Notion jobs teams search for most often:
Add new HubSpot contacts to a Notion database
Trigger on New Contact and create an item in a Notion clients or contacts database. Store the email address in a Notion Email property and look contacts up by it in any follow-up Zap, since email is the stable key for a person the way the ID is for a deal.
Log HubSpot form submissions in Notion
Trigger on New Form Submission and create one item per submission, with the submitter's email and the form fields as properties. Useful for agencies that triage inbound briefs in Notion.
Update the page for any deal property
Swap Updated Deal Stage for Deal Property Change to track amount, owner or close date changes with the same find-then-update steps.
Make can run the same recipe if you prefer its scenario builder, with its HubSpot CRM app watching deals and its Notion app creating database items. The trade-offs between the two, especially how each one bills for checking, are covered in Make vs Zapier.
6. What It Costs to Run
Zapier never bills the trigger, so the arithmetic is short:
A small team creating 40 deals a month that each move through five stages uses 40 tasks for creation and 400 for updates, about 440 in total, which fits the entry Professional tier. Add the optional starter-content step and it is 480. Double the deal volume and you move up a task tier, so check the numbers against your pipeline before you commit.
7. Close the Loop: See the Notion Page on the HubSpot Deal
Everything above moves the deal into Notion. It does nothing for the person working in HubSpot. When a rep or account lead opens the deal, the discovery notes, the plan and the proposal are still a tab switch and a search away, and in practice that means they do not get read.
NoteLinker fixes the other direction. It adds a card to HubSpot deal and contact records that shows the matching rows from your Notion databases, with their formatting intact and an Open in Notion link. On a deal, it matches on a Notion property named HubSpot Deal ID, which is exactly the property this recipe writes. So every page your Zap creates appears on its deal automatically, with no mapping and no second automation. Contacts match on the Email property from section 5 the same way.
See every deal's Notion page inside HubSpot
NoteLinker shows your Notion deal pages on the matching HubSpot deal, matched by HubSpot Deal ID. Two-minute setup from the HubSpot marketplace, flat $19 a month.
If a page should not appear in HubSpot, such as an internal pricing debate, tick a Hide from HubSpot checkbox on that row and the card skips it. If you would rather not run a Zap at all, a Deal Name property that matches the HubSpot deal name also works, though the ID is more reliable for the reasons above. For how this compares with copying notes into HubSpot's own timeline, see HubSpot deal notes and how to view Notion inside a HubSpot record.
8. Troubleshooting
Two pages for one deal
Something other than the Zap is creating pages, or an older Zap still searches by name. Search the database for the duplicate HubSpot Deal ID, merge the content, delete the extra, and switch every lookup to the ID.
Deals created before the Zap have no page
The trigger only sees new deals. Export existing deals from HubSpot with their Record ID column, import the CSV into the Notion database, and map Record ID to HubSpot Deal ID.
Stage shows an internal value
Add a Formatter lookup table step, as in section 3. It is free in task terms.
Pages appear a few minutes late
That is the polling interval: two minutes on Zapier Professional, one minute on Team. It is not an error.
Frequently Asked Questions
Get HubSpot and Notion tips delivered straight to your inbox
We'll email you 1-3 times per week, and never share your information.



