Home/Features/Security and Roles

Trust

Security, Roles and Audit Log

Five built-in roles plus custom module permissions, TOTP two-factor authentication, an immutable audit log, encrypted PII, and a session policy built for real teams.

By Chirag Darji · Updated 26 Aug 2026 · 12 min read

Plans: All plans. Five built-in roles, custom roles, two-factor authentication, the audit log and PII encryption ship on every plan, including Free; there is no security feature reserved for a higher tier.

On this page
  1. What you get
  2. How it works
  3. What can each role actually do?
  4. Why is editing a template a separately grantable permission from creating one?
  5. How does encryption at rest actually work?
  6. Who can actually see a secret value?
  7. What does the session policy actually do, and why does it differ by platform?
  8. What does the audit log actually capture?
  9. With VGraple CRM vs a typical WhatsApp CRM's access controls
  10. Who uses it
  11. What Meta allows
  12. Plans and limits
  13. Recent improvements
Team members in VGraple CRM with owner, admin and agent roles and their permissions

In short

  • Five built-in roles (Owner, Admin, Supervisor, Agent, Viewer) plus fully custom roles with per-module access, enforced server-side on every request
  • TOTP two-factor authentication with backup codes, and an owner-only reset path for a locked-out member
  • An immutable audit log of every data-affecting action, viewable by Owners
  • PII (names, phone numbers, emails) is encrypted at rest with AES-256-GCM; credentials like API tokens and webhook secrets use the same encryption
  • Web sessions expire after 24 hours of inactivity and rotate their token every 6 hours; the Android app uses a 30-day rolling session instead, matched to how a phone is actually used

Security and roles in VGraple CRM cover who on your team can do what, five built-in roles plus fully custom per-module permissions, and how your data itself is protected, encryption at rest, an immutable audit log, TOTP two-factor authentication, and a session policy that expires an idle web login but does not fight how people actually use a phone. What changes for a business is that access control stops being a single "admin or not" toggle: a coaching institute can give an agency's analyst view-only access to Analytics and nothing else, and every write action affecting your data is recorded with who did it and when, reviewable by the one role, Owner, whose own actions are held to the same standard.

What you get

  • Five built-in roles (Owner, Admin, Supervisor, Agent, Viewer) with fixed, server-enforced permission sets
  • Fully custom roles with none/view/edit/full access set independently per one of 12 feature modules
  • TOTP two-factor authentication with backup codes, plus an owner-triggered reset path for a locked-out member
  • An immutable audit log of every data-affecting action, viewable by the organisation Owner
  • AES-256-GCM encryption at rest for PII and credentials, with a searchable shadow column so encrypted fields can still be looked up
  • Secrets (API keys, tokens, webhook secrets) visible only to the Owner and platform super admin, never to Admins or custom roles
  • Rate limiting on public endpoints, Turnstile bot verification on authentication, and a 24-hour idle timeout with 6-hour token rotation on web sessions

How it works

  1. Invite a team member with a role. From Settings > Team, invite by email and assign one of the five built-in roles, or a custom role you have already defined. The invited member's access is enforced from their very first login, server-side, not just hidden in the UI.

Profile settings in VGraple CRM with two-factor authentication

  1. Build a custom role if the five built-ins do not fit. Set each of the 12 modules (Dashboard, Inbox, Contacts, Leads, Broadcasts, Flows, Templates, Analytics, Pipeline, Webhooks, Appointments, Catalog) independently to None, View, Edit or Full, then name and save the role.

  2. Turn on two-factor authentication. From Settings > Profile, enable 2FA, scan the QR code with an authenticator app, and confirm a code. Eight backup codes are shown once at setup for safekeeping outside the app.

  3. Review active sessions from your own profile. Settings > Profile lists every device and browser currently signed in to your account, with "This device" marked, an IP address and last-active time per session, and a Revoke or Revoke All Others control.

  4. The Owner reviews the audit log. Every data-affecting action, a settings change, a template deletion, a member's role change, a broadcast send, is recorded with the acting user, the action, its target, and a timestamp, visible to the Owner from the Audit page.

  5. A locked-out member gets reset, not stuck. If a member loses both their authenticator app and their backup codes, the Owner resets their 2FA from the team page; the member is emailed, and the reset itself is written to the audit log.

