Campaigns
Campaigns let you reach many CRM contacts at once - by WhatsApp, SMS, or voice - from a single, trackable job instead of messaging people one by one. Use them for appointment reminders, promotions, service notifications, payment reminders, or automated outbound calling. Each campaign targets a contact list, sends through a messaging channel, can be scheduled for a specific date and time, and records per-contact delivery status so you can measure results and follow up on failures.
Campaign Grid
The campaign grid lists all campaigns for the current tenant.
Filtering
| Filter | Description |
|---|---|
| Type | WhatsApp, SMS, or Voice |
| Status | Draft, Scheduled, Running, Paused, Completed, or Cancelled |
| Name | Search by campaign name |
Grid Columns
| Column | Description |
|---|---|
| Name | Campaign name |
| Type | Color-coded badge: WhatsApp (green), SMS (blue), or Voice (purple) |
| Status | Color-coded status: Running (green), Scheduled (blue), Paused (amber), Completed (gray), Cancelled (gray strikethrough) |
| Target List | The contact list this campaign targets |
| Channel | The messaging channel used for delivery |
| Progress | Sent count vs. target count with percentage |
| Scheduled At | When the campaign is scheduled to run |
| Created | When the campaign was created |
Creating and Editing Campaigns
Click Add to create a new campaign or the edit icon on any row to modify an existing one.
Common Fields
| Field | Description |
|---|---|
| Name | Required. A descriptive name for the campaign |
| Type | WhatsApp, SMS, or Voice. Controls which additional fields appear |
| Status | Draft, Scheduled, Running, Paused, Completed, or Cancelled. Defaults to Draft |
| Target List | The contact list to send to |
WhatsApp Fields
Visible when Type is set to WhatsApp:
| Field | Description |
|---|---|
| Channel | The messaging channel configured for WhatsApp delivery |
| Template | An approved WhatsApp message template |
SMS Fields
Visible when Type is set to SMS:
| Field | Description |
|---|---|
| Channel | The messaging channel configured for SMS delivery |
| Message Body | The text content of the SMS message |
Voice Fields
Visible when Type is set to Voice:
| Field | Description |
|---|---|
| Caller ID | The outbound caller ID number |
| Queue | The queue to route connected calls through |
| Max Concurrent | Maximum simultaneous outbound calls. Defaults to 1 |
| Max Retries | Number of retry attempts for failed calls. Defaults to 0 |
| Retry Delay | Seconds to wait between retries. Defaults to 60 |
| AMD Enabled | Enable answering machine detection |
| AMD Action | What to do when a machine is detected: hang up or leave voicemail |
Scheduling
All campaigns include scheduling fields. The calling hours window is a compliance and courtesy control: even if a campaign is scheduled or running, messages and calls are only sent within the allowed hours (in the specified timezone), so you avoid contacting people late at night or outside the hours permitted in their region.
| Field | Description |
|---|---|
| Timezone | Displayed above the date/time selectors. Uses the tenant timezone |
| Year / Month / Day / Hour / Minute | The scheduled send date and time, shown in the tenant timezone |
| Calling Hours Start | Earliest time of day to send (HH:MM format) |
| Calling Hours End | Latest time of day to send (HH:MM format) |
| Calling Hours Timezone | Timezone for the calling hours window |
Notes
An optional free-text field for internal notes about the campaign.
Campaign Members
Each campaign tracks delivery status per contact. The campaign members grid (accessible from the campaign detail view) shows:
| Column | Description |
|---|---|
| Contact | The contact name |
| Phone | Contact phone number |
| Contact email | |
| Status | Delivery status (pending, sent, delivered, failed, etc.) |
| Attempts | Number of delivery attempts |
| Sent At | When the message was sent |
| Delivered At | When delivery was confirmed |
| Disposition | Outcome code |
| Error | Error message if delivery failed |
Worked example: a WhatsApp appointment-reminder campaign
A dental office wants to WhatsApp every patient with an appointment next week. They already have an approved appointment_reminder template and a WhatsApp messaging channel.
- Build the audience. Create a List
Reminders Week 30- either a static list you add patients to, or a dynamic list whose criteria select next week’s appointments. - Test on yourself first. Make a one-row list containing only a staff WhatsApp number and run steps 3-6 against it before touching real patients.
- Create the campaign. Under Campaigns, click Add. Set Name
Week 30 reminders, TypeWhatsApp, Target ListReminders Week 30. - Pick channel and template. In the WhatsApp fields, choose your WhatsApp Channel and the approved Template
appointment_reminder. (WhatsApp requires an approved template to start a business-initiated conversation - a plain body will not do.) Template variables like{{1}}(name) and{{2}}(date) fill from each contact’s CRM fields if you mapped them on the WhatsApp account. - Schedule inside calling hours. Set the send date/time, and set Calling Hours to
09:00-18:00in the patients’ timezone so nothing goes out at 6am even if the job starts early. Set Status toScheduled. - Send and review. At the scheduled time the status moves to Running and per-contact rows fill in. Afterward, open the Campaign Members grid and filter for
failedto catch bad numbers or opt-outs, fix the data, and re-target if needed.
Campaigns require the campaigns_enabled flag on the tenant (see below); if you do not see the Campaigns screen, ask your system administrator to enable it.
Best practices
- Test on a small list first. Create a short list of internal or trusted numbers and run the campaign against it before sending to your full audience.
- Respect opt-in and opt-out. Only message contacts who have consented for the channel, and prefer templates that include opt-out instructions. See the Message Templates compliance options.
- Set realistic calling hours. For voice and SMS, keep the window within business hours in the recipient’s timezone to reduce complaints and improve answer rates.
- Use WhatsApp templates for the first touch. WhatsApp only allows business-initiated conversations through approved templates, so a campaign that starts a new conversation must use one.
- Review the members grid after sending. Filter for
failedto find bad numbers or opt-outs, correct the data, and re-target if appropriate.
Feature Flag
Campaigns require the campaigns_enabled flag to be enabled on the tenant. This is configured by the system administrator in the tenant settings.
Related documentation
- CRM Lists - build the target audience (static or dynamic).
- Messaging Channels - the sender identity used for delivery.
- Message Templates - reusable, compliant message bodies with variables.
- WhatsApp Accounts - approved WhatsApp templates for business-initiated messages.