How to Build a CRM Without Code: Step by Step Guide
How to Build a CRM Without Code: Step by Step Guide
Building a CRM without code starts with the data, not the screens. Describe your contacts, companies, deals, and pipeline stages in plain English, connect Supabase for the database and logins, and Zugo generates a working tool. A multi-page build takes a few minutes and costs 12 credits plus 3 per page.
The reason people build their own CRM is almost never features. It is that off the shelf tools model a sales process that is not theirs, and the workaround fields pile up. A custom CRM fixes that, as long as you are honest about which parts you can describe and which parts you have to iterate into place.
Should you build a CRM instead of buying one?
Sometimes. Buy when your process is ordinary, when you need email sync, calling, and a mobile app, and when several people will live in the tool all day. Established CRMs are genuinely strong at those things, and rebuilding them from a prompt is not a good use of your week.
Build when the opposite is true: your pipeline has stages nobody else uses, you track objects a normal CRM has no field for, and two or three people need one shared source of truth rather than a full sales suite. That is the case where a generated tool beats paying per seat for 90 percent unused software.
The middle case is a spreadsheet that has outgrown itself. If your team is copying rows between tabs, filtering by hand, and losing track of who spoke to whom, a small CRM with a real database is a large upgrade and a short build. Start there before designing anything ambitious.
What data model should you describe?
Four objects cover most sales processes. Write them out with their fields before you open the builder, because the model is the part that is expensive to change once real records exist.
- Contacts. Name, email, phone, role, the company they belong to, how they found you, owner.
- Companies. Name, industry, size, website, and the contacts attached to them.
- Deals. Title, value, currency, stage, expected close date, the company and contact it belongs to, owner.
- Activities. Notes, calls, and meetings, each attached to a contact or a deal, with a date and an author.
Name your pipeline stages explicitly rather than accepting defaults. "New, Qualified, Proposal, Negotiation, Won, Lost" is fine if it is your process. If your process is "Inbound, Demo booked, Demo done, Pilot, Contract", say that, because those five words are the actual difference between your CRM and a generic one.
Also decide what a "won" deal triggers. Nothing at all is a legitimate answer for version one. If it should send an email or create a follow up task, write that down now, because it changes the build rather than being a cosmetic edit later.
What should the build prompt say?
Build an internal CRM for a [industry] team of [N] people.
Login required: Supabase auth, each user sees all records
but only edits the ones they own.
Objects:
- Contacts: name, email, phone, role, company, source, owner
- Companies: name, industry, size, website
- Deals: title, value in USD, stage, expected close date, company, contact, owner
- Activities: type (note / call / meeting), text, date, linked contact or deal
Pipeline stages: [your five or six stages, in order].
Screens:
1. Dashboard: open deals by stage with total value, deals closing this month
2. Deals: kanban board by stage, drag a card to change stage, click to open
3. Contacts: searchable table, click to open a contact with its activity history
4. Companies: table with the deals and contacts attached
5. Deal detail: fields, activity log, add note
Currency is US dollars everywhere. Dates as YYYY-MM-DD.
Two details in that prompt do heavy lifting. "Each user sees all records but only edits the ones they own" is an access rule, and stating it up front is far cheaper than retrofitting it. "Click to open a contact with its activity history" tells the builder the two objects are linked, which is what turns a table into a CRM.
What does a CRM build cost in credits?
A CRM is a platform, not a single page, so it bills at 12 credits plus 3 per page. The table shows how that scales and what you get for it.
| Build | Pages | Credits | What it covers |
|---|---|---|---|
| Minimum useful CRM | Deals, Contacts | 18 | A pipeline and a contact list with a shared database |
| Standard CRM | Dashboard, Deals, Contacts, Companies, Deal detail | 27 | The model above, end to end |
| CRM plus client portal | Standard plus 2 client-facing pages | 33 | Adds a login where a client sees their own project |
| One text or field edit | n/a | 1 | Rename a stage, add a field, change a label |
Pro is $25 per month for 200 credits, which is where any real iteration cycle lives. Free comes with 5 credits, below the 6 a single build costs, so treat it as a look around rather than a plan. Business is $99 per month. A fuller breakdown sits in the pricing guide.
How do logins and permissions work?
Through Supabase. Connecting it gives the generated app a real Postgres database plus authentication under your own account, which means user records and business records both live somewhere you can open, query, and export without asking anyone.
Permissions deserve a deliberate pass before real data goes in. Decide the three common cases explicitly: can a rep see other reps' deals, can they edit them, and who can delete. Write the answers into the prompt, then verify them by logging in as a second user and trying to do the thing that should be blocked. Any app that holds customer data deserves that check, whether a human or an AI wrote it.
Because the database is a Supabase project you own, you can also inspect and tighten access policies in the Supabase dashboard directly. That is worth doing once the CRM holds real pipeline value rather than test rows. The Supabase connector guide walks through the setup.
What will an AI builder not do for your CRM?
Say this part out loud before you commit a team to the tool.
- Email and calendar sync. There is no connector that pulls your inbox into the CRM. Zugo integrates Supabase, Stripe, GitHub, Vercel, Resend, Google Analytics, and your own domain. Resend sends email from the app; it does not sync a mailbox into it.
- Telephony and call recording. Out of scope entirely.
- Complex business logic in one prompt. Commission splits, territory rules, multi-currency reporting, approval chains: reachable through edits, not describable in a paragraph. Budget several rounds.
- A replacement for your engineering team. On a product that a company depends on, Zugo is a fast way to a working internal tool, not a substitute for people who own it long term.
The honest framing: a generated CRM is excellent at being exactly your process for a small team, and weak at being everything a mature sales organisation expects. Match it to the first case.
How do you avoid being locked in?
Two levers, and using both is the point. The database is yours through Supabase, so records can be queried, backed up, and moved with ordinary SQL. The code is yours through GitHub export, which hands over a normal repository you can run, edit, or hire someone to extend.
That combination matters more for a CRM than for a marketing site, because the CRM accumulates history. A year of deal notes is a real asset, and it should never depend on any single subscription staying active. Export early rather than at the moment you need it, described in export to GitHub.
What is the first version worth building?
Two screens: a deals board and a contact list, sharing one database, behind a login. That is 18 credits and an afternoon. Use it for a week with real deals, and the missing fields will name themselves far more accurately than any planning session.
Then edit. A field here, a stage rename there, a dashboard number your team actually asks about. That loop, at 3 credits per edit, is the reason building your own CRM is now reasonable for a small team. Start at zugo.dev, and describe your pipeline in your own words rather than someone else's.