Endearist
DE EN Get Endearist
Personal CRM

How to build a personal CRM in Notion — and where it breaks

A working Notion personal CRM: the exact database properties, views, and templates to set up — plus the three places the system breaks down in real use.

By Endearist Team 8 min read

Notion makes a genuinely workable personal CRM: two linked databases, one rollup, one formula, about an afternoon of setup. This guide builds the whole thing — exact properties, views, templates — and then names the three places it breaks, because knowing the failure points in advance is what keeps a DIY system alive.

What you’re building, in one picture

The design has two tables. People holds one record per relationship: who they are, what group they belong to, how often you want contact. Interactions holds one record per touchpoint: a call, a dinner, a long voice message — dated, with two lines about what you talked about. A relation links each interaction to a person; a rollup pulls the latest interaction date back onto the person; a formula compares that date against the rhythm you chose. The result: a list of everyone you’re losing, updated automatically as you log.

That separation is the part most homemade setups skip, and it’s why they decay into glorified contact lists. With a single database, history lives as prose inside each person’s page — unqueryable, unsortable, invisible. With the log split out, “when did we last talk?” becomes a property you can filter on, and the system can answer the only question that matters daily: who’s overdue?

The build, step by step

Total time: 60–90 minutes for the structure, plus whatever your first import of people takes.

  1. Create the People database

    A full-page database called People. Add these properties: Group (select: friend, family, mentor, professional, community), Cadence (number — desired days between contacts: 30 for close friends, 90 for mentors, 180 for the outer circle), Birthday (date), and Context (text — how you met, partner’s name, what’s going on in their life). Leave last-contact tracking alone for now; it arrives in step 3. Add 10–20 real people before building further — structure decisions made against empty databases are usually wrong.

  2. Create the Interactions database and relate it

    A second database, Interactions, with just three properties: Date (date), Type (select: call, met up, message, letter), and a title you’ll use for the gist (“caught up about the move”). Add a Relation property pointing to People. From now on, every meaningful touchpoint is one fast row here — the body of the page stays empty unless the conversation deserves real notes.

  3. Add the rollup and the overdue formula

    On People, add a Rollup property called Last contact: relation = Interactions, property = Date, calculate = Latest date. Then a Formula property called Overdue by: dateBetween(now(), prop("Last contact"), "days") - prop("Cadence"). Positive numbers mean drift — a person 12 days past a 30-day cadence shows 12. This pair of properties is the engine of the entire system; everything else is presentation.

  4. Build the three views that you'll actually use

    First, Overdue — a table view of People filtered to Overdue by > 0, sorted descending. This is your home view; the person at the top has waited longest. Second, By group — a board grouped by the Group select, for scanning whole circles (“when did I last see anyone from university?”). Third, Birthdays — a calendar view on the Birthday property. Skip gallery views with photos until the system has survived a month; they’re motivating but they’re decoration.

  5. Add templates so logging is cheap

    In Interactions, create a database template with Date pre-filled to today, so a new entry only needs the person link and five words of title. In People, a template with prompted headings — How we met / What matters to them right now / Things I promised — so new records start consistent. On mobile, put a new-interaction shortcut where you’ll find it. Capture friction is the enemy: David Allen (2001) built a whole methodology on the observation that a system you can’t feed in seconds stops being trusted.

  6. Install the weekly review

    A recurring 15-minute calendar slot, same time each week. The routine: open Overdue, pick the top two or three people, send each a real message (reference your Context notes — that’s what they’re for), log the interactions, and update anything you learned. This step is not optional equipment; it is the product. The databases only store reality — the review is where the relationships actually get maintained.

Three upgrades — but only after a month

Resist these on day one; each adds value only to a system that’s already being used. After four surviving weekly reviews, in this order:

An Archive checkbox. Add a checkbox property to People and a where Archive is unchecked filter to every view. Relationships end, people move on, and some cadences turn out to be aspiration rather than intention. Without an archive path, the Overdue view slowly fills with people you’re not actually going to contact — and a triage list you’ve learned to half-ignore is worthless. Archiving isn’t unkind; it’s the system staying honest about who’s in it.

An Inner-circle flag. A second checkbox (or a star in the Group select) for the eight to twelve people whose drift would genuinely hurt. Give them their own view above Overdue. The flat Overdue list sorts by days, which means a 200-day-overdue acquaintance outranks a 35-day-overdue close friend — numerically correct, humanly backwards. The flag fixes the priority inversion with one property.

A dashboard page. Once both exist, build a single page with three linked database views stacked: Inner circle first, Overdue second, a this-month Birthdays calendar third, plus the new-interaction button at top. Set it as a favorite. The dashboard’s real function is reducing the weekly review to opening one page — every removed click measurably increases the odds the review happens at all.

What you should not add: lead-score-style ratings, “value” fields, or automation that messages people for you. The first two import the sales-CRM worldview this system exists to avoid, and the third defeats the purpose — the entire output of a personal CRM is that you show up, informed.

Where it breaks — honestly

Built as above, the system works. Here is where it strains, in ascending order of seriousness.

Mobile capture. Logging an interaction from your phone — open app, find database, new entry, link person, type — takes long enough that you’ll skip it right when it matters most: walking out of a coffee, hanging up a call. The shortcuts in step 5 soften this; nothing removes it. Expect to lose a percentage of touchpoints and reconstruct them at the weekly review.

Reminders. This is the structural gap. Notion reminders attach to fixed dates; a personal CRM’s core promise is a rolling nudge — “it’s been 30 days since the last logged contact with Jonas”. No formula produces a push notification, and API-based automations are their own hobby project. Your Overdue view is perfect and silent. If you don’t open it, nothing happens — which is precisely the failure mode you built the system to prevent.

