You do not need Salesforce. If you’re a freelancer, consultant, or small agency, you need three things: a list of people, a record of your conversations, and a view that tells you who to follow up with today. Notion handles all three — and you can build it yourself in under an hour, without writing a line of code. This is the exact walkthrough, honest about the fiddly parts, with the shortcut at the end if you’d rather not build it at all.
What a small-business CRM actually needs
Before opening Notion, be clear about the job. A working CRM for a small operation does four things:
- Stores contacts with enough context to remember who they are in six months.
- Tracks deals (or projects, or leads) through a handful of stages.
- Logs interactions so “did I ever reply to her?” has an answer.
- Surfaces follow-ups so nothing goes quiet by accident — the silent killer of small pipelines.
Everything else — lead scoring, automation sequences, forecasting weighted by probability — is enterprise theater at this scale. Skip it.
Step 1: Create the Contacts database (10 minutes)
In Notion, type /database and choose “Database – Full page”. Name it Contacts. Add these properties (click the + at the end of the header row):
- Name — the default title property. One person per row.
- Company — text (or a relation later, if you work with multi-contact accounts).
- Email — email property.
- Phone — phone property.
- Type — select: Lead, Client, Past client, Partner.
- Source — select: Referral, Website, LinkedIn, Event, Other. In three months, this one property tells you where your clients actually come from.
- Last contacted — date. You’ll update it manually; that’s fine.
- Notes — text, for the human details: “two kids, hates Zoom, decides in Q4.”
Resist adding more. Every property you add is a field you have to maintain, and half-empty databases are the reason most self-built CRMs get abandoned.
Step 2: Create the Deals database (10 minutes)
Create a second full-page database named Deals. Properties:
- Deal name — title, e.g. “Website redesign — Meridian Consulting”.
- Stage — select: New, Contacted, Proposal sent, Negotiation, Won, Lost. Six stages, maximum. If you can’t say what action moves a deal from one stage to the next, merge them.
- Value — number, formatted as your currency.
- Expected close — date.
- Next step — text. The single most useful property in the whole system: every open deal must have one.
- Next step due — date. This powers your follow-up view later.
Step 3: Relate the two databases (5 minutes)
This is the step that turns two lists into a CRM. In Deals, add a property of type Relation, point it at Contacts, and switch on “Show on Contacts”. Name it “Contact” on the Deals side and “Deals” on the Contacts side.
Now every deal links to a person, and every person’s page shows their deals. Open a contact and you see the full history; open a deal and you’re one click from the human behind it.
Optional but satisfying: on Contacts, add a Rollup property that looks at the Deals relation, targets the Value property, and calculates Sum. Each contact now shows their total pipeline value. A quick sanity check: create two test deals of 1,000 and 2,500 against one contact — the rollup should read 3,500. If it does, your wiring is correct.
Step 4: Build the views that do the work (15 minutes)
Databases store; views manage. Add these to Deals using the + next to the view tabs:
The Pipeline board
Add a Board view, grouped by Stage. Drag cards between columns as deals progress. Show Value and Next step due on the cards (via the view’s Properties menu), and hide the Won and Lost columns from daily sight — this board is for open work.
The Follow-up list
Add a Table view filtered to: Stage is not Won, Stage is not Lost, and Next step due is on or before today. Sort by Next step due, ascending. This view is the entire reason the system works: open it each morning and it tells you exactly who to write to. When it’s empty, you’re genuinely caught up.
The Won archive
Add a Table view filtered to Stage is Won, sorted by close date. Quiet motivation, and a clean record for invoicing.
On Contacts, one extra view earns its keep: a table filtered to Type is Client, with Last contacted visible, sorted oldest first. That’s your relationship-maintenance list — the clients drifting toward silence rise to the top.
Optional step: log your interactions (10 minutes)
If you want the “did I ever reply to her?” question answered properly, add a third database: Interactions. Keep it brutally simple:
- Summary — title, e.g. “Call — discussed scope and budget”.
- Date — date property.
- Type — select: Call, Email, Meeting, Message.
- Contact — relation to Contacts, with “Show on Contacts” switched on.
Now every contact’s page carries a chronological log of your conversations. The discipline required: after any meaningful exchange, add one row with one sentence. Not the transcript — the decision. “Agreed to send proposal by Friday” is worth more in six months than three paragraphs of notes you’ll never reread.
Fair warning: this is the piece most self-built CRMs drop first, because it demands a habit rather than a structure. If you’re not sure you’ll keep the log, skip it for now — a maintained two-database system beats an abandoned three-database one. You can always add it the first time a forgotten conversation costs you a deal.
Step 5: The weekly habit that keeps it alive (5 minutes, forever)
A CRM dies from neglect, not from bad structure. The maintenance is one small ritual: every Friday (or Monday), open the Pipeline board, and for each open deal ask, “what’s the next step, and when?” Update those two fields. Ten deals take about five minutes. Miss two weeks in a row and the system starts lying to you; keep the ritual and it compounds.
The honest assessment — and the shortcut
What you just built covers 90% of what a small operation needs, and you understand every part of it because you made it. The build takes 45–60 minutes if you follow the steps directly; budget a little more the first time you wire a relation or a rollup, because Notion’s menus for those are not obvious.
What it doesn’t include: interaction logging tied to each contact, a dashboard that pulls pipeline, follow-ups, and revenue into one page, templates for common deal types, and the visual polish that makes you actually enjoy opening it. Those take considerably longer than an hour — they’re the difference between a functional database and a system you trust.
If you’d rather start there, The Lightweight CRM is this exact architecture, pre-built and refined: contacts, deals, interactions, dashboard, and the follow-up logic already wired, tested, and styled. Duplicate it into your workspace, add your first contact, and you’re operational in ten minutes instead of an afternoon.
FAQ
Is Notion good enough to replace a real CRM like HubSpot or Pipedrive?
For a team of one to five people managing tens of deals rather than thousands — yes, comfortably. What Notion won’t do is automated email sequences, call logging, or native reporting dashboards. If your pipeline runs on volume and automation, use a dedicated CRM. If it runs on relationships and follow-through, Notion is lighter, cheaper, and lives where your other work already is.
Can I import my existing contacts from a spreadsheet?
Yes. Export your contacts as CSV, then in Notion use Merge with CSV from the database menu (⋯). Match your column headers to the property names before importing and the data lands cleanly. Do a 5-row test import first — matching mistakes are easier to fix at 5 rows than 500.
How is a Notion CRM shared with a small team?
Put the databases in a shared teamspace and every member sees the same pipeline in real time. Notion handles concurrent editing gracefully. One convention worth setting on day one: agree on who updates a deal after a client call — the person who had the call, same day.
If systems like this appeal to you, the rest of our Notion systems follow the same philosophy: minimal structure, honest workflows, nothing you won’t maintain.
