Guides
How to design a CRM data model
A CRM only works if it stores the same nouns the team already uses. If the tool forces everything into Contacts and Deals while the business thinks in Properties, Retainers, Batches, or Subscriptions, people will keep a second system of record. This guide is vendor-neutral. It shows how to design a CRM data model before buying or rebuilding anything.
SchemaDesk appears only lightly at the end as one schema-first option with unlimited objects, fields, and records (no fair-use ceiling).
Objects vs fields vs relationships
| Concept | Question it answers | Example |
|---|---|---|
| Object | What kind of thing is this? | Client, Deal, Property, Candidate, Retainer |
| Field | What facts matter on that thing? | Status, fee, square meters, stage, renewal date |
| Relationship | How do things connect? | Client has many Retainers; Property has many Viewings |
Rule of thumb: if it needs its own list view, history, and owners, it is probably an object. If it is a single attribute of something else, it is a field. If two objects must be navigated together, define a relationship explicitly instead of pasting IDs into text fields.
A simple design workshop (90 minutes)
- List the nouns spoken in the last week of standups (not the vendor's nouns).
- Circle the nouns that have lifecycle (stages, renewals, inventory states).
- For each circled noun, list 5 to 10 fields that change a decision.
- Draw arrows between nouns (one-to-many vs many-to-many).
- Mark what can stay a spreadsheet for another quarter.
- Write one happy-path story ("new lead becomes client becomes retainer becomes invoice").
Start on paper or a whiteboard photo, not in the settings UI.
Worked examples
Real estate brokerage
- Objects: Contact (buyer/seller), Property, Viewing, Offer
- Fields: Property asking price, status, address; Viewing date and outcome; Offer amount and stage
- Relationships: Contact interested in many Properties; Property has many Viewings and Offers
- Common mistake: stuffing viewing history into a long text field on the contact
Marketing or service agency
- Objects: Client, Retainer, Project, Invoice
- Fields: Retainer period dates, fee, scope notes; Project stage; Invoice status and due date
- Relationships: Client has many Retainers; Retainer links to Projects and Invoices
- Common mistake: using only Deals, then losing renewal dates after close-won
Vertical reading: /crm-for/agencies, /crm-templates/agency-crm
Recruitment desk
- Objects: Candidate, Job, Application (or Placement), Client company
- Fields: Stage, source, salary band, start date
- Relationships: Candidate applies to many Jobs; Job belongs to a Client
- Common mistake: one "People" list with a status column that cannot represent two open applications
Productized service or maintenance business
- Objects: Account, Site (or Asset), Work order, Contract
- Fields: Contract renewal, SLA tier, Work order priority
- Relationships: Account has many Sites; Site has many Work orders under a Contract
- Common mistake: one Deal per visit, which destroys contract history
Common mistakes
- Mirroring the old spreadsheet 1:1 including unused columns
- Too many objects on day one (start with three to five)
- Using text fields for relationships ("Client: Acme" as free text)
- No owner field on objects that require follow-up
- Encoding process in object names ("Old_Clients_2024") instead of status fields
- Skipping renewal or end dates on recurring commercial objects
- Buying Enterprise only for custom objects without checking cited caps elsewhere (limits comparison)
Migrating from spreadsheets
- Freeze a copy of the sheet as the migration source.
- Map each tab to an object; map each critical column to a field.
- Normalize picklists (one spelling of each status).
- Split multi-value cells ("tags") deliberately: multi-select field vs related records.
- Import parents before children (clients before retainers, properties before viewings).
- Spot-check 10 random records end to end.
- Keep the sheet read-only for one cycle as backup, then archive it.
Migrating from Notion or Airtable
Same sequence as spreadsheets, plus:
- Treat each database/table as a candidate object
- Recreate linked records as first-class relationships
- Expect CRM-specific pieces (pipelines, activities, permissions) to be rebuilt, not exported perfectly
Compare tradeoffs: /airtable-vs-crm, /notion-vs-crm, /crm-vs-spreadsheet
Choosing software after the model exists
Ask vendors:
- Can these objects exist on a plan the team will actually buy?
- What are the published caps on objects, fields, and records?
- How do imports and relationships work?
Cited vendor gates and prices: /crm-comparisons/limits. Specialty hub: /crm-features/custom-objects. If HubSpot Enterprise is the only blocker, see /crm-alternatives/hubspot.
SchemaDesk (brief)
SchemaDesk is a customizable CRM for teams that want to bring their own data model. Templates (Sales, Agency, Real Estate, Recruitment, and others) are seeds, not cages. Import CSV or Excel into any object (mapping uses existing custom fields; import creates no new fields or objects during the import). Export any list to CSV. Whole-workspace export is coming soon. API keys and webhooks are included for every team until April 2027; from April 2027 they stay on Pro.
Each person can hide, reorder, and group their sidebar into named sections. Objects can be renamed and given an icon from a set of 30. Home dashboard widgets cover numbers, record lists, and bar, pie, or line charts from any object, with grouping, date ranges, and filters. Widgets can be personal, or pinned for everyone by admins.
Until April 2027, every team gets full Pro features free. Unlimited people, up to 3 workspaces per person, automations, API keys and webhooks, full history, roles and permissions, plus unlimited objects, fields, and records. In April 2027, choose Pro or move to Free forever. Billing starts in April 2027 for everyone, no matter when they joined. Teams with no plan chosen move automatically to Free forever. SchemaDesk sends notices 30, 7, and 1 day before. No data is deleted. From then, Free forever is up to 2 people and 1 workspace (unlimited objects, fields, and records; no automations; no API; 30-day history), and Pro is 10 EUR per seat per month. Anyone who joins before April 2027 can lock 5 EUR per seat per month for life while subscribed, as long as they start paying by 30 April 2027.
SchemaDesk has no limits on objects, fields, and records on Free and on Pro, and no fair-use ceiling. That covers the data model only, not unlimited automations or workspaces. Until April 2027 every team gets full Pro features free (including automations and API); from April 2027 those stay on Pro.
See SchemaDesk pricing for the Free vs Pro table.
Next step
Run the 90-minute workshop on one live process. If the resulting nouns fail to fit the current CRM without an expensive unlock, compare options on the limits table, then try a schema-first workspace.
Frequently asked questions
What is a CRM data model?
It is the set of objects (record types), fields (attributes), and relationships that describe how the business stores customers and work. A good model matches the nouns people already use on whiteboards and in spreadsheets.
Object vs field vs relationship?
An object is a type of record (Contact, Deal, Property, Retainer). A field is a fact on that record (status, amount, address). A relationship links records (a Contact owns a Property; a Retainer belongs to a Client).
Should every spreadsheet column become a field?
No. Start with fields that change decisions, reports, or handoffs. Park the rest until someone asks for them twice.
When do I need a custom object instead of a field?
When the thing has its own lifecycle, multiple attributes, or many links to other records. A pet name can be a field; a kennel's Pets with vaccinations and owners should be an object.
How do I migrate from Notion or Airtable?
Export tables, map each table to an object, map columns to fields, then rebuild relationships before going live. Expect a cleanup pass on duplicates and empty columns.
Where does SchemaDesk fit?
SchemaDesk is a customizable CRM aimed at bringing your own data model with unlimited objects, fields, and records (no fair-use ceiling) on Free and on Pro. Templates are starting points. Until April 2027, every team gets full Pro features free. Unlimited people, up to 3 workspaces per person, automations, API keys and webhooks, full history, roles and permissions, plus unlimited objects, fields, and records. In April 2027, choose Pro or move to Free forever. Billing starts in April 2027 for everyone, no matter when they joined. Teams with no plan chosen move automatically to Free forever. SchemaDesk sends notices 30, 7, and 1 day before. No data is deleted. From then, Free forever is up to 2 people and 1 workspace (unlimited objects, fields, and records; no automations; no API; 30-day history), and Pro is 10 EUR per seat per month. Anyone who joins before April 2027 can lock 5 EUR per seat per month for life while subscribed, as long as they start paying by 30 April 2027. See /crm-features/custom-objects and /pricing.