What can each role actually do?

Permissions are checked server-side on every request against a fixed set per system role, or against a per-module matrix for a custom role; nothing is enforced only by hiding a button in the interface.

Audit log in VGraple CRM listing every action with actor, resource and details

RoleTeam managementSettingsFlowsBroadcastsTemplatesContactsInboxAnalyticsAudit logLeadsAppointmentsCatalogOrg-level (delete, ownership)
OwnerFullFullFullFullFullFullFull (view all, assign)ViewViewFullFullFullFull
AdminFull (below Owner)FullFullFullFullFullFull (view all, assign)ViewNo accessFullFullFullNo access
SupervisorNo accessPipeline onlyView, toggleView onlyView, toggleView, create, edit, blockFull (view all, assign)ViewNo accessFullView, create, editViewNo access
AgentNo accessNo accessNo accessNo accessNo accessView, create, edit, blockSend, resolve (assigned/unassigned)No accessNo accessView, editView, create, editViewNo access
ViewerNo accessNo accessNo accessNo accessNo accessView onlyView all (read-only)ViewNo accessView onlyView onlyView onlyNo access

Note

A custom role's access to each of the 12 modules is set independently as None, View, Edit or Full, so the table above describes the five system roles' fixed defaults, not the full range a custom role can express. An agency analyst, for example, can be set to View on Analytics and None on every other module.

Why is editing a template a separately grantable permission from creating one?

Editing an already-approved template resubmits it to Meta for review and pauses every broadcast, flow or sequence currently using it while that review is pending; deleting a template reserves its name for 30 days so a hasty resubmission cannot immediately reuse the same name. Both actions carry more operational weight than simply creating a new template, so templates:edit, templates:delete and templates:toggle are distinct, separately grantable permissions from templates:create, letting a Supervisor toggle a template's active state without also being able to trigger a Meta resubmission or reserve a name.

Example

A clinic gives its front-desk Supervisor permission to toggle templates on and off (pausing a seasonal reminder template outside flu season) without granting edit access, so an accidental wording change that would trigger Meta re-review cannot happen from that role.

How does encryption at rest actually work?

Contact PII (names, phone numbers, emails) and sensitive credentials (WhatsApp access tokens, Stripe and Cashfree keys, webhook secrets, AI provider keys) are encrypted with AES-256-GCM before they are written to the database, using a server-side key that never reaches client-side code. Each encrypted value stores its own initialisation vector and authentication tag alongside the ciphertext, so a decryption failure (a key rotation gone wrong, a corrupted row) is detected explicitly rather than silently returning garbage data.

Because an encrypted phone number cannot be matched with a plain SQL WHERE clause, a separate deterministic shadow column is maintained specifically for search and lookup, so finding a contact by phone number does not require decrypting and comparing every row in the table. This is the same searchable-encryption pattern used by any SaaS product that both encrypts PII at rest and needs to look it up quickly.

Who can actually see a secret value?

Credentials, API keys, WhatsApp access tokens, payment gateway keys, webhook signing secrets, are restricted to the organisation Owner and the platform's super admin, deliberately narrower than the general permission system. An Admin can edit almost every organisation setting, but cannot view a secret's raw value, even though they might be the one configuring the integration that uses it; the secret itself stays visible only to the Owner.

Watch out

If your organisation's Owner account changes hands (an employee leaves, a role is reassigned), rotate every secret an outgoing Owner had visibility into, API keys, webhook secrets, connected payment gateway keys, since visibility, not just role membership, is what determines who has seen a given value.

What does the session policy actually do, and why does it differ by platform?

