Overview
Sending a WhatsApp campaign in Mumble is built from three steps that must run in this order: create a message template and get it approved by Meta, upload an audience that has given opt-in and add it to a list, and send the campaign itself. This article walks through each step with the right fields in the interface, the rules that can sink a campaign, and what you can pull from the report that appears after sending.
The most important point: campaigns are a Pro-plan-and-up feature, and you cannot send any message to a customer who hasn’t opened a conversation in the last 24 hours without an approved message template.
Background: why a campaign always starts with a template
The WhatsApp Business API operates on the conversation-window rule: the moment a customer messages a business, a 24-hour window opens during which you can send them any free-form message. Outside that window, or to a customer who has never reached out, you may only send message templates that Meta has approved in advance.
Because every campaign is by definition sent to a large audience that hasn’t necessarily written in the last hour, a Mumble campaign can only run on an approved message template. That’s why the first step in any campaign is creating the template, not choosing the audience.
Before you start
Three baseline requirements to confirm before you build a campaign:
- The right plan. Campaign sending is available on the Pro plan and up. The basic plan doesn’t include campaigns at all. On the basic plan, a message template can only be sent manually from the chat or through the API.
- Documented opt-in from your customers. You may not send a campaign to numbers that have not given explicit consent to receive messages on WhatsApp. Purchased lists, contacts you collected from your phone, or “consent” buried in general terms of service do not count for Meta. Sending without opt-in damages the sender number’s Quality Rating and can get it blocked.
- Valid phone format. International numbers, digits only, no plus sign and no leading zero. For Israel: 972501234567. The wrong format is the number-one reason a campaign fails to reach a customer.
Step 1: Create a message template and submit it for approval
In Mumble, message templates live on a single screen under the Templates tab. At the top of the screen are three filters (Approved, Pending, and Rejected) and a purple button in the corner to open a new template.
The form fields
- Template name. English only, no spaces, with underscores as separators (for example: summer_sale_2026). Maximum 30 characters. Names with Hebrew characters, spaces, or special symbols are rejected automatically by a validation check that runs before the request even reaches Meta. There’s no way around it.
- Category. Three categories to choose from:
- Marketing: promotions, launches, cart abandonment, surveys, re-engagement.
- Utility: order updates, payment confirmations, appointment reminders, account alerts.
- Authentication: OTP codes, password resets, login verifications. Text only, no links, no images, no emojis.
- Language. One language per template. You cannot mix Hebrew and English in the same template.
- Header type. None, text, or media (image, video, document, audio). A text header cannot contain variables.
- Message body. Up to 1024 characters. Supports variables {{1}}, {{2}}, {{3}}, and so on, in order, with no gaps.
- Footer (optional). Short free text, no variables.
- Buttons (optional). Up to 10 buttons in three types: Quick Reply (a quick response that returns to the system and can branch the flow in the chatbot), URL (opens a website), and Phone (places a call). For marketing templates with Quick Reply, we recommend using the opt-out word picker. Choosing from it automatically fills in the button text and the footer field, and ensures Mumble recognizes the tap as an opt-out.
The three mistakes behind most rejections
- Wrong category. If a template contains even a single marketing element, Meta will classify it as Marketing even if 90% of the content is service-related. An order update with the sentence “and don’t miss this week’s sale” is billed as Marketing, not Utility. When in doubt, split it into two templates.
- A variable at the start or end of the body. A variable cannot be the first or last character in the content. Two variables also can’t be adjacent ({{1}}{{2}}). There must be fixed text between them.
- Sensitive content. Financial promises, health claims, political content, or links to shortened domains (bit.ly, tinyurl). All of these are rejected. Use your business’s full domain.
Important to know: you cannot edit a message template after creating it. If it’s rejected, you delete it and create a new one with the corrected content and a different name (names must be unique within the account). Meta approval usually takes anywhere from a few minutes to 24 hours.
Step 2: Upload customers and add them to a list
A campaign’s audience is selected by list, a list that is attached to customers. So before you reach the campaign screen, you need to make sure all your customers are in the system and assigned to the right list.
The right way: importing from a CSV file
On the Customers tab there’s a + button that opens a menu with four actions. We recommend starting with the Sample file option and downloading it. The file contains the exact column headers Mumble expects to see:
| Column name | What it contains | Required? |
|---|---|---|
| full_name | Customer’s full name | Yes |
| phone | Phone number, digits only, no plus sign and no leading zero | Yes |
| country_code | Two-letter country code (for example IL, US, GB) | Yes |
| Email address | No | |
| description | Free text about the customer | No |
| label_name | Name of the list to attach the customer to. If the list doesn’t exist, it’s created automatically. | No, but recommended |
| agent_name | Name of the agent to assign | No |
You can add more columns that match the names of custom fields in your account. If you add a column with a name that doesn’t exist, Mumble will create a new field (up to a maximum of 15 custom fields per account).
Once the file is ready, return to the + menu and choose Import new customers.
The format that sinks imports
The most common import mistake is the phone format. WhatsApp requires an international number with no plus sign and no leading zero. Examples:
- ✅ Israel: 972501234567
- ❌ Israel: +972-50-1234567, 0501234567, 050-1234567
- ✅ USA: 15551234567
- ✅ UK: 447700900123
Rows with the wrong or missing format will fail to import, or will be sent to the campaign without you knowing they never arrived.
Opt-in: before upload, not after
Meta distinguishes between a contact list and a list of contacts who have given opt-in. In a campaign, these need to be identical. A valid opt-in is one of the following:
- The customer filled out a form with an explicit checkbox: “I agree to receive updates on WhatsApp from [business name].”
- The customer messaged the business first (this constitutes implied consent to the conversation itself, but not necessarily to mass marketing).
- The customer started a conversation through a QR code, a link, or a website widget.
- Verbal consent that was documented. This requires a high documentation standard.
Failing this rule is the number-one cause of quality damage and number blocks. Before importing a large list, verify that the entire data source meets one of these paths.
Step 3: Create the campaign and send it
Once you have an approved template and customers in a list, you can reach the campaign send form via two routes:
- From the Templates screen. Clicking on the name of an approved template leads straight to a send form with the template preselected. This is the fast route for “a template was just approved, I want to send it.”
- From the Campaigns screen. Clicking + opens a template selection and then takes you to the same form. This is the route for “I’m planning a campaign and need to choose which template fits.”
Fields in the campaign send form
The whole form is on one page, a single scroll from top to bottom:
- Campaign name. An internal name for reports, up to 30 characters. Not visible to customers. Choose a name you’ll recognize in a month, because the statistics are saved under it (for example: black_friday_2026, not final_campaign).
- Send as a bot campaign. Optional. Selecting a chatbot to handle replies to the campaign instead of having them land in the regular chat. Useful when you expect a large wave of automated replies (catalog requests, recurring questions). Available on the Pro plan and up.
- Actions. Three optional actions that fire on every recipient at send time:
- Add customer to a list: automatic assignment to a tracking list (for example “Received the Black Friday 2026 campaign”). Essential for identifying who still needs the next campaign and who has already been reached.
- Change the customer’s status: move to one of the 18 conversation statuses.
- Choose who to assign the customer to: routing replies in advance to a specific agent or team.
- Choose who to send to. The audience, two options:
- By list: send to everyone assigned to one or more lists.
- Manual selection: hand-picking individual customers. Useful for test rounds and repeat sends to a specific group.
- Dynamic variable. Appears if the message template contains {{1}}, {{2}}, etc. See the detail in the next paragraph.
- Is this a scheduled send? Choosing to schedule opens a date and time picker. Otherwise the send is immediate.
Dynamic variables: free text vs. a system field
For every variable in the template ({{1}}, {{2}}…), the form offers two ways to fill it:
- Free text. The same value is sent to every recipient. Useful for a shared discount code, an event date, or the campaign name (for example {{1}} = SUMMER25).
- System field. Clicking a dynamic variable opens a list of fields that resolve per individual customer. From the picker you can choose full name, first name, last name, email, phone, country, and any field defined in the account’s custom fields.
The most common combination: {{1}} = first name, and in the body “Hi {{1}}, your order {{2}} has shipped” where {{2}} is a custom field populated during import (such as order_id). This is the way to do real personalization, not one uniform value for the whole list.
Immediate or scheduled send
A scheduled send lets you schedule in advance by the account clock (the clock is set in account settings, defaulting to the Israel time zone). Worth knowing:
- A scheduled campaign can be canceled but not edited. If you want to change something after scheduling, you cancel and create a new one.
- Large campaigns are sent in batches under Meta’s rate limit over 24 hours. There’s no value in trying to send them all in the exact same second.
- The send time affects open rates. The report that appears after the campaign shows the golden hour, the range in which most recipients opened the message. For the next campaign, schedule it half an hour before that range.
Duplicate warning: a customer in multiple lists
If you select more than one list in the audience field, a customer who appears in several of them will receive the message once for each list they’re in. There’s no automatic deduplication. Two common cases where this happens:
- Sending to both the “All customers” list and the “This week’s leads” list. Anyone in both will get two messages.
- Sending to lists created in separate imports without realizing they overlap.
When sending to multiple lists, check for overlap before sending (a plan counts messages, and every duplicate message is an additional charge). If you still want to cover overlaps, merge them into one combined list before sending.
What you see after sending
After sending (or scheduling), the campaign appears on the Campaigns screen in its own row with the campaign name, total messages, template name, date, and open rate. Clicking the campaign name opens the statistics report.
Campaign insights
At the top of the report are five cards:
- Golden hour. The range (for example 10:00 to 10:59) in which the most recipients opened the message.
- Percentage of messages opened during the golden hour. For example 9.91%.
- Number of media replies. How many recipients replied with media (image, video, document, audio).
- Time elapsed since the campaign started. Shown in HH:MM:SS format. Relevant for campaigns that stretch over long hours.
- Campaign cost. The total expected Meta charge in dollars, aggregated across all messages.
If the message template had buttons, a per-button click breakdown appears below the insights.
Per-customer message delivery status
The bottom table in the report shows every recipient: name, lists, phone number, and message status: sent, delivered (reached the device), read, failed, pending.
The data updates in real time. Refreshing the page shows progress in real time. In the actions column there’s an icon that opens the customer’s chat in one click. Useful when you spot a recipient who replied and want to continue with them directly. This is also how you can isolate everyone who didn’t read and act on it later: manual follow-up, or a separate list for a re-engagement campaign to run later.
Examples
A marketing campaign with personalization
A store with a VIP list and a custom field called last_purchase. The message template (vip_july_offer, Marketing category):
Hi {{1}}, we saw that {{2}} was a hit with you 😊
This month we put together a personal offer just for you: 25% off the new collection.
Valid through the end of the week.
In the campaign send form: {{1}} = first name (system field), {{2}} = last_purchase (custom field). Audience: the VIP list. Action: add customer to the list “Received July 2026 VIP offer.” One URL button leading to the catalog.
A utility campaign for an operational update
A company that changed its operating hours. Message template (hours_update_2026, Utility category):
Hello {{1}}, starting next week our operating hours are changing: Sunday through Thursday, 09:00 to 17:00.
You can reach us any time through this chat, and we’ll get back to you during business hours.
In the form: {{1}} = first name. Audience: the Active customers 2026 list. No buttons, no extra actions. Significantly lower cost than the Marketing category, and the template isn’t at risk of rejection because it contains no marketing content.
Common issues
The message template was rejected
Reason: in most cases, the wrong category (marketing content in a template classified as Utility), a variable at the start or end of the body, or a link to a domain that looks untrustworthy.
Fix: read the rejection reason that appears on the template card, delete the template, and create a new one with a different name and corrected content. You cannot edit an existing template; this is a Meta limitation, not a Mumble one.
The campaign was sent but some customers didn’t receive it
Reason: usually the wrong phone format (a leading zero, a plus sign, or spaces), the wrong country code, or a number that doesn’t exist on WhatsApp.
Fix: in the campaign report, filter the table to the failed status. For everyone listed there, check their phone field on the customer card. Fix the format and export them to a separate list for a repeat send.
Customers in multiple lists received the message twice
Reason: you selected more than one list in the audience field, and customers who appear in several of them received it once per list.
Fix: in the next campaign, if multiple lists overlap, create one combined list before sending (export the lists, merge, re-import), or remove customers from one of the lists before sending.
Very low open rates
Possible reason: sending at an irrelevant hour, recipients who never gave opt-in and therefore ignore the message, or a message that’s too long and too promotional.
Fix: open the previous campaign and look at the golden hour, then schedule the next one half an hour before it. Check the Quality Rating of the sender number in settings. Consider splitting the message into something shorter and more precise.
The campaign was scheduled but didn’t go out
Possible reason: the list was empty at send time. Mumble won’t throw an error in this case; the campaign simply finishes with zero messages.
Fix: make sure the list is populated before the send time. For campaigns scheduled a week ahead, consider checking an hour before that it hasn’t emptied out (customers who moved to another list, opted out, etc.).
Related articles
- Creating a message template in Mumble
- Message template statuses and rules
- Importing and uploading customers from a file
- Campaign variables and actions
The bottom line
A successful campaign doesn’t hinge on the send button, but on three things that happened before it: a message template in the right category that passed approval, a list of customers who gave opt-in with their phone numbers in international format, and variables filled in per customer rather than as one generic value for everyone.