Roles and permissions
TatvaCRM ships with five built-in roles and lets you build custom roles from a vocabulary of granular permissions. This page is the reference for what each role can do, how visibility scopes work, and when to create a custom role.
Two axes — what and whose
Every role in TatvaCRM is described by two independent axes:
- Permissions — what actions the user can take. Read / write / delete on each entity type, plus management permissions for settings, roles, teams, custom fields, and so on.
- Visibility scope — whose records the user can see.
own(mine only),team(my team's), oreverything(every record in the workspace).
Both axes are checked on every request. A user with the contacts:read permission and own visibility can read contacts — but only the ones they own.
The five system roles
Every tenant ships with these five roles. They are immutable — you cannot edit their permissions or visibility — which guarantees that documentation and screenshots in this guide always apply.
| Role | Visibility | What it's for |
|---|---|---|
| Owner | everything | Workspace founder. All 51 permissions. The one person who can manage billing and delete the workspace. |
| Admin | everything | All permissions except the most destructive (workspace deletion, plan changes). Use for ops / RevOps / sales leadership. |
| Manager | team | CRUD on records owned by their team — including export. Cannot touch settings or roles. Use for line managers running a team of reps. |
| Member | own | Read + write on records they own. No delete, no export by default. Use for individual contributors — sales reps, support agents. |
| Viewer | own | Read-only on records they own. No writes, no exports. Use for stakeholders who need to see but not touch — finance, an external consultant. |
Visibility scopes in detail
own
The user sees only records where they are the owner. Other users' records — even teammates' — are completely hidden. Search returns no results for someone else's contact. The detail page returns 404.
Activities work slightly differently. A user with own visibility on activities can still see an activity they personally performed (a note they wrote, a call they logged) even if the parent record belongs to someone else. This is intentional — reps need to see their own work.
team
The user sees records owned by anyone in their team. Team membership is set in Settings → Team. A user with team visibility on contacts who belongs to the "Mumbai" team sees every contact whose owner is in the Mumbai team.
A user can be in multiple teams. In that case team visibility is the union — they see records owned by any of their teams.
everything
The user sees every record in the workspace, regardless of owner. This is the default for Owner and Admin.
everything-scoped users. After a bulk import or webform capture, set an owner before the records get lost to own / team users. The import flow has an Assign owner step for this reason.Permission vocabulary
Permissions follow a consistent naming pattern: <entity>:<action>. The actions are read, write, delete,export, import for most entities, with some entity-specific actions (leads:convert, commissions:approve).
Core CRM permissions (Phase 1)
contacts:read,contacts:write,contacts:delete,contacts:export,contacts:importcompanies:read,companies:write,companies:delete,companies:export,companies:importdeals:read,deals:write,deals:delete,deals:export,deals:importleads:read,leads:write,leads:delete,leads:convert,leads:export,leads:importtasks:read,tasks:write,tasks:delete,tasks:export,tasks:importactivities:read,activities:write,activities:deletepipelines:read,pipelines:managecustom_fields:manage,picklists:read,picklists:writeteam:read,team:manage,team:inviteroles:read,roles:manageteams:read,teams:managesettings:read,settings:managereports:read,audit:reademails:read,emails:writedocuments:read,documents:writeimport:run,import_history:read
Industry-overlay permissions (lenders, sub-DSAs, commissions, payout grids, loan documents) ship with the BFSI presets and are documented under By industry when each preset goes live.
Custom roles
If the five system roles don't fit, you can build a custom role with any combination of permissions and a per-module visibility scope. Common cases we see:
- Sales Ops — like Manager but with
everythingscope andreports:readon every entity - Support Agent — read-only on contacts + deals, write on tasks + activities
- Junior Rep — like Member but without
deletepermissions
Create custom roles at Settings → Roles → New role. Custom roles can be edited and deleted; system roles cannot.
Who can manage roles
The roles:manage permission gates the Roles page. By default, only Owner and Admin have it. Manager can read the roles list (so they know who has what) but cannot edit.
You cannot change your own role to one that would lock you out — TatvaCRM blocks this. You also cannot delete the last user with the Owner role. If you genuinely need to step away, promote another user to Owner first.
What next
- Teams and visibility — how to structure teams so the
teamscope behaves correctly - Contacts overview — see the visibility rules in action