A web (cookie-based) session is treated as expired if it has gone 24 hours without any request, active use never triggers this, only genuine inactivity does, and an active session's underlying token is rotated every 6 hours as a rolling security measure that happens invisibly in the background. The Android app uses a different model entirely: a 30-day rolling bearer session that extends itself on active use and is never subject to the 24-hour idle rule, because a phone's own lock screen and secure keystore are the trusted factor there, and the app has no way to silently re-authenticate the way a browser holding a fresh cookie can.

Note

Two-factor authentication, where enabled, applies identically on both platforms at login; the difference is only in how long an already-authenticated session is allowed to sit idle before it needs to happen again.

What does the audit log actually capture?

Every data-affecting action across the platform, contact creation, edits, deletion, merges and imports; conversation lifecycle events (start, resolve, reopen, assign, snooze); message sends including templates, media and CTA links; every broadcast lifecycle event (create, send, retry, cancel, clone, retarget, export); flow and template changes; member invites, role changes and removals; settings changes including CAPI, payments and inbox configuration; API key creation, rotation and revocation; channel connect and disconnect; and organisation-level events (deactivation, reactivation, ownership transfer). Each entry records the acting user, the specific action, its target, and a timestamp, and the log itself is append-only, visible to the Owner from the Audit page.

With VGraple CRM vs a typical WhatsApp CRM's access controls

Typical WhatsApp CRMVGraple CRM
RolesOften a flat Admin/Agent splitFive built-in roles, granular by design (Owner, Admin, Supervisor, Agent, Viewer)
Custom permissionsRarely available, or an enterprise add-onFull per-module custom roles on every plan
Two-factor authenticationOften missing or email-code onlyTOTP standard, backup codes, owner-assisted reset
Audit trailFrequently absentEvery write action logged, actor and target recorded
Secret visibilityOften visible to any admin-level userOwner and super admin only, a narrower gate than general permissions
PII encryptionRarely stated plainlyAES-256-GCM at rest, with a search-compatible shadow column
Session policyA single fixed timeout for every client24h idle timeout with rotation on web; a 30-day rolling session tuned for mobile

Who uses it

Coaching institutes give an external marketing agency a custom role limited to Analytics view-only, so performance data is visible without any risk to student conversations or contact data. See WhatsApp CRM for coaching institutes.

Clinics rely on the Agent role's narrow permission set (send, resolve, view leads and appointments, no settings or broadcast access) so front-desk staff can do their job without ever touching template approval or channel configuration. See WhatsApp CRM for clinics.

Real-estate agencies use the Supervisor role to let a team lead reassign conversations and manage the pipeline without handing over settings access that could affect the whole agency's WhatsApp number. See WhatsApp CRM for real estate.

D2C stores use the audit log after a seasonal hiring spike to confirm which new agent account made a specific bulk contact change, closing the loop faster than reconstructing it from memory. See WhatsApp CRM for D2C.

What Meta allows

Meta policy

Meta does not define or audit a Tech Provider's internal role and permission system; this is application-level access control built by VGraple CRM. What Meta does require, and what VGraple CRM's role system respects, is that access to WhatsApp-sending capability, and to the credentials that authenticate a WhatsApp Business Account, stays within your organisation's own control and is not exposed beyond what your team explicitly grants.

Plans and limits

Every security and role feature described on this page, five built-in roles, unlimited custom roles, two-factor authentication, the audit log, and PII encryption, ships on every plan, including Free. There is no plan gate on any part of the access control or security system; the only plan-based limits anywhere in VGraple CRM are the agent seat count, contact count, conversation volume, Analytics (Starter and above) and the AI assistant (Growth and above).

Recent improvements

  • 2026-08-22: Payments security review closed three priority findings identified in a dedicated audit, tightening how gateway credentials are handled end to end.
  • 2026-06-12: A round of 16 security fixes shipped from a full platform audit; PII field encryption, a WAF in front of the application, and continuous point-in-time-recovery database backups all went live in the same programme.
  • 2026-06-12: Multi-tenant isolation (every query scoped to organisation id) was verified with automated tests across every API route, not just spot-checked.

