Home About Services Work Blog FAQ Contact
Back to blog

Business 5 min read

Why We Built Our Own CRM (And Why You Probably Shouldn't)

Our contact form worked fine. Someone fills it out, we get an email, we reply. Simple. The problem is what happens after that email arrives.

Our sales pipeline started as a markdown file in a git repo. Five leads, a table, and some notes. It worked until it didn't. There's no "remind me to visit this person on Tuesday" in a markdown table. No "how many leads came in this month." No way to know if an email got buried.

The real problem wasn't the tools

We weren't drowning in leads. Five prospects, about $11,000 in potential work, all local businesses we could walk to. The problem was the gap between "someone submitted our contact form" and "we actually followed up." Form submissions went to email. If that email got read and flagged, great. If it landed during a busy week, it disappeared into the inbox. No record. No reminder. No trail.

That's a workflow problem. And workflow problems don't get better with more email.

Why not just use HubSpot?

We looked. Everyone looks. Here's what we found:

HubSpot Free gives you a million contacts and unlimited deals. Sounds great until you realize you can't automate anything, can't customize properties without upgrading to Sales Hub Professional at $100/month, and can't create custom objects without Enterprise. The free tier is a lead magnet for their sales team, not a CRM for yours.

Pipedrive starts at $14/month (annual billing). For five leads. That's $168 a year to track what a spreadsheet could handle. The tool is good. The math isn't.

Streak lives inside Gmail and costs nothing for private pipelines. The catch is your data lives in Streak's cloud, tied to your Gmail account, with limited export options. You're renting a pipeline inside someone else's inbox.

Self-hosted options like SuiteCRM and EspoCRM are full enterprise applications. Installing, configuring, maintaining, and securing a CRM built for 50-person sales teams is a different kind of overhead than the one we were trying to eliminate.

ToolCost/moFreePipelineYou own it
HubSpot Free$0YesYesNo
Pipedrive$14+NoYesNo
Streak$0YesPrivate onlyNo
Monday CRM$36+NoYesNo
Airtable$0YesManualNo
EspoCRM$0N/AYesYes
Google Sheets$0YesManualNo
Custom build$0N/AYoursYes
Pricing as of April 2026. Annual billing where applicable.

Every option was either too much tool or not enough tool in the right places. We needed five things: capture form submissions to a database, see all leads in one place, track pipeline stages, set follow-up reminders, and delete records when asked (Canadian privacy law requires that). No email automation, no campaign manager, no lead scoring. Just the basics, built tight.

What we actually built

The whole system went from zero to deployed in a single working session. PHP backend with MariaDB, same stack as the rest of our site. No framework, no dependencies, no build step for the admin panel.

Here's what it does:

  • Every contact form submission now writes to the database alongside sending the email. If the email gets lost, the lead record is still there.
  • An admin panel at /admin/ shows all leads in a sortable, filterable table. Stage badges, pipeline value, next follow-up date, search.
  • Each lead has a detail page with the original message, an activity timeline, notes, follow-up management, and stage tracking.
  • A REST API with token authentication, ready for our client portal (Daybook) to consume when the time comes.
  • Privacy compliance baked in. Delete a lead and everything goes with it. Activity, follow-ups, the lot. We added a privacy policy to the site too.

The pipeline stages align with our other project (Daybook, a client portal we're building separately). When we eventually connect the two, migration will be a single database query. That's not by accident.

The PIPEDA question

Before writing any code, we asked: what are our legal obligations for storing customer contact info in Canada? The answer is straightforward but often ignored. PIPEDA requires that you collect data for a stated purpose, keep it only as long as needed, let people see what you have on them, and delete it when they ask.

Most small businesses don't think about this until they have to. We built the delete function, the data retention policy, and the privacy page before we built the dashboard. Compliance first, features second.

What this means for you

We're not suggesting you build your own CRM. If you're not a developer, a custom build isn't the right move. HubSpot's free tier is fine for most small businesses. Airtable with a pipeline template works. A Google Sheet with conditional formatting works.

The point is this: the best workflow tool is the one that fits how you actually work. For us, that meant 50 lines of PHP bolted onto a contact form we already had, feeding into an admin panel that shows exactly what we need and nothing else. No subscription, no vendor lock-in, no features we'll never touch.

That's what we mean by Smart Workflows. Not more software. The right software, built for how your business actually runs. If you're spending hours every week on tasks that should take minutes, that's a problem we can help with.

Want to talk about it? Reach out. We'll figure out what you actually need.

About the author

Rob Kingsbury

Rob Kingsbury is the founder of Kingsbury Creative and a Professor at Algonquin College. He has been building websites since the mid-1990s, and has spent the last decade focused on small businesses across Renfrew County and the Ottawa Valley.

Like what you see?
Let's build yours.

We're building our portfolio and offering introductory rates. Get in early.

Start Your Project