Every WhatsApp message, Instagram DM, email reply, web chat or webhook call resolves to a single contact record in SabNode CRM. Identity resolution merges phone numbers, emails and social handles automatically. Custom fields stay populated. Opt-in status follows. The same human, the same timeline, the same conversation.
Look inside any growing business's CRM and you will find the same wreckage: Priya Sharma exists three times. Once with her phone, once with her email, once with her Instagram handle. Each ghost has a partial history. Marketing campaigns hit her three times. The support team has no idea she is the same person who complained last quarter. The finance team sees three "customers" and reports inflated active counts.
The usual fix is "we will run a deduplication job next sprint", which never happens, or "we are migrating to a new CRM", which buys 18 months before the new system has the same problem. The actual problem is not a data hygiene issue — it is an architecture issue. Most CRMs assume each tool (WhatsApp, email, web form) creates a contact, with no built-in resolver. Tools accumulate, contacts accumulate, the mess accumulates.
SabNode CRM is built on a unified identity model from day one. Every signal that arrives — a WhatsApp message, an email reply, a webhook from Shopify with a phone, an Instagram DM — is matched against the contact graph. Strong matches merge; weak matches surface for human review. The result is one record per human, period. Marketing sees one Priya. Support sees one Priya. Finance counts one Priya.
A Contact in SabNode is an identity-resolved customer record. Each contact has a stable internal ID and a set of identifiers — phone numbers (E.164), emails, Instagram username, WhatsApp WA-ID, Shopify customer ID, custom external IDs. When a new event arrives carrying any of these identifiers, the resolver looks up the contact graph. Exact match merges into the existing record. Fuzzy match (similar email at same phone, same name and address) surfaces in a merge queue for human approval. No match creates a new contact. This happens transparently before the event hits any flow or inbox.
Every contact carries a full timeline. Inbound and outbound messages across WhatsApp, Instagram, Web Chat, Email; flow executions the contact was in; broadcasts the contact received; orders, payments, refunds from connected commerce; CRM stage changes; tag adds and removes; opt-in events; agent notes. The timeline is searchable, filterable by channel or event type, exportable. An agent who picks up a conversation tomorrow has the full context — last support ticket, last purchase, last marketing nudge — without leaving the contact page.
Custom fields turn contacts into structured records, not just chat partners. Define fields with types (text, number, date, boolean, JSON, file reference) and validation rules. Populate them via flows ("after KYC, set `kyc_verified=true`"), via CSV import, via the REST API, or manually. Fields drive segments, gate flow branches, personalise templates, and surface in agent UIs. The CRM scales from "chat with a customer" to "operate a regulated financial product" without rebuilding the data model.
Bulk operations are pragmatic for the real-world mess. Multi-select up to 50,000 contacts at a time. Edit a field, add a tag, move them through a Kanban stage, trigger a flow, export to CSV, opt out of a channel. Merge two or twenty duplicates with field-by-field conflict resolution. Filter by anything — last message older than 90 days, segment X minus segment Y, opt-in status false on WhatsApp but true on email. The CRM is built to be operated, not just admired.
Capabilities
Match contacts across phone (E.164), email, WA-ID, Instagram handle, Shopify ID and custom external IDs. Strong matches auto-merge with full audit. Fuzzy matches surface in a review queue. Configurable rules per tenant — strict for finance, lenient for D2C.
Every event from every channel lands on the contact timeline — messages, flows, broadcasts, orders, stage changes, tags, opt-ins, notes. Searchable, filterable, exportable. The single place to see the customer relationship across two years.
Define text, number, date, boolean, single-select, multi-select, JSON, and file-reference fields. Validation rules, default values, required flags. Fields populate from flows, imports, API or manual entry. Drive segments, branches and personalisation.
Select up to 50,000 contacts at once. Edit, tag, move stage, trigger flow, opt out, export, delete. Every bulk action is undoable for 24 hours with a single click. Audit log captures who did what to which segment.
Pick two contacts that should be one. The merge UI shows every field side-by-side with the conflict highlighted; pick a value per field or let the rule engine decide (newer wins, longer wins, manual). Messages and events combine into one timeline.
Each contact has independent opt-in status per channel (WhatsApp, Email, SMS, Web Push). Updates respect the channel-specific consent rules — WhatsApp opt-in via service window, email via double opt-in. Audit log retains every state transition for compliance.
CSV import with column mapping, validation, dry-run preview, and conflict resolution against existing contacts. Imports above 50,000 rows process in the background with email completion. Supports re-import to update fields without creating duplicates.
Use cases
Brand migrated from Mailchimp + Interakt + Shopify and arrived with 340,000 records across three systems. Importer resolved 220,000 unique contacts via phone+email matching. The 7,000-row merge queue cleared in 48 hours with two ops people. Marketing CTR jumped because dedup eliminated duplicate-send penalty.
Custom field `kyc_status` enforced per contact. Flow Send Template node skips contacts where status != "verified". Compliance segment surfaces unverified contacts for ops follow-up. Custom field history lets the audit team trace exactly when KYC moved to verified for any contact.
Custom field `company_id` links multiple contacts to one account. Filter shows all contacts at a company, total LTV, latest churn risk. AE's working a renewal see every person at the customer with their role and engagement, not just the champion they normally talk to.
Clinic chain across 14 branches kept creating duplicate patients when the same person visited a different branch. Identity resolution on phone+DOB merged 18,000 duplicates. Patient timeline now spans branches. Doctors see full history. Reduced no-shows because reminder targeting is accurate.
Same student fills inquiries via the website, WhatsApp, and Instagram DM. CRM resolves all three to one contact. Counsellor sees the full inquiry sequence and intent signals. Replaces a manual spreadsheet match the team used to run weekly. Lead-to-enrollment time drops 40%.
How it works
Contacts is included on every SabNode workspace. No separate billing, no extra setup, flip it on from your workspace settings.
Import via CSV, sync from Shopify, sync from HubSpot, or let inbound channel messages create contacts automatically. Each path runs through identity resolution.
On each new record or event, the resolver checks the contact graph. Strong matches merge silently. Fuzzy matches enter the review queue with a confidence score.
Set fields from flows, imports, the API, or by hand. Validation rules enforce schema. Field history captures every change for audit.
Filter, segment, tag, bulk-edit, bulk-trigger. The same UI scales from one contact to 50,000 in a single action with progress and rollback.
Export filtered slices to CSV, push to BigQuery via the export connector, or query via the REST API. Contacts power everything downstream — broadcasts, flows, AI, analytics.
Connect directly with your existing stack or leverage the Platform Core tools to extend capabilities natively.
Enhance this feature with deep integrations into our core infrastructure. Connect via API, utilize webhooks, or embed directly using our SDKs.
Manage all settings seamlessly within the core UI.
Extend functionality with custom automated workflows.
No credit card. No sales call required. Spin up a workspace, plug in a number, and your team is live in under an hour.