👥 Broadcast audiences and templates
Audiences: recipient lists
What an audience is
An audience is a list of phone numbers you want to send a broadcast to. You can create several of them: "Almaty customers", "VIP customers" and so on.
How to create an audience
- On the broadcasts page click 👥 Audiences
- Click "+ Create audience"
- Enter a Name (required) and a Description (optional)
- Click "Create"
Adding contacts
Option 1: manually
- Click "+ Add contact"
- Enter the Phone (required) and the Name (optional)
- Click "Add"
Tip: you can type the number in any format:+77771234567,87771234567,77771234567: the system will figure it out.
Option 2: import from a file
- Click "📤 Import"
- Pick a file: Excel (XLSX, XLS), CSV or TXT
- The system shows a preview: the first 5 rows
- Check the phone column: it is detected automatically by its header
- Check the name column (optional)
- Click "Import (150)"
Tip: extra columns (City, Company) are saved as variables you can insert into the text:{City},{Company}.
Excel uploads as is: you don't need to convert the file to CSV. Long numbers won't turn into "3.8E+11": they are read as plain text.
For WABA broadcasts those columns come in handy when you pick what to insert: on the "Parameters" step you choose what goes into each template field, such as the name, the phone or a specific column from your file.
CSV example:
Phone;Name;City
+77771234567;Ivan Petrov;Almaty
+77779876543;Maria Sidorova;Astana
Contact statuses
| Status | What it means |
|---|---|
| 🟢 Active | The number is valid, the message will be sent |
| 🔴 Invalid | No WhatsApp on the number, or the number is wrong |
| ⚪ Unsubscribed | The recipient opted out of broadcasts |
Unsubscribed and invalid contacts never receive a broadcast. Even if the status changed after the campaign started, such a recipient is skipped and the report shows the reason.
🚫 The "Unsubscribe" button in an HSM template
Add a quick reply button "Unsubscribe" to your HSM template. When the recipient taps it, the system automatically sets their number to Unsubscribed in all of your audiences.
- They will not receive any of your broadcasts again, even if you upload the list again from another file or create a new audience.
- The tap shows up in the chat, so your operator sees that the customer has opted out.
- The button text must start with "Unsubscribe". For templates in Russian, use «Отписаться».
- Only the button unsubscribes. If a person types "unsubscribe" as a regular message, the status does not change automatically.
Why it matters. When recipients have no easy way to opt out, they tap "Block" or "Report". These complaints affect your line's quality rating in Meta, and with a low rating Meta lowers your sending limits and may pause the template. An unsubscribe button gives people a calm way out, so you get fewer complaints. For large broadcasts we recommend adding it every time.
📄 Templates: ready-made texts
How to create a template
- Click 📄 Templates → "+ New template"
- Enter a Name and the Message text
- The toolbar above the text:
| Button | What it does |
|---|---|
| ↶ ↷ | Undo / Redo |
| B | Bold text |
| ~ | Strikethrough |
| 📎 | Attach an image or video (up to 15 MB) |
| 🎲 | Add a randomizer |
On the right there is a preview showing how the message will look in WhatsApp!
Variables (personalization)
Words in {curly braces} are replaced with the recipient's data:
| Variable | What is inserted |
|---|---|
{Name} | The name from the audience |
{City} | The city from the CSV |
{Company} | The company from the CSV |
Example: Hi {Name}! A discount for customers from {City}.
Ivan receives: Hi Ivan! A discount for customers from Almaty.
🎲 Randomizer (uniqueness)
Why? WhatsApp can ban a number for sending identical messages. The randomizer makes every message unique!
Format: [option1|option2|option3]
Example:
[Hi|Good afternoon], {Name}! We have [10% off|a 15% deal]!
Each recipient gets a random combination.
Uniqueness indicator
| Level | Color | Meaning |
|---|---|---|
| No randomization | 🔴 | All messages are identical. High risk! |
| Basic | 🟡 | 1 randomizer |
| Good | 🔵 | 2–3 randomizers |
| Excellent | 🟢 | 4+ randomizers. Safe! |
Click "Create template" to save it.
📱 WABA HSM templates
HSM (Highly Structured Message) is a Meta-approved template for WhatsApp Business API. They are the only way to run mass broadcasts to numbers you haven't exchanged messages with in the last 24 hours.
Where HSM templates live
You can create and manage HSM templates from three places:
- Broadcast templates (
/dashboard/broadcasts/templates) → the "HSM (WABA)" tab - Chat templates (
/dashboard/chat-templates) → the "HSM (WABA)" tab - WABA channel settings → the "Templates" tab
Important: the "+ Create" button for HSM templates only appears if you have an active WABA channel connected. If there is no channel, you'll see a hint offering to connect WhatsApp Business API.
How to create an HSM template
- Pick a WABA channel from the dropdown
- Click "+ Create"
- Fill in the fields:
- Name: Latin letters, digits and underscores only (up to 50 characters). The name can't be changed once the template is submitted for review
- Language: pick the language of the text (Kazakh, Russian, English and others). It must match the language you actually wrote in, otherwise the template is rejected
- Category: "Marketing" (deals, promos) or "Notifications and reminders" (orders, confirmations)
- Header (optional): text, image, video or document. If you pick an image, a video or a document, upload a sample file: this is exactly what goes to Meta for review and what you see in the preview. Limits: JPG/PNG image up to 5 MB, MP4 video up to 16 MB, PDF document up to 5 MB. When you send the message you can swap in your own file instead of the sample
- Body text: up to 1024 characters. You can insert the variables
{{1}},{{2}} - Sample values for the variables (appears if the text contains
{{1}},{{2}}): required for review. Each variable has its own field: type a real value there (an order number like000702009266or a customer name likeAigul). The system builds the full example itself: it puts your values into the template text and shows the result in the "This is how the template will be submitted" block. You don't have to write anything by hand - Footer (optional): a short line under the message
- Buttons (optional): up to 3: quick reply, link or phone. For broadcasts we recommend adding an "Unsubscribe" quick reply button, see "The Unsubscribe button in an HSM template" above
- Click "Submit for review"
Meta's review takes from a few minutes to 24 hours.
Why a template can be rejected
- Sample values are missing: every variable needs its own value, otherwise the review fails
- The language doesn't match the text: if the text is in Kazakh, choose "Kazakh", not "Russian"
- No sample file uploaded for a header with an image, a video or a document
- Promotional text in the "Notifications and reminders" category: send deals and promos in the "Marketing" category
Review statuses
| Status | What it means |
|---|---|
| In review | Meta is still checking the template. Wait, usually up to 24 hours |
| Approved | Meta approved the template: you can send it |
| Rejected | Meta found a violation. The reason is shown on the template card |
| Disabled | Meta temporarily disabled the template |
| Paused | The template is on pause (low quality) |
| Flagged | Meta flagged the template: a quality check is needed |
| Appealed | An appeal against Meta's decision has been filed |
| Pending deletion | The template is scheduled for deletion |
Template quality
A quality badge may appear next to the status:
- ★ High: people react well, the broadcast runs steadily
- ★ Medium: there are complaints from recipients, it's worth improving the text
- ★ Low: lots of blocks and complaints, the template may be paused
- ★ Unknown: not enough data yet (a new template)
If the template is rejected
When Meta rejects a template, a red "Meta's rejection reason" block appears on the card: it says exactly why it was turned down (for example, "Invalid Format", "Promotional content", "Tag content mismatch").
Important: rejected templates can't be edited: that's a WhatsApp and Meta rule. You can only recreate them from scratch with the fixes.
How to recreate a rejected template
- Click the "Recreate" button on the rejected template's card
- The create form opens with the fields already filled in (text, header, buttons, footer)
- The name automatically gets the
_v2suffix: Meta doesn't allow two templates with the same name in one account - Fix whatever Meta pointed out in the rejection reason
- Click "Submit for review"
- The old rejected template stays in the list: delete it manually once the new one passes review
How to delete an HSM template
- Click the 🗑️ trash icon on the template card
- Confirm the deletion in the dialog
Careful: deleting a template from Meta can't be undone. If you delete an approved template, you won't be able to send it any more, and a replacement will have to go through review again.
Meta's rules for approving templates
- The text must not be aggressively promotional ("BUY NOW!!!", a pile of exclamation marks)
- No ALL CAPS and no excessive emoji
- Variables in the
{{1}},{{2}}format (numbered only) - Templates with variables always need sample values
- The language of the text must match the language selected for the template
- Text headers with variables need a header example
- The "Marketing" category is reviewed more strictly than "Notifications"