Maintenance debt. Every DIY system charges interest. Cadences set optimistically in week one prove wrong by month two; archived relationships linger and clog the Overdue view; the interaction log develops gaps that make “Last contact” quietly false. Unmaintained, the data goes stale, stale data breeds distrust, and distrust ends with you not opening the page — the standard lifecycle of CRM hygiene failures, compressed. The quarterly pruning hour in the build plan is the interest payment. It is real and it never goes away.

Should you stay in Notion?

For a good number of readers: yes. If you’re under ~100 active contacts, already live in Notion daily, and the weekly review genuinely sticks, the setup above does the job and costs nothing but the time you’ve now budgeted. The reader this guide was written for — the one who stays in Notion — has everything needed.

Move on when the known breakpoints start costing you real relationships rather than theoretical ones: follow-ups missed because no reminder found you, touchpoints lost to capture friction, a review that keeps not happening. That’s a build-vs-buy decision with trade-offs we’ve mapped honestly in our Notion comparison page — including the cases where Notion stays the right answer — and in the broader category overview. Full disclosure applies: we build Endearist, a dedicated personal CRM, so we’re a motivated party in that conversation. The Notion setup above doesn’t care either way — it works exactly as well whether or not you ever look at a paid tool. If Notion’s flexibility is what you love and reminders are the only gap, our Google Sheets build won’t fix that either — but it’s the lighter system if the two-database structure felt like more than you need.

FAQ

Can Notion really work as a personal CRM?

Yes — genuinely, not as a consolation prize. Two linked databases give you **structured people records**, full interaction history, and filtered views a contacts app can't match. The honest caveats are operational, not structural: Notion won't **proactively remind** you on a per-person rhythm, mobile capture takes too many taps, and the system needs a weekly review to stay alive. Within those limits, it's a real personal CRM.

Should I use one database or two for a Notion CRM?

Two. A single People database with notes pasted into each page works for a month, then the **history blurs** — you can't see when you last talked without reading the whole page. A separate **Interactions database**, related to People, gives you a queryable log: a last-contact **rollup**, per-person timelines, and clean answers to "who haven't I seen since winter?" The second database is the difference between a list and a system.

Which properties does the People database need?

Seven cover it: **Name** (title), **Group** (select: friend, family, mentor, professional), **Cadence** (number — desired days between contacts), **Last contact** (rollup from Interactions, latest date), **Overdue by** (formula comparing today against last contact + cadence), **Birthday** (date), and **Context** (text — how you met, what matters now). Resist adding more until you've missed a field twice in real use.

How do I track the last contact date automatically in Notion?

With a relation plus a rollup. Relate **Interactions → People**, then add a People rollup over the related interactions' **Date** property using **Latest date**. Every time you log an interaction, the person's last-contact value updates itself. Pair it with a formula like `dateBetween(now(), prop("Last contact"), "days") > prop("Cadence")` to flag who's drifted past their rhythm.

Can Notion remind me to reach out to people?

Not the way a CRM does, and this is the setup's biggest honest weakness. Notion reminders attach to **specific dates**, not to rolling per-person rhythms — there's no native "nudge me when 30 days pass since the last logged interaction". Workarounds exist (recurring weekly review tasks, third-party automations via the API), but the burden of noticing stays with **you**. The Overdue view only works if you open it.

Is the free Notion plan enough for a personal CRM?

Yes, comfortably. A two-database setup with a few hundred records sits nowhere near the free plan's limits for personal use, and relations, rollups, formulas, and database templates are all included. The cost of a Notion CRM is **zero euros and real hours**: a couple to build it, and the recurring weekly minutes that keep it accurate. Time, not money, is the line item.

How many contacts can a Notion personal CRM handle?

Technically thousands; practically the strain shows around **100 active people**. The constraint isn't performance — it's interaction cost. Every update means opening the app, finding the record, logging the entry. At 40 contacts that's minutes a week; at 150 maintained relationships the manual logging becomes a chore the weekly review can't absorb. Volume is the signal to consider dedicated tooling.

How is a Notion CRM different from a spreadsheet CRM?

Notion wins on **history and richness**: an interaction log, page-sized notes per person, galleries with faces, linked views. A spreadsheet wins on **speed and formulas**: faster sorting, instant conditional formatting, lighter mobile editing, and a days-since column that computes itself. If you mainly want an overdue list, the sheet is less work; if you want a memory of each relationship, Notion earns its overhead.

What's the fastest way to log an interaction on my phone?

Accept that it's the weak point and shorten the path: put a **database button** or a New-entry shortcut for Interactions on your home screen, and use a database **template** so the date pre-fills and only the person link needs choosing. Even optimized, capture takes 15–20 seconds of taps — which is why notes after a phone call so often don't happen. Log immediately or accept the loss rate.

How much maintenance does a Notion personal CRM need?

Plan for a **15-minute weekly review** — open the Overdue view, send one or two messages, log what happened — plus a quarterly hour of pruning: archiving drifted contacts, fixing cadences that proved unrealistic. Skipping the weekly slot is how these systems actually die: not in a crash but in a quiet slide into staleness, until the data is too old to trust and opening the page feels like admin.

Should I just buy a personal CRM instead of building one in Notion?

Build first if you're curious — the Notion version costs an afternoon and teaches you your real requirements. Buy when the known failure points start costing you: you need **reminders that find you**, capture in seconds from a phone, or you're past ~100 active contacts. And if you build it and the weekly review never sticks, that's data too: a paid app automates reminders, but it can't automate caring.