To build a simple Notion CRM with a form, create two databases: Contacts for the people you work with, and Enquiries for every form submission. Add a Form view to Enquiries, link each enquiry to a contact with a relation, and track deals on a board grouped by Status. Splitting the two is what keeps repeat enquiries from piling up as duplicate contacts.
Why a simple Notion CRM needs two databases
A simple Notion CRM works best with one database for people and one for incoming requests, because a form always creates a new row. Notion’s forms guide says each question maps to a database property, so every submission is a fresh page in that database.
Most tutorials point the form straight at the contacts table. Formspree’s own walkthrough states that every submission creates a new row in your database. That’s fine for a first enquiry. When the same client writes again next month, you get a second “contact” with the same email, and their history splits across two pages.
Two databases fix this:
- Contacts holds one page per person or client. You edit it.
- Enquiries holds one page per submission. The form fills it.
- A relation links each enquiry to its contact, so a contact page shows every request they’ve ever sent.
Set up the Contacts database
The Contacts database is your actual CRM: one row per client, with an owner and a stage. Notion’s simple CRM guide recommends a full-page database with a Table layout and suggests these property types:
| Property | Notion type | What it’s for |
|---|---|---|
| Name | Title | The client or company |
| Point of contact | Text | Who you talk to |
| Main address | ||
| Phone | Phone | Optional |
| Owner | Person | Account manager |
| Lead source | Select | Where they found you |
| Stage | Status | Lead, Prospect, Active |
| Deal size | Number | Potential revenue |
| Next follow-up | Date | Your next touchpoint |
Next follow-up isn’t in Notion’s list. I add it because a CRM without a next step turns into an address book.
Set up the Enquiries database and its form
The Enquiries database collects raw form submissions so your contact list stays clean. Give it a short schema: Name (Title), Email, Company (Text), Message (Text), Need (Select), Received (Created time) and a Triage Status with New, Linked and Spam.
Then add the form:
- Open Enquiries, click + next to the views and choose Form.
- Add one question per property the respondent should fill: name, email, company, need and message.
- Open Share form and choose Anyone on the web with link so prospects without Notion can fill it.
- Turn on the email copy of each submission on the Submit screen so new enquiries reach your inbox.
According to Notion’s forms help page, all members on all Notion plans can create and use forms, and people who fill a web-link form are automatically anonymous. That’s why Name and Email are questions, not something Notion records for you. For a fuller field list, see the client intake form guide, and for matching question types to properties, see mapping form fields to Notion properties.
Link enquiries to contacts with a relation
A relation property connects each enquiry to the contact it came from. In Enquiries, add a property, choose Relation, pick Contacts and turn on Show on Contacts. Notion’s relations guide explains that relations are one-way by default, and that toggle makes the link visible from both sides.
Set the relation limit to 1 page, since an enquiry belongs to one contact. Now triage works like this:
- Open a “New enquiries” view filtered to Triage Status = New.
- Search Contacts for the sender’s email.
- If they exist, set the Contact relation to that page. If not, create the contact first, then link it.
- Set Triage Status to Linked.
Don’t put the Contacts relation on the public form. A relation question lets respondents pick pages from the related database, which means any stranger with the link can browse your client list. Do the matching yourself.
Add rollups so each contact shows its history
Rollups pull numbers and dates from linked enquiries onto the contact page. On Contacts, add a Rollup over the Enquiries relation:
- Enquiry count: roll up any property with Count all.
- Last contacted: roll up Received with Latest date.
Notion lists Count all, Earliest date, Latest date and Date range among the rollup calculations. With these two columns, a contact who has asked three times this year stands out from a one-off, without anyone reading old emails.
One catch from the same page: you can’t roll up a rollup. Keep your CRM math one level deep.
Build the pipeline board and follow-up views
A board view grouped by Stage turns Contacts into a visual pipeline. Notion’s CRM guide suggests a Board view grouped by Status, a filtered Table view for active clients, and a Chart view for revenue. I’d add two more:
- Follow-ups due: a table filtered to Next follow-up on or before today, sorted by date.
- Quiet clients: a table filtered to Stage = Active and sorted by Last contacted, oldest first.
Drag a card across the board when a lead becomes a prospect, and change Next follow-up every time you speak to someone.
Automate the routine parts
Database automations can assign owners and send alerts when a new enquiry arrives. Notion’s automations page lists triggers such as Page added and Property edited, and actions including Edit property, Send mail to (from Gmail), Send Slack notification to and Send webhook. Automations need a paid plan.
A practical setup on Enquiries: when a page is added, set Triage Status to New and send a Slack message to the sales channel. Automations can’t currently trigger other automations, so put both steps in one. If you only need the email, the form email notification guide covers the free options.
Where a simple Notion CRM falls short
A Notion CRM is a set of linked tables, not a sales tool. Matching an enquiry to an existing contact is manual: neither forms nor automations look up a contact by email for you. Relations also export to CSV as plain text URLs, so moving the data out later takes cleanup.
Native forms have limits too. Conditional logic is only on Business and Enterprise plans, which matters if you want to ask agencies and freelancers different questions. Form builders that write to Notion get around this. In nDBForms, conditional logic is on Pro and works with any Notion plan, and relation and people questions map to Notion properties. The Free plan allows 3 forms and 100 responses a month, which covers a small CRM’s intake. If you’d rather start from a ready-made layout, there are form templates for intake and lead capture.
For simple lead capture before the CRM exists, start with the lead capture form guide.
FAQ
Can I build a CRM in Notion for free?
Yes. Forms work for all members on all Notion plans, and relations, rollups and board views need no paid plan. Database automations, such as emailing the owner of a new enquiry, need a paid plan.
How do I stop repeat form submissions creating duplicate contacts?
Point the form at an Enquiries database instead of Contacts. Each submission becomes an enquiry, and you link it to an existing contact with a relation, so one person keeps one contact page.
Can a Notion form create a contact and a deal at the same time?
No. A Notion form writes one new row into the one database it belongs to. Link that row to other databases afterwards with a relation property.
How do I track follow-ups in a Notion CRM?
Add a Next follow-up date property to Contacts and a calendar or filtered table view on it. A Latest date rollup over linked enquiries shows when each contact last got in touch.