WhatsApp Outbound Campaigns

WhatsApp Outbound Campaigns

Overview

You can use the WhatsApp channel to send outbound campaigns or single outbound messages using pre-approved templates.
These templates must be approved by Meta or Kaleyra, depending on your provider.

Once a message is sent using a template, it opens a 24-hour customer service window during which agents can freely exchange messages with the user.
This window starts the moment the first WhatsApp template is delivered → Explore Meta’s messaging limits.

When configuring WhatsApp outbound campaigns, remember to also check the settings available under Settings → General → WhatsApp Campaigns. Read more

Requirements

  • To send outbound campaigns or to allow agents to send single outbound messages (through templates), you need to use Meta or Kaleyra as providers

  • To use Kaleyra as provider you need to register an account at Kaleyra Login and configure an account on XCALLY following the relative wiki

  • To use Meta as provider, you need to register a Facebook Developers account on Meta for Developers (to create a WhatsApp Business App).
    Then you have to configure an account on XCALLY following the relative wiki

  • Moreover on your Facebook Developers account, you can access messaging insights at WhatsApp Manager > Overview Dashboard > Insights tab to check your messaging limits (explore here official Meta documentation)

Explore how to create WhatsApp Templates

 

Create a WhatsApp Campaign

You can create a new WhatsApp Campaign, by clicking on WhatsApp → WhatsApp Campaign → + Add Campaign

image-20241015-102949.png

 

  • Insert campaign Name

  • Select Provider (Meta or Kaleyra)

  • Choose Account (Meta/Kaleyra type)

  • Select WhatsApp Templates (only approved templates are shown). The eye icon shows a template preview

  • Insert sending Interval

  • Indicate Response Timeout (expressed in days, minimum 1): specifies the time window during which a customer’s reply is considered valid and associated with the campaign. After this period, any response is treated as a separate interaction

  • Hopper history duplicate check: defines the number of past days (1-7) to check for duplicate contact duplicates in the hopper history. If left blank, duplicate checking is skipped.

  • Include customers with active interactions: allows you to send the campaign even to contacts currently in an active conversation with an agent.
    ⚠️ Option disabled by default, to avoid confusing the customer during ongoing chats.
    Use this option when needed—for instance, in mass notifications, such as a service number change.

  • Close interaction on quick reply response: when enabled, the system automatically closes the interaction if the customer replies using a quick reply button

  • Start date: set the exact start time for the campaign. If left blank, the campaign will start immediately upon saving

  • Click on Add WhatsApp Campaign

To determine the cost of sending conversations based on the selected template category, please refer to the official Meta pricing documentation, where you can download the pricing file corresponding to your local currency.
Consider that Meta charges per conversation, not per message. A conversation is defined as the exchange of messages in the 24-hour time window, tarting from the first message sent

After creating a campaign, it will appear in the campaign list with a corresponding status.
For example, the status will display RUNNING once the campaign has started.

image-20240410-163816.png

 

In this section, all created campaigns are displayed by default. You can filter campaigns by account to view only those associated with a specific WhatsApp provider or configuration.

By clicking the three-dot menu (⋮) next to a campaign, the following options are available:

  • Edit WhatsApp Campaign

  • Add List

  • Add Block List FROM VERSION 3.63.0

  • Stop WhatsApp Campaign

  • Start WhatsApp Retry Campaign

  • Delete WhatsApp Campaign

To send a campaign, you must add a contact list. Lists must be previously created in Contact Manager → Lists.
Phone numbers must be formatted with the international prefix, without the "+" sign (e.g., 393402211333).
Lists can be added in two ways:

  • From the three-dot menu (⋮) next to the campaign → Add List

  • While editing the campaign → click the green "Add List" button

The campaign will send messages to numbers in the Phone Contact field.

Starting from version 3.50.0, if only the phone or mobile field is filled, the system will automatically copy the number to the other field.
✅ It is strongly recommended to insert the same number in both the phone and mobile fields to ensure proper delivery.
Explore at this link Phone and Mobile contact fields management on WhatsApp channel.

When adding contacts:

  • If the Account List (Master List) already contains a contact with the same phone number, and this contact is also present in the campaign list (whatsapp_hopper), any custom fields or variable values will be synchronized across both lists.

  • This ensures data consistency when using variables in WhatsApp templates.

For Meta Accounts, non-existing numbers pass directly in hopper history tab with reason Message Undeliverable. This can occur in the following cases:

  • recipient's number is not associated with a WhatsApp account

  • recipient has not accepted the latest Terms of Service and Privacy Policy

  • recipient is using an outdated version of WhatsApp

For Kaleyra Accounts, non-deliverable numbers pass directly in hopper history tab with reason ‘To’ number invalid or WhatsApp account does not exist

If the campaign attempts to send a message to a phone number with fewer than 5 digits, the contact remains in the hopper with the error
Contact with invalid phone number: {{phone_number}}. The phone number should have at least 5 digits.
📌 Phone numbers must contain at least 5 digits to be considered valid for campaign delivery.

