Contacts

The people at the accounts you sell to and support — decision-makers, influencers and end users.

Contacts

A contact is an individual person at an account — typically a decision-maker, influencer, or end user. Every contact belongs to an account.

What a contact record stores

The contact detail screen has 6 collapsible sections:

SectionFields
IdentitySalutation, first name, last name, full name, profile picture
Account & RoleContact owner, account, job title, department
Contact InformationEmail, phone, mobile
Mailing AddressMailing street, city, state/province, postal code and country — five separate fields
Additional InfoLead source, description, last contacted
Communication PreferencesPrimary contact flag, do-not-call, email opt-out

The primary contact

Each account has one primary contact — usually the main decision-maker or business sponsor. Setting a contact as primary automatically clears the flag on the previous one, so you never end up with two.

The primary contact is auto-suggested as the default on:

  • Opportunities (Primary Contact field)
  • Quotes (Contact field)
  • Contracts (Primary Contact field)

This saves a lot of clicks.

No org chart — and what to use instead

There is no reporting line on a contact. A Reports To field was declared for one, and the tree it promised was never built: no page rendered it, no report grouped by it, and the Copilot never read it when summarising an account. Rather than keep a field whose documented behaviour did not exist, HotCRM records seniority where something acts on it — job title and department, which reports do group by and the Copilot does read.

Nor is a date of birth stored. Birthdate was importable and read by nothing; personal data with no purpose is a liability rather than a feature, so it is gone too.

Communication preferences (GDPR / CCPA)

Two opt-out flags record that this person does not want to be contacted. Both are checkboxes in the Communication Preferences section of the contact record, and they differ in how much of the product actually acts on them:

FlagWhat it does today
Email Opt OutEnforced. The Send Email action is hidden on a contact who has opted out — on the record header and on the list row — and creating such a contact raises no welcome prompt for its owner.
Do Not CallEnforced for scheduling, not for logging. HotCRM refuses to schedule a phone touch against a flagged contact: an open Call task and a planned Call calendar event are both rejected on save, wherever the write comes from — the Schedule Follow-up screen, a hand-created task, an import, or the API. Recording a call that already happened stays available on purpose: Log a Call, and a Call task saved as Completed, are never blocked, because refusing them would hide the evidence rather than prevent the call. The flag is about the phone only — email is governed by Email Opt Out, and meetings and demos are not restricted.

Both are ordinary editable checkboxes: anyone who can edit the contact can set or clear them. There is no field-level rule reserving them to admins, so treat them as a record of the person's wishes that your team is expected to honour — not as a lock.

Built-in rules

  • An email address must be unique within your organization. The same address cannot be used by two contacts, even when those contacts sit under different accounts — the second save is rejected with "Another contact … with email … already exists." Another organization on the same platform is free to have its own contact at that address; the rule is scoped to your data, not the whole platform. Email is normalised to lower case before it is stored and compared, so Ada@Example.com and ada@example.com count as the same address. A person you deal with at two companies therefore needs a different address on each contact record.
  • New-contact prompt — creating a contact notifies its owner, in the inbox and by email: "… was added as a contact. Reach out to welcome them." Nothing is sent to the contact: contact_welcome is the name of the flow and of its notification topic, not an email template, and HotCRM ships no outbound welcome mail. Two cases raise no prompt at all — a contact with no owner (records written by seed data or an integration carry none) and a contact with Email Opt Out ticked.

Sharing — who can see which contact

Contact visibility inherits from the parent account. If you can see the account, you can see all its contacts. There's no separate contact sharing model to manage.

This makes the security story simple: get the account-sharing right and contacts follow.

Standard list views

Contacts opens on All Contacts, and the switcher carries three saved views — these, and nothing else:

ViewWhat it shows
All Contacts (the landing view)Every contact, grouped by account with the groups collapsed: you expand the account you are working on instead of scrolling one flat roster. Inside a group, people are ordered by last name A→Z, with avatar, account, title, department, email, phone and owner on the row. 50 rows a page, export to CSV or XLSX.
People DirectoryThe same people as photo cards, each card fronted by the contact's avatar — the fastest way to put faces to an account team before a meeting. Name, title, department, email, phone and account are on the card.
Primary ContactsOnly the contacts flagged as primary — one per account, as described above — ordered by account. This is the list worth reviewing before a quote run or a mail-merge, because it is exactly the set every default draws from.

There is no owner-filtered contact view, and none is needed for access: contacts are not shared on their own, they inherit the account's sharing (see above). To work "your" people, start from My Accounts on the Accounts list and open the account, or expand your accounts' groups on All Contacts.

How the AI Copilot uses contacts

When you ask the AI assistant to draft an email, it uses:

  • The contact's first name and title (for personalisation).
  • The account name and industry (for context).
  • The product catalog (for relevant talking points).
  • The contact's communication preferences (to skip opt-outs).

So "Draft a follow-up to Jane" gives you a personalised, on-brand email in seconds.

Tips for sales reps

  • ✅ Always set a job title and department — it's used by reports and by the Copilot.
  • ✅ Fill in job title and department for every contact you meet — they are what the Copilot and the reports actually read.
  • ✅ Mark exactly one primary contact per account.

Tips for admins

  • The list of departments (Sales, Marketing, Engineering, Finance, IT, Operations, HR, Legal, Executive, Other) is configurable per the picklist values. See Customization › Extending Objects.
  • The new-contact prompt is a flow, not a template: edit src/flows/contact-welcome.flow.ts to change its wording, its channels, or who it goes to. There is no email-template setting behind it.
  • Sharing inheritance from accounts means you generally never need account-specific contact sharing rules.

On this page