TABLE OF CONTENTS
What If Your CRM Worked the Way You Do?
We built a custom CRM in Notion — powered by 30+ Zapier automations, AI agents, and deep integrations — that tracks contacts, emails, meetings, deals, invoices, and leads automatically. Here's the full architecture.
TL;DR
Most CRMs are built for companies with 50-person sales teams. If you're a founder or small team, you end up paying for features you'll never use, fighting a tool that wasn't designed for how you actually work. We built a custom CRM in Notion — powered by 30+ Zapier automations, Notion's native database automations, and AI agents — that tracks contacts, emails, meetings, deals, invoices, and leads in one place, automatically. No seat-based pricing traps. No six-week onboarding. Just the system you need, built around how your business actually runs.
The Problem with Off-the-Shelf CRMs
Here's a pattern I see constantly with early-stage startups and lean teams: someone signs up for HubSpot or Salesforce, spends weeks or even months configuring it, uses maybe 15% of the features, and quietly goes back to a spreadsheet within three months.
The subscription costs aren't trivial either. HubSpot's Sales Hub starts at US$90/month per seat once you need anything beyond the bare basics. Salesforce Essentials is US$25/month per user — for a product that still requires a consultant to set up properly. Multiply that across a five-person team and you're spending US$1,500–5,400 a year before you've logged a single deal.
But the subscription isn’t the only cost; perhaps even more important is the friction. Traditional CRMs demand that you work the way they want you to work. Every field, every pipeline stage, every automation rule lives inside their walled garden. When your process changes — and it will, because you're a startup — you're back in the settings menu, wrestling with their logic.
So we built our own.
What If Your CRM Worked the Way You Do?
About a year ago, I wrote about our first attempt at building a CRM in Notion. It handled the basics: contacts and companies auto-created from email domains, deals tracked through a pipeline. A handful of Zapier automations kept things linked.
It was good. But it wasn't enough.
Over the past year, we've rebuilt and expanded almost every part of the system. What started as three databases and a few Zaps has grown into a fully integrated operations hub — seven interconnected databases, 30+ automations across three workflow canvases, and integrations spanning Gmail, Google Calendar, Slack, Linear, Xero, Harvest, Granola, MailerLite, and more.
The guiding principle hasn't changed: build only what you need, make it automatic, and keep everything in one place.
The Architecture: What's Inside
Our CRM is organised around the things that actually matter in a client relationship: the people you know, the conversations you've had, the meetings you've attended, and the deals you're working on. Every piece connects to every other piece — automatically.
work.flowers · CRM Architecture
A CRM That Runs Itself
7 databases. 30+ automations. Zero manual data entry.
Here's how it all connects.
7
Databases
30+
Automations
12
Integrations
0
Manual Entry
HubSpot Sales Hub for 5 users: ~US$5,400/yr.
This system: Notion + Zapier + the integrations you actually need — at a fraction of the cost, with zero feature bloat.
1
Data flows in from your existing tools
Gmail
cc crm@ on any thread
Google Calendar
Meetings auto-captured
MailerLite
Mailing list activity
Website
Inbound enquiries
30+ Zapier Automations
2
AI enriches every record
Apollo.io
Job title, LinkedIn, location
AI Agents
Company research & briefs
3
Everything lands in one place
Notion CRM Hub
7 interconnected databases
Contacts
Companies
Emails
Meeting Notes
Deals
Leads
Invoices
Notion native automations link contacts → companies → deals → meetings automatically
Contacts and Companies
Contacts enter the CRM through the work we're already doing: sending emails and attending meetings. When anyone on the team cc's our dedicated crm@ email address on a conversation, or when we meet someone new in a calendar event, the system checks whether that person already exists in our Contacts database. If they don't, it creates them automatically.
From there, a chain of automations fills in the gaps. Apollo.io's free API enriches each new contact with their job title, company, LinkedIn profile, and location. A separate automation extracts the email domain and either finds the matching company record or creates a new one. When a new company appears, a Notion Custom Agent visits their website, researches the business, and populates the record with a description, industry classification, employee count, headquarters location, and a detailed overview of their products, market position, and recent news.
The result: a CRM that populates itself. No one has to manually enter a contact or Google a company. Every team member's relationships flow into the same shared database, enriched and linked, without anyone thinking about it.
Email Tracking
Emails flow into the CRM in three ways: cc'ing our crm@ address on any thread, applying a Gmail label to tag an existing conversation, and automatic capture of mailing list activity from MailerLite. Each email is automatically linked to the relevant contacts, companies, and deals — and if a participant doesn't exist in the CRM yet, they're created on the spot.
What this means in practice: anyone on the team can open a client's Notion page and see the full email history with that client, without needing access to anyone else's inbox. No more "can you forward me that thread?" and no more context lost when someone's on leave.
Meeting Intelligence
Every calendar event with an external attendee automatically creates a meeting note in Notion. For transcription and summaries, we rely on Notion's native AI meeting notes — the transcript, summary, and action items land directly in the same database without any extra setup.
For in-person meetings or situations where we need a dedicated transcription app (Granola is particularly good on iOS), a one-click Zapier automation ingests those notes into the same Meeting Notes database. Either way, automations link that meeting note to the relevant contacts, companies, and deals. Regardless of how a meeting was captured, everything ends up in one place, fully connected.
After a meeting ends, a follow-up automation analyses the notes, extracts action items, and routes them to the right place — Linear tickets for delivery work, Notion tasks for operational follow-ups. Nothing falls through the cracks because nothing depends on someone remembering to log it.
There's also a meeting scheduling layer built on a Slack agent. When a scheduling conversation happens in Slack, the agent handles the back-and-forth and pushes the finalised meeting into the pipeline. When you're running a consultancy and 60% of your week is meetings, shaving even two minutes off each scheduling interaction adds up to hours saved per month.
Deals and Project Lifecycle
The deals pipeline tracks opportunities from first conversation to close, with automations firing at each stage transition. When a company is linked to a deal, it's automatically registered as a customer in Linear (our project management tool). When a proposal fee is updated, the deal value syncs.
When a deal is won, five things happen automatically in the background: a Google Drive folder structure appears for document storage, a Linear project and team spin up for delivery, a Slack channel opens for client collaboration, a Harvest client and project get provisioned for time tracking, and the client is added to our mailing list in MailerLite. No checklists or copy-and-pasting between tools. It just happens.
work.flowers · CRM Architecture
From Deal Won to Fully Operational
1
Deal won? Everything spins up
🎉 DEAL WON5 things happen automatically
Google Drive
Folder structure
Linear
Project & team
Slack
Client channel
Harvest
Time tracking
MailerLite
Mailing list
✨
The more you use it, the smarter it gets
Contacts, emails, meeting notes, deals, and invoices all live in the same workspace. That means Notion AI can answer questions like "what's the latest with this customer?" by drawing on meeting transcripts, email threads, and deal status — with citations back to the source.
Every email logged and meeting note linked makes the AI more accurate over time. The system compounds.
No seat-based pricing traps · No six-week onboarding · Just the system you need
work.flowers
Inbound Leads
A dedicated leads database captures enquiries from email, LinkedIn, our website contact form, and the Zapier and Notion partner directories. Each lead is automatically triaged and can be qualified into a contact record when ready. Because the lead capture layer is modular, adding a new source — say, Facebook Lead Ads or a chatbot — is just another automation pointing at the same database. The system scales without being rebuilt.
Invoicing
Xero invoices sync one-way into Notion. When an invoice is created or its status changes (sent, paid, overdue), the corresponding Notion record updates to match. This gives the whole team a real-time financial view of every client relationship without anyone needing access to Xero itself — useful when your ops team needs to check a payment status but shouldn't be in the accounting tool.

