When to use this module

  • Send a template message to a filtered list of contacts in bulk.
  • Schedule a campaign to fire at a later date/time.
  • View delivery stats and button click analytics per campaign.

Endpoints

MethodRoutePermissionDescription
POST/api/v1/WhatsappCampaignWhatsappCampaign:CreateCreate campaign
PUT/api/v1/WhatsappCampaign/{id}WhatsappCampaign:EditUpdate campaign
DEL/api/v1/WhatsappCampaign/{id}WhatsappCampaign:DeleteDelete campaign
GET/api/v1/WhatsappCampaign/{id}WhatsappCampaign:ViewGet campaign detail
POST/api/v1/WhatsappCampaign/getallWhatsappCampaign:ViewPaginated campaign list
GET/api/v1/WhatsappCampaign/status-countsWhatsappCampaign:ViewCounts by status for tabs
POST/api/v1/WhatsappCampaign/{id}/quick-runWhatsappCampaign:ExecuteImmediately dispatch campaign
GET/api/v1/WhatsappCampaign/dashboard/mainWhatsappCampaign:ViewCampaign dashboard overview
GET/api/v1/WhatsappCampaign/{id}/contactsWhatsappCampaign:ViewCampaign contact delivery list
GET/api/v1/WhatsappCampaign/{id}/button-clicksWhatsappCampaign:ViewButton click analytics
POST

/api/v1/WhatsappCampaign

JSON Request
{
  "name": "May Promo",
  "templateId": "guid-of-template",
  "scheduledAt": "2026-05-28T09:00:00Z",
  "contactFilter": {
    "tags": ["VIP", "Returning"],
    "isActive": true
  }
}
POST

/api/v1/WhatsappCampaign/getall

JSON Request
{
  "pageNumber": 1,
  "pageSize": 10,
  "sortBy": "createddate desc",
  "status": "Draft",
  "nameFilter": "promo"
}
GET

/api/v1/WhatsappCampaign/{id}/contacts

Query Parameters

ParameterTypeDescription
pageintPage number (default: 1)
pageSizeintPage size (default: 20)
searchTermstring?Filter by contact name or phone
statusFilterstring?Pending / Sent / Delivered / Read / Failed

Campaign Statuses

StatusDescription
DraftCreated but not yet dispatched
ScheduledWill auto-dispatch at scheduledAt time
RunningCurrently being dispatched in batches
CompletedAll messages dispatched
FailedDispatch error occurred
CancelledManually cancelled before dispatch