theQuickAssist.cotheQuickAssist.co

Introduction

  • Overview
  • Quickstart Guides

Getting Started

  • Get Your API Key

API Reference

  • Webhooks

Create intelligent AI assistants for your website in minutes without coding.

TheQuickAssist is a product of Prominno Labs Pvt. Ltd.

Solutions

  • Real Estate
  • Healthcare
  • Education
  • E-Commerce
  • IT Companies
  • Marketing Agencies
  • Hotels & Restaurants
  • Travel Agencies
  • Salons & Spas
  • Banking & Fintech

Free Tools

  • All Free Tools
  • WhatsApp Chat Button
  • WhatsApp QR Code Generator
  • Free WhatsApp Link Generator

Quick Links

  • AI Chatbot
  • Pricing
  • Blogs
  • Contact Us
  • Documentation

Company

  • Affiliate Program
  • Cancellation & Refunds
  • Shipping
Trustpilot
InstagramFacebookTwitter
theQuickAssist.co

2026 TheQuickAssist.co. All rights reserved.

Privacy PolicyTerms of ServiceCookie Policy
Documentation/Webhooks

Webhooks

Webhooks provide real-time notifications for WhatsApp events. Receive instant updates when messages are delivered, read, or when template status changes occur.

How Webhooks Work

When specific events occur in your WhatsApp account, TheQuickAssist sends a POST request to your configured webhook URL with event details. This enables real-time integration with your backend systems.

1

Event Occurs

Message sent, delivered, or read

2

POST Request

Webhook payload sent to your URL

3

Process Event

Your server handles the notification

Supported Events

Incoming Messages

Triggered when a customer sends a text, image, location, contact card, audio, interactive response, or click button to your WhatsApp Business number.

Message Status Updates

Triggered when a template or session message status changes (sent, delivered, read, or failed).

Campaign & Template Triggers

Forwarded for any other webhook payloads sent by Meta that belong to your configured phone number (e.g. quick reply button clicks).

Webhook Payload (Meta WABA Format)

All webhook notifications are forwarded to your server using the exact raw Meta WABA payload format:

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "WABA_BUSINESS_ACCOUNT_ID",
      "changes": [
        {
          "field": "messages",
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "16505553333",
              "phone_number_id": "1234567890"
            },
            "contacts": [
              {
                "profile": { "name": "Customer Name" },
                "wa_id": "1234567890"
              }
            ],
            "messages": [
              {
                "from": "1234567890",
                "id": "wamid.HBgLMTIx...",
                "timestamp": "1718520000",
                "text": { "body": "Hey there!" },
                "type": "text"
              }
            ]
          }
        }
      ]
    }
  ]
}

Setup Guide

1

Create an Endpoint

Set up a public HTTPS endpoint on your server that can receive POST requests. The endpoint must return a 2xx status code to acknowledge receipt.

2

Configure Webhook

In your chatbot dashboard, navigate to Settings → API Keys → Webhooks. Enter your webhook URL and optionally save a Webhook Secret.

https://yourdomain.com/webhooks/whatsapp
3

Verify Signature

Verify webhook signatures to ensure requests are authentic and from TheQuickAssist:

const signature = req.headers['x-webhook-signature'];
if (!signature) return res.status(401).send('Missing signature');

// Extract hash from signature format (sha256=hash)
const parts = signature.split('=');
const signatureHash = parts.length > 1 ? parts[1] : parts[0];

const payload = JSON.stringify(req.body);
const expected = crypto
  .createHmac('sha256', WEBHOOK_SECRET)
  .update(payload)
  .digest('hex');

// Use timingSafeEqual to prevent timing attacks
const matches = crypto.timingSafeEqual(
  Buffer.from(signatureHash, 'hex'),
  Buffer.from(expected, 'hex')
);

if (!matches) {
  return res.status(401).send('Invalid signature');
}

Webhook Security

  • Always use HTTPS endpoints
  • Verify webhook signatures
  • Implement idempotency checks
  • Return 200 status quickly to avoid retries