In production
Customer-zero · running on our own VPS, our own two businesses

Your WhatsApp history, mirrored into your CRM — every change leaves a SHA-256 fingerprint.

334,246 of our own messages, 85% auto-linked to clients, 65% to leads — re-importable end-to-end in ~2 minutes.

whatsapp-vault
Tamper-evident by construction
Survives deletion
In-context customer history
Search by what was said
The problem

WhatsApp is where deals actually happen — quotes, promises, approvals, document hand-offs — but it's the one channel with no institutional memory. It evaporates (disappearing messages, delete-for-everyone, phone resets); it lives on a personal handset, not in your business; it's invisible to your CRM; and it can be edited or denied. “They promised X but the message is gone” is a recurring, unwinnable argument — and a real exposure when a regulator or court later asks what was said.

How it works

From setup to second nature.

01

Sync from the phone

The encrypted WhatsApp Business message store and media tree are pulled from the business Android device, decrypted and shipped to the server. The phone stays read-only — nothing is ever written back.

02

Import idempotently

A Python importer upserts into your CRM database in ordered passes, keyed on WhatsApp's internal message ID. Re-running is safe; the importer short-circuits when nothing has changed.

03

Link to CRM records

Each WhatsApp identity is matched to your existing clients and leads by phone number, and invoices or contracts named in chats are cross-referenced back to the CRM.

04

Search and view in context

Open any customer and a WhatsApp tab shows the full relationship inline. Global search spans every chat — by name, message text, or extracted entities like GSTIN and PAN — with jump-to-message and highlighted context.

What's inside

Inside WhatsApp Vault.

Tamper-evident by construction

An append-only, hash-chained audit log (each row's SHA-256 chains the prior), an insert/select-only DB user, BEFORE DELETE triggers that refuse deletion, and immutable original-text columns. A verification script walks the chain and alerts if a link breaks.

Survives deletion

Once a message lands, it is not removed or destructively overwritten. Disappearing-message expiry, delete-for-everyone, chat deletion and phone resets do not propagate to the archive.

In-context customer history

Each customer's CRM page gains a WhatsApp tab: message count, attachments, time span, recent messages inline, recent topics, and a flag when a customer has unanswered messages.

Search by what was said

Hybrid search combines full-text bodies, contact metadata and entities extracted from message text — so a GSTIN typed into a chat becomes findable even though WhatsApp has no such field.

Auto-linking to your CRM

WhatsApp identities match to clients and leads by phone, and modern @lid privacy identifiers are resolved back to real numbers so privacy-mode customers stay searchable.

Rich types & secure media

Locations, calls and contact cards render with their real side-data, not blank chips. Media bytes live on disk, served only through HMAC-signed, short-expiry URLs.

Proof, from our own operations

Numbers from running it ourselves.

Every figure here is measured on our own business — customer zero. No external clients, no projected numbers.

  • 334,246 messages archived on our own stack.
  • 85% of WhatsApp contacts auto-matched to CRM clients; 65% matched to leads, by phone number.
  • 13,866 entities extracted from message bodies — 617 GSTINs, 1,477 PANs — all searchable.
  • Full re-import in ~2 minutes on the live dataset.
  • Tamper-evidence is real and in code today: hash-chained audit, delete-refusing triggers, immutable text columns, signed media URLs.
  • A real “missing customer” bug was traced to WhatsApp's @lid privacy mode and fixed, recovering ~1,131 previously-dropped chats.
Who it's for

Who actually uses this.

Service SMBs that close on WhatsApp

Agencies, consultancies, virtual-office and property operators tired of staff scrolling a phone to reconstruct what was promised.

Compliance & record-keeping teams

Anyone needing an auditable, regulator- or court-defensible record that survives customers deleting messages and stays searchable by GSTIN, PAN or phone.

Multi-site operators

Businesses running more than one brand or location that want each unit's WhatsApp history archived under one schema, on infrastructure they control.

Under the hood

The stack

WhatsApp BusinessCRM-native modulePython importerMariaDBSHA-256 hash chainHMAC-signed mediaIdempotent syncEntity extraction@lid resolutionSelf-hosted
Integrations
  • Your CRM, natively. Ships as a module using the CRM's own permission system — search, view and download next to invoices, contracts and tickets. Built on Perfex CRM at customer zero.
  • WhatsApp Business message store. Reads the encrypted msgstore plus the media tree from the business Android device; the phone stays read-only.
  • Client / lead records. Auto-links WhatsApp identities to existing clients and leads, and cross-references invoices and contracts named in chats.
FAQ

Straight answers.

Is this real-time, or a sync?+

Today it's a sync-from-phone archive, not a live feed. A near-real-time webhook adapter is designed but not yet shipped — and WhatsApp Coexistence doesn't expose group chats to the API, so groups stay phone-synced even once live capture lands. We'd rather be honest than imply a feature we haven't built.

Can it send messages or reply for me?+

No. WhatsApp Vault is read-only by design. It archives, links and searches; replies still happen in WhatsApp itself. Outbound messaging is on the roadmap, not in the shipped product.

Can I delete data for a DPDP request?+

Yes, but with rails. The deletion path is a three-flag DPDP tool, not a button — designed to log who deleted what, why, and when, with an audit trail. The vault tables refuse deletion without the explicit flag.

How do I know the archive hasn't been tampered with?+

Every audit row is SHA-256-chained to the previous one, the audit table is permanently insert-only, vault tables refuse deletion without an explicit flag, and a verification script walks the chain to prove integrity.

In production

Where this honestly stands

In production at customer zero: the importer, multi-table vault schema with delete-refusing triggers, the CRM module, auto-linking, entity extraction, @lid resolution and rich types — with an end-to-end smoke suite. On the roadmap (labelled as such): real-time / Coexistence capture, outbound messaging, and a bulk voice-note transcription pass. Every metric here is a measured count from our own deployment.

Scope a pilot of WhatsApp Vault.

Tell us your workflow on a 30-minute call. We'll show you how this runs for us and how it would run for you.

30 minutes · no obligation · we reply within 1 business day