Contacts
A Contact is a person, typically attached to an Account but also valid standalone for individuals you correspond with (consultants, partners, applicants).
Core fields
- Name, job title, department, and a free-text company for someone with no account yet
- One email address, unique within your organisation
- One phone number, and a Do not call flag
- LinkedIn URL
- One mailing address
- Account (optional: the company they work for)
- Owners: the people on your team who manage this relationship
- Custom fields: birthday, preferred channel, language, whatever your org needs
Why contacts matter
In BottleCRM, contacts are the unit that:
- Are named on deals and tickets, and a ticket's public replies are emailed to its contacts.
- Sign in to the customer portal with a code sent to their email address.
- Can be named on invoices, estimates and recurring invoices. This is optional; an invoice is sent to the client email on the invoice itself.
- Receive mail sent from their account through
POST /api/accounts/<id>/create_mail/. Neither app has a screen for it yet.
Deduplication
While you fill in a new contact, on the web or the phone, a Possible duplicates notice lists the contacts you can already see that share the email address, the phone number (compared on its digits, whatever the spacing) or both the first and last name. Each one opens in its own tab or screen. It is a warning, not a block: two people can share a name, and you can still save.
A contact's page shows the same list when there are matches. Compare and merge puts the two side by side: pick the one to keep and confirm. The kept contact's values stay and its blank fields take the other's. Everything linked to the other one moves across (accounts, deals, tickets, tasks, invoices, orders, notes, files and activity) and then that contact is deleted. "Do not call" on either one stays set. There is no undo, and every merge is written to the audit log.
Keeping one contact deletes the other, so you need to be allowed to delete it: an admin, or whoever created it. Contacts you cannot see never appear in the list and cannot be merged.
Import
CSV import is two steps, preview then commit, so you see what a file will do before it does it.
Use the Import button on the contacts list in the web app, Import from CSV in the phone app,
or POST /api/contacts/import/preview/ then POST /api/contacts/import/commit/. Preview validates
and reports per-row errors as {row, field, message} without writing anything; commit writes every
row or none. Files are capped at 5 MB and 5,000 rows.
Export
The Export button on the contacts list, on the web or the phone, downloads the list as a CSV with your filters applied and only the contacts you can see. See CSV import and export.
Deletion
Deleting a contact (Delete on the contact's page, on the web or the phone, or
DELETE /api/contacts/<id>/) removes the row for good, and only an admin or whoever created the
contact may do it; nobody else is offered the button. Its links to accounts, deals, tickets, tasks
and leads go with it, and so do its portal sign-in codes. Invoices, estimates, orders and CSAT
surveys that named the contact are kept, with no contact on them.
Nothing is scrubbed. There is no "forget" option: activity entries keep the contact's name as it was recorded, and notes and files attached to the contact are not removed with it. Honouring an erasure request today means editing those out by hand, or in the database.
See also
- Accounts: companies these contacts belong to.
- Custom fields: extend contacts with org-specific data.
- Saved views: keep a filtered contacts list and open it again with one tap.