Most direct-pay medical practices don’t need a full CRM. They need a way to see which leads came in, who’s been called, and which ones are about to go cold. The off-the-shelf options either cost more than they save or take longer to learn than the practice can afford.
This guide walks through how to build a focused patient lead CRM in Notion that a small clinical or sales team can actually use on day one. It’s based on a real build for a US concierge medical practice, condensed into a structure you can replicate.
TL;DR
- Three connected databases — Leads, Call Log, Team Directory — handle 90% of what most practices need.
- A 5-stage status pipeline plus filtered views replaces “check this list, then that list.”
- A one-click button on every lead removes the main reason call logging fails: friction.
- Hidden formula columns power conversion metrics without cluttering the sales team’s view.
- Build the lead schema to accept future web-form entries from day one, so adding a website form later is a drop-in.
Why Notion Works for a Lead CRM
Notion is not a CRM. That’s actually the point.
A dedicated CRM ships with assumptions baked in — opportunity stages, deal sizes, forecast columns, contact hierarchies. For a practice that sells a single service to a single patient at a time, most of that is friction. The team has to learn fields they don’t need, ignore tabs they don’t use, and turn off automations that don’t apply.
Notion gives you the structure to model exactly what your team does, with nothing extra. You build the pipeline you actually run, not the one a SaaS vendor designed for a generic sales org.
The trade-off: you have to design it. That’s what this guide covers.
The Three Databases
Every patient lead CRM I’ve built in Notion comes back to the same three tables. The names change, the fields shift, but the shape holds.
1. Leads (the central record)
This is the heart of the system. Each row is one prospective patient.
Minimum fields:
- Patient name (title)
- Phone, email, address
- Lead source (how they found you — referral, web form, ad, etc.)
- Created date (auto-populated)
- Status (the pipeline stage)
- Assigned rep (relation to Team Directory)
- Notes (free text for context)
The status field is where the workflow lives. A 5-stage pipeline covers most cases:
- New Lead — just came in, hasn’t been contacted
- Follow-up — contacted, needs another touch
- Converted — became a patient
- Failed — actively declined or went silent after multiple attempts
- Invalid — wrong number, spam, duplicate
Keep it at five. Every additional stage you add is a decision the team has to make every time they update a lead.
2. Call Log
One row per touchpoint — every call placed, every voicemail left, every email sent (if you want to track those too).
Fields:
- Lead (relation to Leads)
- Logged by (relation to Team Directory — defaults to current user)
- Date/time (auto-populated)
- Interaction type (Spoke to patient / Left voicemail / Sent email)
- Outcome (Callback requested / Converted / No answer / Wrong number)
- Notes
The Call Log is what makes the rest of the system work. It feeds the lead profile pages (so you can see every interaction on a single patient at a glance) and the per-rep performance metrics.
3. Team Directory
One row per salesperson or staff member who handles leads.
Fields:
- Name (title)
- Role
- Active (checkbox — so departed staff don’t break historical reports)
Everything else — total calls, conversions, conversion rate — is rollups and formulas pulling from Leads and Call Log.
Designing Out the Friction
The single biggest reason CRMs fail in small teams isn’t the software. It’s that logging activity feels like extra work. If logging a call takes 30 seconds and the rep makes 40 calls a day, that’s 20 minutes a day they’re spending on data entry. They will stop.
The fix is to make logging take fewer than 10 seconds.
The one-click “New Call” button
On every lead’s profile page, add a Notion button that:
- Creates a new row in the Call Log
- Pre-fills the Lead relation with the current lead
- Pre-fills Logged by with the current user
- Pre-fills Date/time with the current timestamp
- Opens the new row so the rep can fill in Interaction type and Outcome
The rep clicks one button, picks two dropdown values, and closes the page. That’s it.
If you can’t get logging under 10 seconds, the rest of the system doesn’t matter. The team will work around it, and within a month the data will be unreliable.
Filtered views, not separate lists
A common mistake is creating a separate database or page for each pipeline stage. Don’t. Use one Leads database with filtered views.
- Inbox —
Status = New Lead - Follow-Up Queue —
Status = Follow-up - Converted —
Status = Converted - Failed —
Status = Failed - Invalid —
Status = Invalid
When a rep changes a lead’s status, the lead automatically appears in the right view. The team’s daily workflow becomes: open the Inbox, work the list, log calls, change statuses, done.
The Metrics Layer (and Why It Should Be Invisible)
Leadership wants to see numbers. The sales team should not have to look at them every time they open a lead.
Use hidden helper columns — formula properties that calculate intermediate values. Label them A1, A2, A3 or hide them in the view configuration. The actual rep-facing views don’t show these columns at all. The metrics dashboard pulls from them.
Useful metrics for a small practice:
- Conversion rate — converted leads ÷ total leads (excluding invalid)
- Calls per lead — total call log entries ÷ total leads
- Monthly call volume — sum of calls in the current month
- Per-rep leaderboard — converted count and conversion rate by rep, sorted descending
The leaderboard is worth highlighting. Reps don’t need to be told who’s converting more — they figure it out fast — but a visible chart adds healthy pressure without any management overhead.
Building for the Web Form You’ll Add Later
Half the practices I’ve built CRMs for ask the same thing two months in: “Can we have a form on the website that creates a lead automatically?”
If you didn’t plan for this on day one, you’re looking at a schema rebuild. If you did, it’s a drop-in.
The trick is to design the Leads database so any of these can write into it without structural changes:
- Notion’s native forms (zero-config)
- A website form posting via API
- A third-party form tool (Tally, Typeform) connected via Make or Zapier
Which means:
- Every required field has either a default value or accepts being blank
- The status field defaults to “New Lead”
- The created date is auto-populated
- No required relations that the form can’t fill in
When the practice is ready to add a public form, you connect it to the existing Leads database. The form fills in name, phone, email, source — and the rest of the system handles the lead exactly like one logged manually.
Permissions and Day-One Use
Keep the permissions simple:
- Sales team: edit access to Leads and Call Log
- Leadership: edit access to everything
- Staff who shouldn’t see leads (front desk, billing): no access
Notion’s per-page permissions handle this cleanly. Put the CRM in its own teamspace or under a top-level page that only the relevant team has access to.
For day-one use, give the team three things:
- A Loom walkthrough — 8–12 minutes, showing how to log a call, change a status, and read the dashboard
- A one-page cheat sheet — pinned in the workspace, listing the daily workflow
- One person to ask — usually the office manager — for the first two weeks
Most questions surface in week two. Plan for a 30-minute follow-up after the first 10 working days to clean up edge cases.
What This Replaces
A system like this replaces:
- Sticky notes
- A shared spreadsheet that nobody trusts
- A SaaS CRM the team doesn’t open
- Slack threads that disappear in two weeks
It doesn’t replace:
- A real EHR (electronic health record)
- A scheduling system if you have one
- Billing or insurance tooling
The boundary matters. A Notion CRM is for the pre-patient stage — the period between “someone’s interested” and “they’re booked.” Once they’re a patient, your clinical and billing systems take over.
When Notion Stops Being the Right Tool
A Notion lead CRM works well up to roughly 500 active leads and 5–10 active reps. Beyond that, you start running into:
- View load times getting slow on large databases
- Reporting needs that exceed Notion’s chart capabilities
- Integration requirements (calling systems, SMS automation, full marketing automation)
If you hit any of those, it’s time to graduate to a dedicated CRM. The good news: the data is structured. Exporting to CSV and importing into HubSpot, Pipedrive, or a healthcare-specific CRM is straightforward.
Most practices I’ve built for never hit those limits.
Key Takeaways
- Three databases — Leads, Call Log, Team Directory — cover most patient-lead CRM needs.
- A 5-stage status pipeline with filtered views replaces multiple lists.
- Logging a call must take under 10 seconds, or the data won’t survive.
- Hide the metrics layer behind helper columns; sales reps shouldn’t see formula clutter.
- Design the schema for future web-form entries on day one.
- Notion fits this job up to about 500 active leads. Beyond that, plan a migration.
Need a CRM Built for Your Practice?
If your team is outgrowing spreadsheets but isn’t ready for the cost and complexity of enterprise CRM software, I build custom Notion workspaces for small clinical and service teams.

