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
  • 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 → Mass Messaging.

  1. Enter the message content using the full message editor (formatting, attachments, emojis, GIFs all supported)
  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 set a scheduled send time instead of running immediately
  5. Optionally Send Test to yourself first
  6. Preview the audience count and final message
  7. Click Create — the job runs in the background

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

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. The job form includes a Scheduled send time field; the worker activates the job when that time is reached. You can also pause a running job and resume it later.

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#