How to use messaging campaigns
Create campaigns, personalize messages, filter customers by labels, review delivery rates, test, schedule and monitor results.
What are messaging campaigns?#
A campaign sends the same message, optionally personalized with variables, to customers selected by labels. Send immediately or schedule it; delivery runs in the background at the configured rate.
- 1
Open /campaigns on your ChatHub domain. Viewing requires campaign read permission; creating, editing and sending require campaign management permission.
- 2
Prepare customer labels and a connected channel. Labels on either contact profiles or conversations count.
- 3
Use the campaign-name search and All, Drafts, Scheduled, Sending and Finished tabs. Click a name or Mở (Open) to view a campaign.
1. Create a draft and understand saving#
- 1
Click Tạo chiến dịch (Create campaign). Enter a recognizable internal name, for example [MẪU] Hướng dẫn chiến dịch. Customers do not see this name.
- 2
Click Tạo và soạn nội dung (Create and compose) to create a draft. The editor contains Message content, Audience and Delivery sections.
2. Compose and personalize#
- 1
Enter a concise message in Content, for example: Hi {{name}}, would you like more help with a product? This is sample content.
- 2
Place the cursor where personalization belongs, click Chèn biến (Insert variable), then choose Customer name. Other variables include {{phone}}, {{email}}, {{credits}}, {{channel.name}} and custom contact fields.
- 3
Review Message preview on the right. Its names and contact details are sample values; verify real contact data before sending.
- 4
Content supports up to 4,000 characters and one attachment. A campaign needs text or an attachment; buttons alone are insufficient.
Add button supports reply or link buttons. Each needs a label; link buttons require an http(s) URL. Telegram Bot and Chat Plugin display buttons, while other channels may receive numbered text. Campaign buttons do not create Workflow branches.
3. Select the audience#
- 1
Under Audience → Customers with labels, click Choose labels and select at least one. The example selects Mẫu - Cần gọi lại.
- 2
With multiple labels, Any label includes customers matching at least one; All labels narrows the group to customers matching every label.
- 3
Expand Additional conditions. Excluded labels remove unwanted groups; do not include and exclude the same label.
- 4
Channels restrict where delivery occurs. Leaving this empty includes all connected channels. Each customer receives through one eligible conversation with the most recent message.
- 5
Review Audience, channel counts and sample customers. Counts are estimates; recipients are finalized when the campaign starts and may change before the scheduled time.
Only private conversations with non-archived, non-merged contacts on enabled, connected channels are eligible. No labels does not mean send to everyone.
4. Refine with additional conditions#
- 1
Conversation status: select the statuses to include, or leave empty for no status filter.
- 2
Active within measures recent incoming customer messages. Inactive for measures the absence of incoming messages; staff replies do not count as renewed customer activity.
- 3
Wallet balance: enter a minimum and/or maximum if needed. The minimum cannot exceed the maximum.
- 4
Exclude customers who received another campaign within: enter a day count to avoid contacting the same people too frequently.
- 5
Skip conversations handled by staff is enabled by default. Keep it on to avoid inserting campaign messages into staff-managed conversations.
5. Review delivery rate and test#
- 1
Under Delivery, drag the rate slider or enter messages per minute. The supported range is 1–600, with a default of 30. Adapt it to the channel; a low rate does not guarantee the provider will never restrict an account.
- 2
Review Message preview and resolve every Not ready issue. Ready means the configuration passes validation, not that recipients exist or delivery is guaranteed.
- 3
Wait for Saved or click Save draft / Save changes before Test send: testing uses saved content.
- 4
Click Test send, search for a test conversation by name and choose the correct channel. Send to this conversation sends a real message; then inspect the conversation for variables, attachments, buttons and message status.
6. Send now or schedule#
- 1
Send now: review audience, content and rate, click Send now, read the recipient count and rate in the confirmation, and confirm when ready. If the dialog shows 0 recipients, cancel and check the filters.
- 2
Schedule: choose a future Date and Time or use In one hour, Tomorrow at 9:00 or Monday at 9:00. Check the time summary, which uses your computer’s local time, before clicking Schedule.
- 3
After scheduling succeeds, verify Scheduled status and the send time. The system starts at that time even if ChatHub is closed.
- 4
Before delivery starts, edit and Save changes, Reschedule, or Move to draft. Content and audience cannot be edited after delivery begins.
7. Monitor, stop and troubleshoot#
- 1
Open a campaign to inspect total recipients, Sent, Failed, Skipped and Remaining. Progress updates while running.
- 2
Filter Recipients by status and open a conversation to inspect a message. Completed does not mean every message succeeded; review failures and skipped recipients.
- 3
While Sending, Pause stops subsequent work; Resume continues a paused campaign. Cancel stops remaining delivery and cannot recall messages that already left the queue.
- 4
After completion, inspect failures and use Retry failed messages when appropriate. Successfully sent recipients are not included in retry.
- 5
Duplicate creates a new draft with reusable settings. Delete only when history is no longer needed: it also removes campaign recipient history, while sent messages remain in the inbox.
Offline channel: check its connection; the campaign waits for reconnection. Provider rejection or timeout: inspect the error and conversation message status before retrying. If labels are gone when delivery starts, the campaign is cancelled rather than sent to everyone.