Customers
Customers and contacts
Three records and no fourth — why there is no lead object, and why nothing sets whether somebody is a customer.
The CRM holds who you deal with. It is built on three records, and the most important thing about it is the one it deliberately does not have.
- Contact
- A person outside the organisation. One row per human, whoever they happen to work for this year.
- Company
- An organisation you deal with — a client, a prospect, a partner.
- Deal
- Something you are trying to win. It sits in a pipeline, carries a value, and becomes a project when it is won — see deals and pipelines.
There is no lead record
A lead is a stage, not a kind of person. Salesforce makes it an object and converts it into a contact plus an account plus an opportunity — so everything before conversion lives in a parallel universe with its own duplicates, and the merge afterwards is a chore the industry has simply accepted. HubSpot bolted a leads object on top of contacts, and now lifecycle stage sits on the contact while lead status sits on the lead. Here a contact existed before you were selling to them and goes on existing afterwards. Nothing is created or merged when somebody becomes a customer.
Nothing sets whether they are a customer
The stage beside a company — prospect, in discussion, customer, former customer — is computed from their projects and their deals. There is no field to set and no control that appears to set one, because a company is a customer by virtue of having bought something.
A single stored lifecycle field cannot express *customer for one service line, prospect for another*, which at an agency is not an edge case but Tuesday. A derived answer can, and it can never drift out of step with the work it describes.
| It reads as | When |
|---|---|
| Prospect | Nothing sold, nothing being pursued |
| In discussion | A deal is open and nothing has been won |
| Customer | A project is live, or a deal has been won |
| Former customer | Work has ended — a different prospect from somebody who never bought |
| Closed | Somebody marked them do-not-contact or archived. A decision beats anything derived |
Somebody can be at two companies
A contact is attached to companies through a dated role, not a single column. The client-side sponsor who also advises a second firm, the fractional CTO, the consultant between roles — all ordinary, and all answered wrongly by one company field, which returns whichever was written last.
Leaving a company sets an end date rather than removing the row. Who was your contact at Meridian in 2024 has to stay answerable after they move on — the same reason an engagement is closed rather than deleted. Lists show only where somebody is now; their record shows where they have been.
A company is optional
Somebody met at a conference with only a phone number is still a contact. A tenant selling to individuals has contacts with nobody behind them, and forcing a company on them would mean inventing one per person — which then has to be maintained, appears in every picker and duplicates the contact list.
Reporting handles the consequence the way this product handles it everywhere: work with no customer is counted and shown as unattributed rather than silently dropped.
What is refused
- A duplicate email address. Two records for one person splits the conversation history, and the split is found when somebody asks what was said to a client and gets half the answer. Addresses are compared lowercased, so two spellings cannot both exist.
- A second company on the same domain. The domain is stored normalised — no scheme, no
www., no path — because it is the key a company deduplicates on and every part of it is something people type differently. - A new contact with no email, phone or mobile. A contact you cannot contact is an entry in a notebook. An existing record whose address was later removed is left alone, because it is still a record of somebody.
- Deleting a company that has projects. The link would null and drop that work out of everything reported per client. Archiving is what somebody clicking delete usually wants.
- A role that ended before it started. Stored, it would make every *were they there in March* question answer wrongly.
Where it meets the rest of the product
- Projects
- A project belongs to a company, which is what makes every hour logged and every margin figure answerable per customer. This replaced a free-text client name that was always documented as a placeholder.
- Guests
- A contact can be linked to a member — normally a guest watching the project they are paying for. One person, two records, deliberately joined rather than merged.
- Do not contact
- Set on a person, or on a company to cover everybody at it. Computed on read, so marking a company covers its people immediately.
- Deals
- Pipelines, stages and the forecast — and why the probability sits on the stage rather than on the deal.
- The timeline
- Notes, calls, meetings and email against a person, a company or a deal.
- Sending email
- Over your own mailbox, never over ours — and what the permission to read it is actually used for.
- Consent and quiet hours
- What may be sent, to whom, at what hour in their own time zone.
- Proposals
- The same engine employment contracts run on — clauses, merge fields, a signature, an executed copy on file.
Reaching people, and getting them in
- Calls and text messages
- Dialling from a contact record on your own telephony account, with recording the consent rules decide on and transcripts that are not stored here.
- Forms and booking links
- Enquiries from your own website, and a page people pick a time on which skips the days the host is on leave.
- Messaging handles
- WhatsApp, Telegram, Instagram, Facebook, QQ and WeChat on a contact, each one click from their record.
- The chat widget
- A conversation panel for your site that never pretends somebody is watching it.
- Lists, import and duplicates
- Getting a spreadsheet in, keeping one person to one record, and asking the list a question.
- HubSpot
- A two-way sync where one side owns each object — and everything works the same with no HubSpot at all.
What is not built
Automated outreach sequences and lead scoring, both deliberately later rather than missing. See what is not built for the full list, including what the chat widget does not do.