Skip to main content

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 the recipient list and final message before starting
  • Send a test to yourself first to sanity-check formatting and attachments
  • 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).

ActionOutcome
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 rolesWorker iterates only users in those roles
Recipient sees the messageAppears 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 adminNew message lands in that existing thread (no duplicate)
Admin clicks Pause / Resume / CancelWorker honors the state change on the next batch

When to use#

Use caseRecipients
Site-wide outage / policy updateAll users
Premium-only feature announcement"Pro Member" role
Course cohort announcementCustom role for the cohort
Staff-only messageEditor + 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.

  1. Enter the message content — the editor supports bold, italic, underline and strikethrough buttons plus Markdown syntax, and attachments
  2. Choose your audience: All users, specific WordPress roles, or a hand-picked list of users
  3. Optionally toggle Disable replies to make this a one-way broadcast
  4. Optionally choose Schedule for later and pick the date and time instead of sending immediately
  5. Optionally Send Test to yourself first
  6. Preview the audience count and final message
  7. Click Start Bulk Messaging — the job runs in the background

You can monitor progress on the Reports tab (pending / in-progress / done / paused / cancelled), and from any completed job spin off a follow-up message into the same set of threads.

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.

info

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.

info

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. Large lists (tens of thousands) work fine on a healthy site. For sites in the hundreds of thousands of users, contact support to discuss tuning the batch worker.

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. You can choose to send only to the original recipients, or to also include any new users that have matched the audience since the parent job ran. 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#