Documentation:Outbound Webhooks

Outbound Webhooks, Event Streams & Security

The event streaming pipeline. Bridge NotifyIQ with your custom backends, CRMs (Zoho, HubSpot, Salesforce), and ERPs. Subscribe to 9 granular WhatsApp and AI event types with cryptographically verifiable HMAC-SHA256 signatures.

1. Purpose of the Page

Outbound Webhooks enable real-time synchronization between NotifyIQ and your existing software stack. Whenever an inbound message arrives, a delivery receipt is acknowledged by Meta, or an AI bot performs a handoff, NotifyIQ dispatches an HTTP POST request to your designated endpoint with millisecond-level latency.

2. Who Uses It (Target Roles)

Backend & API Engineers

Configures receiver endpoints, implements HMAC signature verification, and captures message events.

CRM Administrators

Syncs WhatsApp leads and customer sentiment directly into Zoho CRM or HubSpot contact records.

Operations & Security Leads

Audits delivery health, inspects endpoint response latency, and rotates webhook signing secrets.

Interactive Visual Preview

WebhooksPage.tsx • /settings/webhooks
HMAC-SHA256 Signed
Configured Webhook Subscriptions
Automated retry with exponential backoff on HTTP 5xx errors
+ Register New Webhook
Production CRM Event PipelineActive
https://api.bizeazer.in/v1/integrations/whatsapp-events
Test Ping (POST)Delete
Subscribed Events (4):
message.inboundmessage.statusai.repliedhuman.handover
Last Delivery: 200 OK•Latency: 142ms
Failures: 0 (Optimal)

3. Step-by-Step: Registering an Outbound Webhook

  1. Prepare HTTPS Endpoint: Ensure your receiving server accepts HTTP POST requests with a valid SSL/TLS certificate.
  2. Register Target URL: Click + Register New Webhook. Enter a human-readable description and paste your HTTPS URL.
  3. Subscribe to Desired Events: Check the specific event checkboxes your integration requires (e.g., message.inbound and lead.status_changed).
  4. Copy Signing Secret: NotifyIQ generates a unique 32-character webhook secret. Save this secret in your receiving server's environment variables to verify HMAC signatures.
  5. Send Test Ping: Click Test Ping. NotifyIQ sends a mock payload and measures your endpoint's HTTP response code and round-trip latency.

4. 9 Granular Platform Event Types

Event KeyCategoryTrigger ConditionCommon Integration Use Case
message.inboundMessagingCustomer sends a text or media message to WhatsApp number.Log inbound inquiries into helpdesk ticketing systems.
message.statusMessagingMeta reports message as sent, delivered, read, or failed.Update campaign analytics and read receipts in ERP.
ai.repliedAI & AutomationGemini bot auto-responds using Knowledge Base context.Audit AI response accuracy and track token consumption.
sentiment.analyzedAI & AutomationConversation sentiment classified (positive/neutral/negative/urgent).Trigger VIP alerts or immediate customer churn warnings.
human.handoverAI & AutomationConversation escalated from AI bot to live human agent.Route live ticket to on-duty Slack or Teams channel.
flow.executedAI & AutomationVisual flow automation node finishes execution.Trigger external webhook workflows in Zapier or Make.
lead.status_changedCRM & ContactsLead status or stage updated in Contact Lead Drawer.Update CRM pipeline stages (e.g. Qualified, Proposal Sent).
template.status_changedMeta WABAMeta approves, rejects, or pauses a WhatsApp template.Alert marketing team when broadcast template is approved.
account.quality_changedMeta WABAWABA phone number rating changes (Green / Yellow / Red).Critical operational alerts for high spam rates.

5. Verifying HMAC-SHA256 Signatures in Node.js

Every payload contains the header x-notifyiq-signature-256. Validate the signature against the raw body buffer to ensure the request originated from NotifyIQ:

const crypto = require('crypto');

function verifyNotifyIQWebhook(req, secret) {
  const signature = req.headers['x-notifyiq-signature-256'];
  if (!signature) return false;

  const expectedSignature = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(req.rawBody)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expectedSignature)
  );
}

6. Common Errors & FAQs

What happens if my endpoint goes down?

NotifyIQ queues undelivered events in BullMQ and retries delivery with exponential backoff (up to 5 attempts over 24 hours). If an endpoint fails continuously (>50 consecutive failures), the webhook is automatically marked inactive to protect queue health.

What HTTP response code should my server return?

Your server must acknowledge receipt with an HTTP 200 OK or 204 No Content within 5 seconds. If processing takes longer, ingest the payload into an internal worker queue and return HTTP 200 immediately.