SabNode
    ProductsFeaturesEnterpriseCustomersPartnersResourcesPricing
    AllConversationsAutomationCustomer DataGrowthAnalyticsCommerceDeveloperExplore products
    1. Home
    2. Features
    3. Customer Data
    4. Opt-in Tracking
    CRM · Compliance

    Know exactly who said yes — and when, where, how

    Opt-in Tracking captures per-channel consent across WhatsApp, Email, SMS and Web Push with source attribution, timestamp, and the literal text the contact saw. Auto-honor opt-outs at send time. Export the audit log for DLT, GDPR, DPDP and CCPA reviews. Never accidentally message someone who said stop.

    • Per-channel consent (WhatsApp, Email, SMS, Push)
    • Source attribution with original UI snapshot
    • Auto-enforce at send time across modules
    • Exportable audit log for DLT, GDPR, DPDP
    Feature signature
    SabNode . CRM
    Opt-in Tracking

    Per-channel consent tracking with audit log and export.

    Live
    100%
    sends checked against current consent state
    <50ms
    consent check latency per outbound
    0
    opted-out contacts ever messaged via the pipeline
    The problem

    A single mis-sent broadcast costs more than the campaign

    Most teams treat opt-in as a checkbox in their signup form and never think about it again. They store "subscribed = true" somewhere, the broadcast tool reads it, and as long as nothing breaks, life is fine. Then a customer who explicitly typed STOP in WhatsApp last month gets a Diwali promotion, posts a screenshot on Twitter, and the brand spends a week apologising. Or worse — Meta flags the WhatsApp Business account for repeated unsolicited messaging and the account is suspended for 24 hours during peak season.

    The industrial-strength version of this problem is the regulatory audit. India's DPDP and TRAI DLT regimes require provable consent per channel per purpose. Europe's GDPR requires the same. When the regulator asks "show me proof that contact X consented to marketing WhatsApp on date Y", a CSV with "subscribed=true" does not cut it. They want the form snapshot, the timestamp, the IP, the literal consent text. Most CRMs cannot produce this and the legal team starts a six-figure remediation project.

    Opt-in Tracking in SabNode is consent infrastructure, not a checkbox. Every consent capture records source, timestamp, IP, the exact consent text shown, and the channel scope. Every send checks current status before dispatch. Every opt-out triggers a re-confirm flow if the contact later re-engages. The audit log is regulator-ready by design.

    What it is

    Opt-in Tracking, in depth.

    A Contact has independent opt-in status for each channel — WhatsApp, Email, SMS, Web Push, Voice. Status is a four-state enum: subscribed (active, can be messaged for marketing), service-only (only transactional messages, common for WhatsApp 24-hour service window), opted-out (no messaging of any kind), unknown (no consent captured yet). The send pipeline checks current status before every outbound. A marketing template to an opted-out contact fails fast with a logged "consent block" event, never reaching the BSP.

    Capture is multi-source. Web forms with a consent checkbox component record the IP, user agent, form ID, page URL, and the exact consent text shown. WhatsApp opt-in via interactive button (the customer clicks "Yes, subscribe me") records the message ID and timestamp. Imports support a consent-source column for backfilling historical permissions with attribution. API endpoints accept consent metadata on every write. Every capture path produces the same auditable artifact.

    Updates are bidirectional. Outbound: a contact who replies STOP to a WhatsApp broadcast triggers an automatic opt-out across the channel, confirmation message, and DLQ block for any in-flight sends to that contact. Outbound email unsubscribe link does the same for email. Inbound: a contact who messages "subscribe" or clicks an explicit re-opt-in button gets status flipped back with a fresh attribution record. The preference center (a hosted page or embeddable widget) lets contacts manage their own consent across all channels with a single link, audited.

    Compliance export is built in. The audit endpoint returns every consent state change for a contact, with full attribution, on demand. Bulk export for tenant-wide audits runs as a background job and produces a regulator-ready CSV or PDF with the timestamps, sources and consent text. For India, the DLT registration ID can be attached to each capture. For EU, lawful basis (consent, legitimate interest, contract) is selectable per capture. For California (CCPA), do-not-sell flags are first-class. The compliance team should never need to ask engineering for a query again.

    Capabilities

    Everything you get with Opt-in Tracking.

    7 capabilities
    01

    Per-channel four-state consent

    WhatsApp, Email, SMS, Web Push, Voice each have independent status: subscribed, service-only, opted-out, unknown. Marketing sends require subscribed. Transactional (OTP, order updates) honors service-only. Opted-out blocks every send including transactional unless explicitly overridden with audit.

    02

    Source attribution per capture

    Every consent change captures source (web form ID + URL + IP, WhatsApp button ID, import job, manual edit, API call), timestamp, user agent, and the literal consent text the contact saw. Regulator-ready evidence by default, not as a bolt-on.

    03

    Auto-enforce at send time

    Every outbound checks current consent before dispatch. Blocked sends log a structured "consent block" event with the reason. No more "we accidentally sent to an opted-out list" — the platform makes it impossible to bypass.

    04

    STOP and unsubscribe handling

    Inbound STOP, UNSUBSCRIBE, OPT-OUT messages on WhatsApp trigger automatic opt-out, confirmation reply, and DLQ-block for in-flight sends. Email unsubscribe links do the same. Reply analysis configurable per language so Hindi and regional opt-out keywords work.

    05

    Re-engagement flow

    When an opted-out contact later sends an inbound message, the platform routes to a configurable re-engagement flow — typically asking explicit re-subscribe before treating them as marketable. Prevents the "they messaged us so they must want our newsletter" misinterpretation.

    06

    Preference center

    Hosted page (or embeddable widget) where contacts manage consent across all channels with one link. Includes purpose-level granularity ("marketing", "product updates", "billing reminders") when configured. Every change captures attribution like any other source.

    07

    Compliance export

    On-demand audit export per contact or tenant-wide. CSV or PDF with attribution, timestamps, consent text and channel. India DLT registration ID, EU lawful basis, CCPA do-not-sell flags all first-class. Regulator-ready without engineering involvement.

    Use cases

    Built for the way teams actually work.

    D2CCase 01

    D2C WhatsApp marketing compliance

    Web form has an explicit "I agree to receive WhatsApp marketing from Brand X" checkbox with the consent text. Submission records IP, page URL, exact text. Customer who later replies STOP gets opted out automatically with confirmation. Tenant-wide audit export pulled monthly for the legal team's compliance review.

    Financial ServicesCase 02

    NBFC DLT-compliant lending nudges

    Each WhatsApp template registered with TRAI DLT carries a registration ID. Capture path records the DLT ID alongside consent. Send pipeline blocks any send where the contact's consent does not match the DLT scope. Regulator audit pulls the export and verifies template-to-consent linkage instantly.

    EdTechCase 03

    EdTech multi-purpose consent

    Student opts in to "exam updates" and "course offers" as separate purposes. Marketing broadcasts target only consenting purposes. Student can later opt out of offers but keep exam updates via the preference center. Granular consent improves long-term subscription retention.

    HealthcareCase 04

    Healthcare appointment vs marketing

    Patient opt-out blocks marketing but preserves transactional appointment reminders via service-only status. Critical for clinics that want to respect "do not market to me" without missing safety-critical reminders. Audit log distinguishes the two so compliance can demonstrate the intentional design.

    SaaSCase 05

    Cross-border GDPR for SaaS

    EU contacts captured with lawful basis = consent for marketing, contract for transactional. Right-to-erasure requests honored via the contact-delete flow that purges PII but preserves anonymised consent log for proof of compliance. Audit export structured to the EDPB recommended format.

    How it works

    From signup to first send in minutes.

    Opt-in Tracking is included on every SabNode workspace. No separate billing, no extra setup, flip it on from your workspace settings.

    1. 01

      Configure channels and purposes

      Enable channels (WhatsApp, Email, SMS, Push). Optionally define purposes (marketing, product, billing) for granular consent. Set the default state for newly-created contacts (unknown by default, never subscribed).

    2. 02

      Capture consent at every touchpoint

      Web form components, WhatsApp opt-in buttons, import flows, API endpoints — every source captures attribution automatically. Configure the consent text once and it propagates to all sources.

    3. 03

      Enforce on every send

      Send pipeline checks current status before dispatch. Blocks marketing to non-subscribed, blocks all to opted-out. Logged consent-block events surface in the audit feed and DLQ analytics.

    4. 04

      Handle opt-out gracefully

      STOP keyword detection per language flips status to opted-out, sends a confirmation, blocks in-flight sends. Re-engagement flow routes any future inbound through a re-confirm gate before treating the contact as marketable again.

    5. 05

      Export and audit

      Tenant-wide audit export on demand. Per-contact history queryable via UI and API. Regulator-ready CSV or PDF with all attribution. Compliance team self-serves without engineering tickets.

    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.

    Meta WhatsApp Cloud APIMailchimpGmailOutlookTwilioOneTrustTRAI DLTGoogle Forms

    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 Opt-in Tracking.

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

    What if I import contacts with consent from another platform?
    The import CSV supports columns for consent state per channel, source attribution, original capture timestamp, and the consent text shown at the original capture. The import preserves these as the canonical audit record — no data loss when migrating from Klaviyo, Mailchimp, Interakt, or another CRM. We recommend backfilling the original consent text where available; if not, the import flags those contacts as "legacy consent" so the legal team can decide whether to re-confirm.
    How is the WhatsApp 24-hour service window handled?
    Inside the service window (a contact has messaged you in the last 24 hours), free-form messages are allowed regardless of marketing consent because the contact initiated the conversation. Outside the window, only approved templates can be sent, and only to contacts with subscribed or service-only status for the channel. The send pipeline encodes this logic so flows do not need to track the window state manually — try to send outside the window without a template and the node fails with a clear reason.
    Can I override consent for a specific send?
    Only with explicit admin RBAC permission and an audit reason. The override is logged with the user who triggered it, the reason text, and the affected contacts. This exists for legitimate exceptions — emergency safety notification, regulatory required notice — but is intentionally cumbersome so it cannot be used as a daily workaround. Most tenants disable override entirely; the workflow then routes legitimate exceptions through legal review.
    How does the preference center work?
    The preference center is a hosted page at `prefs.sabnode.com/{tenant}/{contact_token}` (or your custom subdomain). The token is a signed JWT embedded in outbound email and WhatsApp unsubscribe links. The contact lands on a page showing their current consent per channel and per purpose, with toggles to update. Changes are captured with full attribution (timestamp, IP, user agent, the page state). Embedded widget version is available for customers who want it inside their own logged-in UI.
    What happens during contact merge for consent?
    Consent state takes the more restrictive value across the two contacts being merged — if one is opted-out and the other is subscribed, the merged contact is opted-out. This prevents accidental opt-back-in through a merge. Both source histories are preserved in the merged contact's audit log so the compliance team can trace exactly when each state change happened, on which source contact, regardless of the merge.
    Are double opt-in workflows supported?
    Yes for email by default — a contact who opts in via a form gets a confirmation email and is marked subscribed only after they click the confirmation link. The audit log captures both the initial opt-in and the confirmation. For WhatsApp, the convention is single opt-in via explicit button click since the channel itself requires opt-in to start; if you want stronger evidence, you can configure a follow-up confirmation message that requires a "yes" reply before marking subscribed.
    How long is the consent audit log retained?
    Five years by default on standard plans, configurable up to ten years on enterprise. This covers most regulatory windows globally — India DPDP recommends three years post-deletion, EU GDPR varies by purpose, RBI requires up to seven for financial communications. After retention expires, the log is purged but a summary row remains (count of state changes, last known state) for backwards-compatibility with billing and metrics. The full export should be archived externally if longer retention is needed.
    Related features

    Stronger when stacked.

    Browse every feature
    Contacts
    Every conversation becomes a contact record — auto-deduplicated.
    Read more
    Segments
    Dynamic audiences from any signal. Reuse across flows, broadcasts and AI.
    Read more
    Broadcasts
    Ship Meta-approved templates to 100k+ contacts. Live delivery reporting.
    Read more
    Template Library
    In-app approval flow, variable preview and version history.
    Read more
    CRM · Compliance

    Ship opt-in tracking 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