Mass Messaging
Administrators can send a broadcast message from the WordPress admin to every registered user, or to specific roles. Each recipient receives the message as an individual private conversation, so replies route to the sender only — not to the whole audience. Useful for site-wide announcements, policy changes, paid-tier updates, course-cohort notices, or re-engagement nudges.
What it adds#
- One admin form sends to all users, specific WordPress roles, or a hand-picked list of users
- Each recipient gets a 1-on-1 conversation in their inbox (not a giant group chat)
- Replies route privately to the admin sender — or can be disabled per job to make the broadcast one-way
- Schedule a job for a future date / time, pause it mid-run, resume it, or cancel
- Markdown formatting — headings, lists and links in broadcasts, same syntax as regular chat messages
- Delegate sending to selected roles — HR or communications staff can broadcast without full administrator access
- Preview sends the message to yourself first, to sanity-check formatting and attachments
- Narrow the audience by activity — everyone, active in the last N days, or inactive for N days
- Send rate controls how many messages go out per batch, with one batch a minute
- Chained follow-up jobs — send a follow-up only to threads from a previous broadcast (with the option to also include any new users that match the audience since then)
- Background-processed job handles large recipient lists without blocking the request
- Standard notification channels apply: in-app, email, mobile push
- No additional plugin required — built into Better Messages core
How it works#
When the admin submits the mass-messaging form, Better Messages stores the job and queues a background worker that iterates over the target user list. For each user it ensures a 1-on-1 thread exists between admin and recipient and posts the broadcast text as a new message. Recipients see a normal DM in their inbox — same UI, same notification rules, same reply behavior (unless replies were disabled on this job).
| Action | Outcome |
|---|---|
| Admin types message + picks audience ("All", role list, or specific users) | Job is created — runs immediately, or waits for the scheduled time |
| Admin selects specific roles | Worker iterates only users in those roles |
| Recipient sees the message | Appears as a regular DM from the admin |
| Recipient replies (replies enabled) | Reply lands in the admin's inbox as a normal DM |
| Recipient replies (replies disabled) | The thread shows the broadcast only. The reply box is locked with a notice |
| Recipient already has a thread with admin | New message lands in that existing thread (no duplicate) |
| Admin clicks Pause / Resume / Cancel | Worker honors the state change on the next batch |
When to use#
| Use case | Recipients |
|---|---|
| Site-wide outage / policy update | All users |
| Premium-only feature announcement | "Pro Member" role |
| Course cohort announcement | Custom role for the cohort |
| Staff-only message | Editor + Administrator + Shop Manager |
| Re-engagement of free tier | "Subscriber" role |
For event-triggered DMs (sent automatically on signup / course completion / payment), use AutomatorWP or Uncanny Automator instead — those send DMs in response to user actions, not as one-time broadcasts.
How to use#
Navigate to WP Admin → Better Messages → Administration → Bulk Messaging.
- Message — the editor supports bold, italic, underline and strikethrough buttons plus Markdown syntax, and Attachments
- Send to — All Users, Users with Role, or Specific Users with a search box. A second dropdown narrows by activity: Any activity, Active in last… N days, or Inactive for… N days.
- Subject — optional, names the conversation the broadcast creates
- Send As — administrators can send on behalf of another account. Everyone else sends as themselves
- Options → Disable replies to this message makes the broadcast one-way
- Schedule — Send immediately or Schedule for later with a date and time
- Send rate — messages per batch, one batch a minute. Default
20. Raise it to finish sooner, lower it to go easier on the server. - Preview — sends the message to you as a test, so you can check the formatting and attachments before committing
- Start Bulk Messaging — the job runs in the background
You can monitor progress on the Reports tab (scheduled / processing / completed / paused / cancelled / failed), and from any completed job spin off a Follow-up message into the same set of threads.
There is one button, not two. Preview is the send-a-test-to-myself action — it does not open a preview of the audience count.
Formatting#
The bulk message editor understands the same Markdown syntax as regular chat messages. Type the syntax directly in the editor and recipients receive the fully formatted message:
# Heading— section headings- item/1. item— bulleted and numbered lists**bold**,*italic*— emphasis (also available as toolbar buttons)[link text](https://example.com)— hyperlinks
Blank lines separate paragraphs, so long announcements keep readable spacing. Use the Preview button to see exactly how the delivered message will look.
Markdown support in the bulk message editor was added in Better Messages 2.15.24. Regular chat messages have supported Markdown for much longer.
Permissions#
By default only administrators can send bulk messages. To delegate broadcasting to trusted staff, go to WP Admin → Better Messages → Settings → Moderation → Bulk Messaging and check the roles under Roles That Can Send Bulk Messages.
Users with an allowed role get WP Admin → Better Messages → Administration with only the Bulk Messaging tab:
- They can create, schedule, preview and follow up on their own bulk messages
- They see reports only for messages they sent themselves, and cannot manage jobs created by administrators or other senders
- They cannot send on behalf of another user (the Send As selector is admin-only)
- They get no access to the Messages Viewer, the reported-messages queue, or plugin settings
To grant bulk messaging to a single user instead of a whole role, add the bm_can_bulk_message capability to that user with any role-management plugin. Role checkboxes manage the capability at the role level. User-level grants are never touched by the setting.
The Roles That Can Send Bulk Messages setting was added in Better Messages 2.15.24.
Frequently asked questions#
Is there a maximum number of recipients?#
There's no hard cap. The job is worked in batches — Send rate messages per batch, one batch a minute, 20 by default — so a large list simply takes longer rather than straining the request. At the default rate that is 1,200 an hour. Raise Send rate if a healthy server can take more.
Will recipients see who else received the broadcast?#
No — each recipient sees a 1-on-1 conversation with the admin. There's no "this was also sent to N users" indicator. The privacy boundary is identical to a normal DM.
Can I personalize the message with each user's name?#
The default UI does not include token substitution like `{first_name}` (the same message body is sent to every recipient). For richer per-user personalization, trigger DMs via AutomatorWP — Automator recipes can substitute user tokens per recipient.
Can I schedule a broadcast for later?#
Yes. Choose Schedule for later in the job form and pick the date and time. The worker activates the job when that time is reached. Until then the job shows as pending on the Reports tab, where it can still be cancelled. You can also pause a running job and resume it later.
Can non-administrators send broadcasts?#
Yes — see Permissions. Selected roles (or individual users via the bm_can_bulk_message capability) can send and manage their own bulk messages without full administrator access.
What happens to a recipient who already has a thread with the admin?#
The broadcast lands as a new message in the existing thread rather than creating a duplicate. The recipient's full conversation history is preserved.
What does the "follow-up" option do?#
From any completed broadcast you can create a follow-up job that posts a new message into the threads from the parent job. Two modes: Existing conversations only, or Include new matching users to also reach anyone who has matched the audience since the parent job ran — each shows its recipient count beside it. Follow-ups can themselves be followed up, so you can run multi-touch sequences from the admin without writing any code.
How does this interact with email + push notifications?#
Each recipient receives the same notification treatment as a regular DM — in-app, the standard email notification batch, and mobile push if configured.
See also#
- Mass messaging blog post — full feature write-up with examples
- Markdown support — the full syntax reference used by the bulk editor
- Site moderators — delegate the rest of the Administration page the same way
- AutomatorWP integration — for event-triggered automated DMs
- Uncanny Automator integration — for event-triggered automated DMs
- Email notifications — how mass-message emails are sent
- Role-based access — define the roles you target