Bulk WhatsApp Message
Introduction
A Bulk WhatsApp Message is a campaign document that sends one WhatsApp template to many recipients in a single operation. The campaign is submitted, the system queues each individual sent to a background worker, and an individual WhatsApp Message record is created and dispatched per recipient. Progress is tracked on the campaign record, and failed sends can be retried without resending successful ones.
Path in the application
[Path to be confirmed: navigate to Bulk WhatsApp Message in iVendNext Desk.]
Prerequisites
Before you create a Bulk WhatsApp Message, you need:
At least one active WhatsApp Account configured in iVendNext.
An APPROVED WhatsApp Templates record for the message you want to send. The template must be approved by Meta before any bulk campaign can use it.
A recipient list — either prepared in advance as a WhatsApp Recipient List, or ready to be entered directly into the campaign as individual recipients.
For Unique variable type campaigns: per-recipient data stored in the recipient list's Recipient Data field.
A background worker running in the long queue. Bulk sends are dispatched via background jobs.
Permissions on the iVendNext site equivalent to System Manager or higher.
How to create
Open a new Bulk WhatsApp Message record.
Enter a Title for the campaign. The campaign is auto-named with a series prefix (e.g. BULK-WA-2026-00001).
Set Recipient Type to either Individual Recipients or Recipient List:
For Individual Recipients, add rows in the recipients table. Each row needs Mobile Number, Recipient Name, and optionally Recipient Data as a JSON object.
For Recipient List, select an existing Recipient List from the dropdown. The list's recipients are read at send time.
Set Use Template and select the Template to send. The WhatsApp Account is populated from the template's account, but you can override it to send through a different account.
Set Variable Type to either Common or Unique:
Common — every recipient gets identical placeholder values. Enter the values once in Template Variables as a JSON object (e.g. {"name": "Valued Customer", "discount": "15"}).
Unique — each recipient gets values from their own Recipient Data. Leave Template Variables empty; the system reads each recipient's Recipient Data at send time.
Optionally attach a file in Attach — applied to every message in the campaign as a template attachment.
Save the record. The campaign is in Draft status.
Submit the record to start the campaign. The status moves to Queued, then In Progress as the background worker begins processing. Status finalises as Completed (all sent) or Partially Failed (some failed).
Features
Two recipient modes
Recipients can be entered directly into the campaign as Individual Recipients for one-off sends, or pulled from a saved Recipient List for reusable segments. The recipient list approach is the default for any campaign sending to a group that might be reused later.
Two variable modes
Common mode sends the same template values to every recipient — useful for general announcements where there is nothing per-recipient to substitute. Unique mode sends different values to each recipient, drawn from each recipient's Recipient Data. The same template can be used in either mode depending on the campaign.
Background processing
On submit, the system enqueues each recipient's message as a separate background job on the long queue. The default job timeout is 4,000 seconds, sufficient for typical bulk sizes; this can be increased in system configuration for very large campaigns.
Individual message records per recipient
Each recipient receives a dedicated WhatsApp Message record, with the campaign reference stored in Bulk Message Reference. This means every send is independently queryable, has its own status, its own message ID, and its own delivery and read receipt history.
Live progress tracking
The Recipient Count, Sent Count, and Status fields update as the campaign runs. The Get Progress button refreshes the counts on demand. Status transitions are: Draft → Queued → In Progress → Completed or Partially Failed.
Retry failed messages
When a campaign finishes with some failed messages, the Retry Failed button on the campaign record requeues only the failed individual messages. Successful messages are never re-sent. Failures can occur from invalid recipient numbers, customers who have blocked the business, or transient API errors.
Variable substitution from Recipient Data
In Unique variable mode, the system reads each recipient's Recipient Data JSON at send time and uses the values to populate the template placeholders in order. The JSON key order determines the placeholder order.
Template attachment
The Attach field accepts a single file (typically a PDF or image) that is included with every message in the campaign as a template-level attachment. Customers receive the message and the attachment together.
Account override
The campaign normally sends through the WhatsApp Account that owns the template. The WhatsApp Account field on the campaign can override this, sending the campaign through a different account if needed.
Submittable workflow
Bulk WhatsApp Message is a submittable document, meaning the campaign is locked once submitted and a new amended copy must be created to revise it. This enforces an audit trail at the campaign level.
Reporting
The Bulk WhatsApp Status report aggregates campaign progress across all campaigns — total recipients, sent, failed, queued, and completion percentage. Useful for finance and operations review.