Frequently asked questions

What roles does VGraple CRM support?
Five built-in roles, Owner, Admin, Supervisor, Agent and Viewer, each with a fixed permission set, plus fully custom roles that grant none, view, edit or full access independently per module (inbox, contacts, leads, broadcasts, flows, templates, analytics, pipeline, webhooks, appointments, catalog). Every permission check runs server-side on every request, not just as a hidden UI element.
What is the difference between Admin and Owner?
Almost everything an Owner can do, an Admin can too, except viewing the audit log, deleting the organisation, and transferring ownership, which are Owner-only by design, kept that way for accountability rather than convenience. An Admin can still invite and manage Supervisors, Agents and Viewers, and has full access to every feature module.
Can I create a role that only sees analytics and nothing else?
Yes. A custom role can be set to "view" on Analytics and "none" on every other module, exactly the agency-analyst or investor-visibility scenario this was built for; the module access matrix on this page shows every level a custom role can be set to per module.
How does two-factor authentication work?
Standard TOTP (RFC 6238, 30-second codes, compatible with Google Authenticator, Authy and 1Password), enabled per user from Settings > Profile. Eight single-use backup codes are generated at setup for the case where you lose your authenticator device. If a member loses both, the organisation Owner (or a super admin) can reset their 2FA from the team management page; the member is notified by email and the reset is recorded in the audit log.
Who can see the audit log?
The organisation Owner. It is deliberately excluded from the Admin role's permission set, even though Admins otherwise have near-full access, so there is always at least one role whose own actions are still reviewable by someone else.
How is my customer data encrypted?
Personally identifiable fields (contact names, phone numbers, emails) and sensitive credentials (WhatsApp access tokens, payment gateway keys, webhook secrets, AI provider keys) are encrypted at rest with AES-256-GCM using a server-side key never exposed to the application's client code. All traffic between your browser or the app and VGraple CRM is encrypted with TLS.
How can I search for a contact if their phone number is encrypted?
A separate, deterministic search shadow column is maintained alongside the encrypted field specifically so a lookup can match without ever decrypting every row to compare, the same searchable-encryption pattern any serious SaaS product handling PII uses; the encrypted field itself is what gets decrypted only when a matching row is actually displayed.
Who can view API keys, access tokens and other secrets?
Only the organisation Owner and the platform's super admin. Admins, Supervisors, and every custom role are blocked from viewing secret values even when they can edit other organisation settings, a deliberate narrowing separate from the general permission system.
How long does my web session last, and does it log me out while I am working?
A web session expires after 24 hours of inactivity, not while you are actively using it; the countdown only starts from your last request. Active sessions also rotate their underlying token every 6 hours as a security measure, invisibly, with no interruption to what you are doing.
Does the same 24-hour rule apply to the Android app?
No, deliberately. The app uses a 30-day rolling bearer session instead, because a phone's lock screen and secure storage are the trusted factor there, and forcing a re-login after any 24-hour gap would fight how people actually use a messaging app on their phone. See the Android app page for the full session comparison.
Where is my data backed up, and how often?
Databases run with continuous point-in-time recovery (WAL archiving) plus weekly full and daily incremental backups, written off the primary server to separate storage, so a server-level incident cannot take your data with it alongside a live backup.
Can I export or delete my organisation's data?
Contacts and leads can be exported to CSV at any time from within the product. For a full account export or deletion, VGraple CRM's Data Processing Agreement documents the retention and deletion terms that apply on account closure. VGraple CRM also implements Meta's required Data Deletion Callback for Facebook-linked data, so if a user removes the app from their Facebook account, their linked Pages and Facebook-sourced leads are automatically deleted with a confirmation status page.

Run your WhatsApp on VGraple CRM

Free forever plan, official Meta WhatsApp Business API, set up in 15 minutes. No card needed.