SabNode
    ProductsFeaturesEnterpriseCustomersPartnersResourcesPricing
    AllConversationsAutomationCustomer DataGrowthAnalyticsCommerceDeveloperExplore products
    1. Home
    2. Features
    3. Customer Data
    4. Contacts
    CRM · Customer Data

    One record per human, no matter the channel

    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.

    • Automatic identity resolution across channels
    • Conversation timeline from every surface
    • Custom fields, tags and segments built in
    • Bulk merge, edit and export
    Feature signature
    SabNode . CRM
    Contacts

    Every conversation becomes a contact record — auto-deduplicated.

    Live
    92%
    identity resolution accuracy on benchmark
    50,000
    contacts per bulk operation
    <200ms
    p95 resolution latency per inbound event
    The problem

    The CRM duplication graveyard

    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.

    What it is

    Contacts, in depth.

    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

    Everything you get with Contacts.

    7 capabilities
    01

    Identity resolution engine

    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.

    02

    Unified timeline

    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.

    03

    Custom fields with types

    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.

    04

    Bulk operations

    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.

    05

    Manual merge with conflict resolution

    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.

    06

    Opt-in tracking per channel

    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.

    07

    Import and CSV workflows

    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

    Built for the way teams actually work.

    D2CCase 01

    D2C identity unification post-migration

    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.

    Financial ServicesCase 02

    Fintech KYC field gating

    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.

    SaaSCase 03

    B2B SaaS account-contact hierarchy

    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.

    HealthcareCase 04

    Healthcare patient deduplication

    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.

    EdTechCase 05

    Education lead consolidation

    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

    From signup to first send in minutes.

    Contacts is included on every SabNode workspace. No separate billing, no extra setup, flip it on from your workspace settings.

    1. 01

      Bring contacts in

      Import via CSV, sync from Shopify, sync from HubSpot, or let inbound channel messages create contacts automatically. Each path runs through identity resolution.

    2. 02

      Identity resolution runs

      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.

    3. 03

      Custom fields populate

      Set fields from flows, imports, the API, or by hand. Validation rules enforce schema. Field history captures every change for audit.

    4. 04

      Operate at scale

      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.

    5. 05

      Export and integrate

      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.

    Plays well with

    Works with the tools you already ship on.

    Connect directly with your existing stack or leverage the Platform Core tools to extend capabilities natively.

    ShopifyHubSpotSalesforceGoogle SheetsMailchimpPipedriveRazorpayStripe

    Platform Core Tools

    Enhance this feature with deep integrations into our core infrastructure. Connect via API, utilize webhooks, or embed directly using our SDKs.

    • Unified Dashboard Apps

      Manage all settings seamlessly within the core UI.

    • Developer APIs and Webhooks

      Extend functionality with custom automated workflows.

    Frequently asked

    Questions about Contacts.

    Can't find what you're looking for? Talk to our team.

    How does identity resolution decide a strong match versus fuzzy?
    Strong match: identical phone in E.164 form, or identical email (case-insensitive, normalised), or identical platform ID (WA-ID, Instagram user ID, Shopify customer ID). These auto-merge silently. Fuzzy match: similar email (one-character edit distance), same phone with different country code, same name and address but different phone. These enter the review queue with a confidence score and the human picks. Rules are configurable per tenant — finance teams typically dial up strictness, D2C teams dial down.
    Can I undo a merge?
    Yes, within 30 days. Every merge captures the pre-merge state of both records. Unmerge restores both contacts with their original fields and splits the timeline events back to whichever record they originally belonged to. After 30 days the snapshot is purged for storage reasons but the audit log retains the metadata (who, when, what fields).
    What happens to contacts when a message comes from an unknown phone?
    Three configurable behaviors. (1) Auto-create with minimum data (phone + first message) — default for D2C. (2) Queue for human review before creating — common for B2B where every lead is high-touch. (3) Reject and route to a "stranger inbox" without creating a CRM record — useful when you want to filter spam before it pollutes the database. Setting is per-channel so WhatsApp can auto-create while Email can require review.
    How are custom field histories tracked?
    Every change to every field is logged with timestamp, source (flow node, API call, manual edit, import), and the previous and new values. Audit log is queryable per contact ("show every change to kyc_status for contact X") and exportable. Retention is two years on standard plans, seven years on enterprise — covers most regulatory windows.
    Can contacts have multiple phone numbers or emails?
    Yes. Each contact can hold multiple identifiers of each type with one designated as primary. Inbound messages match against any of them and update the contact accordingly. Outbound respects the primary by default but flows can target any specific identifier ("send to email of type=work"). This handles the common pattern where customers have a personal and work email or two phones.
    Does the CRM scale to millions of contacts?
    Yes. Production tenants run 5M-30M contacts comfortably. The contact list is virtualised, segments are materialised incrementally, search is backed by a dedicated index. Bulk operations stream rather than buffer so memory is bounded. We pre-scale tenants approaching 10M contacts to ensure consistent latency. If you are starting above 5M, talk to us and we will pre-provision.
    How are GDPR and DPDP delete requests handled?
    A delete request via the admin UI or API soft-deletes the contact, anonymises personally identifiable fields, retains the contact ID and aggregate metrics for billing and analytics. After 30 days the soft-delete promotes to hard delete and the row is purged from the operational store. Messages are scrubbed to a placeholder ("deleted by user request") so threads do not break. Audit log of the deletion is kept indefinitely as legal proof.
    Related features

    Stronger when stacked.

    Browse every feature
    Segments
    Dynamic audiences from any signal. Reuse across flows, broadcasts and AI.
    Read more
    Tags
    Multi-value tags with auto-apply rules and bulk edit.
    Read more
    Custom Fields
    Structured properties on any contact or deal — text, date, number, JSON.
    Read more
    Opt-in Tracking
    Per-channel consent tracking with audit log and export.
    Read more
    CRM · Customer Data

    Ship contacts into production this week.

    No credit card. No sales call required. Spin up a workspace, plug in a number, and your team is live in under an hour.

    Start free Book a demoSee pricing
    SabNode

    SabNode is the operating layer for customer conversations. Chat, automation, CRM, broadcasts, commerce and AI in one workspace.

    Talk to sales
    Conversations
    Browse
    Automation
    Browse
    Customer Data
    Browse
    Growth
    Browse
    © 2026 SabNode. All rights reserved.
    PrivacyTermsStatusContact