Contacts Block List

from version 3.63.0

WhatsApp campaigns allow the configuration of Block List, lists of contacts that must not receive the WhatsApp template message.

image-20260316-134814.png

Within the WhatsApp campaign configuration interface, users can add a negative list by selecting the Block List option (red list icon).

 

When a campaign is executed, the system performs a validation check before sending each message:

  1. The system verifies whether the contact’s phone number is present in the Block List.

  2. If the number is found in the Block List:

    • The message is not sent.

    • The contact status in the Hopper History is set to BLOCK_LIST.

Contacts with invalid phone numbers can optionally be added to the Block List.

  • If a Block List is configured in the campaign: contacts included in the Block List are skipped and recorded with status BLOCK_LIST.

  • If no Block List is configured: contacts with invalid phone numbers are automatically treated as Invalid Number, the message is not sent and the final Hopper status is FAILED with reason Invalid Number.

 

Edit a campaign

By clicking Edit on a WhatsApp campaign, you can access detailed configuration and performance data:

image-20241015-103217.png

 

  • Settings displays general information about the campaign, such as name, provider, template used, and configuration options.

image-20241015-103310.png

 

  • Hopper provides a real-time overview of contact statuses within the campaign:

    • total number of contacts in the campaign

    • fresh, so contacts that have not yet been messaged

    • retry, contacts that previously failed and are eligible for another attempt

    • pending, contacts who have received the message and are awaiting response

    • closed, contacts who completed the interaction (e.g., by responding to the message)

  • Pending tab: contacts in pending status after sending the template message waiting for a response. A contact remains in Pending status until they reply or the campaign ends.

  • Contacts History shows the outcome of the campaign for each contact, including responses received and status per contact

  • At the top of the campaign editor, a blue action bar contains two key icons:

    • Green iconAdd List: attach a new list of contacts to the campaign.

    • Red iconReset List: resets all contacts in the hopper to Fresh status, allowing the campaign to resend messages to previously handled contacts.
      ⚠️ Use with caution: all previously contacted recipients will receive the campaign again

 

For contacts that failed to receive the message, you can initiate a retry:

  • Open the campaign menu ( three dots)

  • Select Start WhatsApp Retry Campaign

image-20240503-071516.png

You may perform multiple retries, as long as they fall within the campaign's configured duration window.

Only temporary failures (e.g., network issues) will be retried. Permanent failures (e.g., non-existent WhatsApp accounts) will be skipped.
Errors that allow retry are due to, for example:

  • temporary network problem

  • invalid template (temporary invalidity decided by Meta)

  • temporary authentication error

  • “Contact has an open interaction with another campaign” option (when the other campaign will be closed, you will be able to retry sending desired template).

 

Campaign status

A running campaign can be stopped by clicking on the 3 dots in the campaign → Stop WhatsApp Campaign

So stop a campaign means pause the campaign while it’s running. In this way messages that haven’t been sent yet will not go out and it can be resumed, by clicking on Start WhatsApp Campaign.

Moreover you can delete or cancel your campaign:

  • cancel option updates the status campaign to CANCELED, hiding it from the interface, but keeping it in the database

  • delete option removes the row also from the database

In both cases, it is not possible to restore the campaign, so if you need to resume it, you can only choose the Stop campaign option to make it inactive and reactivate it if necessary.

 

Campaign interactions

When a campaign is launched, the system first checks whether the contact is already involved in an active campaign interaction.
If an open interaction exists, the contact remains in Pending status until the previous interaction is closed. This prevents overlapping conversations and ensures consistent tracking.

To view active or completed interactions navigate to: WhatsApp Accounts → ⋮ (three dots menu) → Go to Interactions

Here you can monitor the status of each conversation:

  • Open – The contact has not replied yet.

  • Closed – The contact has sent an answer, and the interaction has been processed

 

Scenario

You configure a campaign asking:

"How would you like to be contacted?"
with quick reply buttons: Phone call | WhatsApp message | Email

  • If the customer answers within the configured Response Timeout, the system:

    • Records the selected option

    • Closes the campaign interaction → Status: Closed

    • Opens a 24-hour Customer Service WindowStatus: Open (for agent follow-up). Agent can manage the conversation (by reading the sent template message and relative customer’s answer

If the customer does not respond, no further messages can be sent.
The system displays: No messages can be sent since we are waiting for the customer's response.

  • If the customer responds after the Response Timeout expiration, the campaign interaction is:

    • Closed, as it is no longer valid for the campaign

    • A new agent interaction is opened → Status: Open
      (conversation continues as an inbound message)

 

  • Even if the response does not match any of the quick reply options (e.g., the customer replies manually with "Please contact me by phone"), the system:

    • Keeps the campaign interaction in Pending

    • Opens a new agent-managed conversationStatus: Open

To inspect the ongoing or past conversation with a contact, navigate to the campaign list → Click the three-dot menu (⋮)Spy. This opens a detailed view of the template message and the customer's replies.