Not Everything Needs Zapier
Not every automation in this system runs through Zapier. Notion's native database automations handle a surprising amount of the relational linking — and they're instant, free, and require zero maintenance.
Here's how the two layers work together. When a meeting note or email gets linked to one or more contacts (which happens automatically via Zapier), Notion's own database automations then propagate those links further — connecting the same meeting note or email to all the companies and deals those contacts are associated with. Zapier handles the cross-platform orchestration (Gmail to Notion, Google Calendar to Notion, Notion to Linear), and Notion handles the internal relational logic.
This split matters because it keeps the Zapier workflows simpler and cheaper, and it means that even manual actions benefit from the automation. If someone links a contact to a meeting note because they were in the room but not on the calendar invite, the company and deal associations still cascade automatically. No Zap required.
AI Agents That Do the Research For You
Notion's Custom Agents — AI agents that can be configured with specific instructions and given access to your databases and the web — are one of the reasons we're confident building on Notion as a platform.
The Company Enrichment Agent is a good example. When a new company record appears with just a website URL, the agent visits that site, researches the business, and populates the record with everything it finds: the legal name, a concise description, industry classification, employee count, headquarters, and physical address. It then writes a detailed brief directly into the page body covering products, market position, competitive landscape, and recent news.
In a traditional CRM, this kind of enrichment either costs real money (Clearbit starts at around US$99/month, ZoomInfo at several hundred) or it means someone manually Googling every new company and copy-pasting details into fields. Here, it happens automatically, and the output is tailored to exactly what we need for evaluating whether a company is a good fit for our services.
The power of Custom Agents is that they're configurable per database. We give each agent specific instructions about what information matters, what format to use, and what to do when it's unsure. Same underlying AI, shaped to fit our workflow.
Zapier Tables as Middleware
If there's one architectural pattern that made the biggest difference to the reliability of this system, it's our use of Zapier Tables.
Most Zapier workflows are linear: trigger fires, action runs, done. But real-world CRM operations aren't linear. You need to check whether a record already exists before creating a duplicate. You need to map an email address to a Notion page ID. You need to track which Gmail threads have already been processed.
Zapier Tables act as a lightweight database that sits between your triggers and your actions. We use them as lookup tables, deduplication registers, and state trackers. The email pipeline alone uses three separate tables to ensure that every email is logged exactly once and linked to the right contact.
For the technically curious, I wrote a dedicated post on Zapier Tables that goes deeper into the pattern. The short version: once you start thinking of Tables as middleware rather than just spreadsheets, it changes how you architect automations entirely.
Why Not Just Use HubSpot?
Fair question. Here's the honest answer: if you have a 20-person sales team with established processes and a full-time ops person to manage the tool, HubSpot or Salesforce might genuinely be the better choice. They have decades of sales-specific features that we're not trying to replicate.
But if you're a founder, a small team, or a consultancy — and your CRM needs to flex around your actual workflow rather than the other way around — a custom Notion build gives you something no off-the-shelf tool can: a system that's yours.
You pay for Notion (which your team probably already uses), Zapier (which scales with usage, not seats), and whichever integrations you actually need. No feature bloat. No mandatory training sessions. No "enterprise plan required" surprises when you need a particular automation.
For a team of five, the total cost of our stack — Notion, Zapier, and the integrations we use — comes to a fraction of what HubSpot's Sales Hub Professional would cost for the same headcount. And the system does exactly what we need, nothing more.
The Compounding Effect: Why Context in One Place Changes Everything
Here's the thing about housing your entire CRM in Notion that isn't obvious until you've lived with it for a while: Notion AI gets more useful the more context you give it.
When your contacts, emails, meeting notes, deals, proposals, and invoices all live in the same workspace, you can ask Notion AI questions like "what's the latest with this customer?" and get a genuinely useful answer — pulling from the last three meeting transcripts, the most recent email thread, and the current deal status. It doesn't hallucinate context because the context is right there, linked across your databases, with citations back to the source.
We use this constantly. Need to draft a proposal for a prospect? Notion AI can draw on your meeting notes and email exchanges to understand what they need, what's been discussed, and what you've already committed to. Wrapping up an engagement and need a case study? It can synthesise months of meeting notes, deliverables, and outcomes into a first draft that actually reflects what happened — not a generic template.
This is where the investment in automation really pays off. Every email that gets logged, every meeting note that gets linked, every company record that gets enriched — it's all building a richer context that makes the AI more accurate and more useful over time. The system compounds.
What This Looks Like for You
If you've read this far, you probably recognise the problem: client data scattered across Gmail, calendar, spreadsheets, and whatever CRM you gave up on. Manual processes eating into hours that should be spent on actual work. Context that lives in one person's head and disappears when they're on leave.
We build custom Notion systems with deep automation — tailored to your workflow, your tools, and your team size. The CRM described in this post took us about a year of iteration to reach its current state. For clients, we typically deliver a tailored version in 4–8 weeks, because we've already solved the hard architectural problems.
You don't need every piece described here. Some clients just want the email tracking and contact enrichment. Others want the full meeting intelligence pipeline. We scope it to what you actually need, and the system is designed to grow with you.