Broadcasts & Campaigns
Broadcasts let you send a WhatsApp template message to multiple contacts at once. They’re perfect for promotions, announcements, order updates, and re-engagement campaigns.Creating a Broadcast
- Go to Broadcasts → Create Broadcast
- Configure the broadcast:
- Click Preview Recipients to see the first 10 matching contacts and total count
- Confirm and click Send
Recipient Targeting
Broadcasts target contacts by tags. All contacts matching any of the selected tags will receive the broadcast (OR logic). Only contacts with:optedIn: true- Active status (not deleted)
Scheduling
Scheduled broadcasts use the BullMQ queue backed by Redis. A per-org Redis lock (
lock:broadcast:org:<id>, 30-min TTL) ensures one org’s large broadcast cannot monopolise the worker pool.
Broadcasts sent via WhatsApp Connect (rather than the Cloud API) are throttled deliberately slower — a capped rate with randomized jitter between sends — to keep the linked device’s send pattern looking natural and avoid a ban. This is automatic and not user-configurable.
A/B Testing (Variants)
Instead of committing to one template for the whole broadcast, you can add two or more variants — each its own template, with a weight controlling what share of recipients gets it. Kaanha AI assigns each contact to a variant deterministically (the same contact always lands in the same variant across re-sends, so you can compare performance cleanly) and reports delivery/read stats broken down per variant, so you can see which message actually performed better.Delivery Stats
After a broadcast completes, you’ll see a delivery funnel:Frequency Cap
To prevent spam, Kaanha AI enforces a frequency cap:- MARKETING category templates: max 1 per contact per 24 hours
- UTILITY and AUTHENTICATION templates: no cap
Drip Campaigns (Sequences)
Sequences are automated multi-step message flows triggered by contact events.Creating a Sequence
- Go to Sequences → Create Sequence
- Configure:
- Trigger:
tag_added,contact_created, ormanual - Steps: Add message steps with delay between each
- Trigger:
- Save and activate
Step Types
Condition Branches
Condition steps have If Yes and If No paths:Enrollment
Contacts are enrolled in a sequence via:- Manual enrollment: Contacts → [Contact] → Enroll in Sequence
- API:
POST /api/sequences/enroll - Automatic: when trigger condition is met