Contacts — overview
Contacts are the people you do business with — prospects, customers, partners, anyone you want to keep a record of. This page covers what a contact is in TatvaCRM, what fields it has, who can see it, and how it relates to other modules.
What is a contact?
In TatvaCRM, a contact is a person you want to remember. That could be a prospect a sales rep just spoke with, a paying customer the support team is helping, a vendor in your supply chain, or a referral partner. Contacts are the atomic unit of the CRM — almost every other module (companies, deals, leads, tasks, activities) ultimately points back to a contact.
Contacts live in the Contacts module — left sidebar of your workspace. The default view is a sortable, filterable table; you can also switch to a kanban view (grouped by lifecycle stage) or a calendar view (grouped by next follow-up date).
Fields
Every contact has the following built-in fields. You can add custom fields on top — see Custom fields on contacts.
Identity
| Field | Type | Notes |
|---|---|---|
| First name | Text (≤100) | Required |
| Last name | Text (≤100) | Required |
| Salutation | Text (≤20) | Mr / Mrs / Ms / Dr / Prof |
| Job title | Text (≤100) | e.g. "Branch Manager" |
| Department | Text (≤100) | e.g. "Underwriting" |
Contact channels
| Field | Type | Notes |
|---|---|---|
| Email (primary) | Validated server-side | |
| Email (secondary) | Optional second email | |
| Phone | Phone | Office number — auto-normalised to E.164 with country default +91 |
| Mobile phone | Phone | Drives WhatsApp + SMS routing; auto-normalised |
| LinkedIn URL | URL | Up to 500 characters |
| X (Twitter) handle | Text | Up to 100 characters |
phoneE164 (international format), phoneCountryCode (ISO-2), phoneType (mobile / landline / VoIP), and phoneExtension. You don't edit these — they are recomputed every time the original phone changes. Reports and exports use the E.164 form so phone matches work across sources.Address
Address line 1 + line 2, city, state, country (ISO-2 from picker, e.g. IN), pincode. The country picker emits the ISO-2 code so reports group cleanly; the older free-form country field is still accepted but new writes should use the ISO-2 form.
Lifecycle and ownership
| Field | Notes |
|---|---|
| Lifecycle stage | Where this contact is in your relationship. Default values: subscriber, lead, opportunity, customer, evangelist. Editable per tenant. |
| Lead status | Optional secondary status — useful when one lifecycle stage has multiple sub-states. |
| Owner | The user responsible for this contact. Controls visibility — see below. |
| Source | Where the contact came from — referral, website form, event, etc. |
| Company | Link to a Company record. One contact can be linked to one company. |
| Tags | Free-form labels for ad-hoc grouping. See bulk tag / untag operations. |
Visibility and permissions
TatvaCRM uses a role + scope visibility model. Every role has a visibility scope on contacts — own, team, or everything:
own— you only see contacts where you are the ownerteam— you see contacts owned by anyone in your teameverything— you see every contact in the workspace
System roles set defaults: Owner and Admin see everything, Manager sees team, Member and Viewer see own. Custom roles can pick any combination per module. See Roles and permissions.
owner are visible to everything-scoped users only. If you import 500 contacts and forget to set an owner, your reps on own or team scope won't see them. The bulk-import flow has an Assign owner step for this reason — don't skip it unless you mean to.API operations
Everything you can do in the UI is exposed via the REST API at /api/contacts. Notable endpoints:
| Method | Path | Required permission |
|---|---|---|
| GET | /contacts | contacts:read |
| GET | /contacts/:id | contacts:read |
| POST | /contacts | contacts:write |
| PATCH | /contacts/:id | contacts:write |
| DELETE | /contacts/:id | contacts:delete |
| POST | /contacts/:id/restore | contacts:write |
| POST | /contacts/bulk/delete | contacts:delete |
| POST | /contacts/bulk/update | contacts:write |
| POST | /contacts/bulk/tag | contacts:write |
| POST | /contacts/bulk/untag | contacts:write |
deletedAt timestamp and can be restored within 30 days via the Restore endpoint. After 30 days, a background job hard-deletes. This protects against accidental deletion without leaving forever-old records around.What next
- Add, edit, delete a contact — the day-one walkthrough
- Custom fields — add the fields your team actually uses
- Bulk import from CSV — move your existing list in
- Search and filters — slice and dice