MainWP will update 60 sites while you finish your coffee. Core, plugins, themes, all of it—from one screen. Pretty awesome, right?
But then comes the part nobody thought to automate: telling the site owners these updates happened. So you have to:
- Leave MainWP.
- Open your email client.
- Hunt for the right email address.
- Retype the same four sentences you typed last month. 60 times.
That repetition (that almost drove us mad) is what prompted us to built the Mad Cow Owner Update Notifications plugin. In short, our new plugin puts a send button in the MainWP row you’re already looking at.
How does it work? Let’s dig in!
All About Mad Cow Owner Update Notifications
What is it?
Mad Cow Owner Update Notifications is a plugin that adds an “Email owner” button to every row of your MainWP Manage Sites table. Click it and that site’s owner gets a templated email telling them their site is up to date. Check several rows instead and one click covers all of them.
What’s an owner notification?
An owner notification is the short note that goes out after maintenance. For example, “Hi Sarah – We’ve finished updates on your site! Everything’s running smoothly, but gives us a shout if anything looks off.”
It may seem like a small thing, but these owner notifications matter. Why? Because maintenance is invisible work.
You’ve spent the morning keeping 60 sites patched and nobody watched you do it. The email is the only evidence the client ever sees. And if you skip it, the month you did the most work becomes the month that looks like nothing happened.
How does this plugin make my life easier?
Frankly, the work of sending an email isn’t all that hard. It’s just repetitive enough that you stop doing it.
Every notification is the same loop: finish the updates, switch to your email client, work out which address belongs to this site, paste the message, change the name, send, go back.
Multiply that by your whole client list and the emails quietly become the longest part of maintenance day. Eventually, you go from sending all of them to sending only the ones you remember.
So we built Mad Cow Owner Update Notifications to keep the whole thing inside MainWP.
- Owner addresses live next to the sites they belong to.
- The message is written once, with placeholders that fill themselves in.
- And the button sits in the row you are already looking at, so notifying an owner costs a click instead of a context switch.
Key Highlights ★
1 – An “Email owner” button in every row of MainWP’s Manage Sites table.
2 – Batch send — check the rows you want, hit one button, watch a sticky toolbar report progress row by row.
3 – The button turns green and remembers, so you can see at a glance who was notified and how long ago.
4 – One message template with placeholders for the owner’s first name, the site name and the site URL.
5 – Every owner name and address on a single screen instead of scattered across your address book.
6 – Sends through WordPress’s own mail function, so whatever you already use for delivery keeps working.
More Nitty Gritty Details ✅
How it works:
- Head to MainWP → Update Notifications.
- Set your from address, subject and message body—placeholders do the personalizing.
- Scroll to the Site Owners table and fill in a first name and email for each site.
- Save.
- Go to MainWP → Manage Sites. There’s now an “Email owner” button in every row.
- Run your updates as usual, then click the button. Or check several rows and hit “Send to Selected Owners.”
What about hooks & filters?
mcwounm_template_before_sendfilters the resolved template—from address, subject and body—just before it goes out, with the site ID and recipient passed in. This is where you’d branch the wording per client.mcwounm_mail_headersfilters the outbound headers if you need a different Reply-To, a BCC, or a custom From.mcwounm_before_sendandmcwounm_after_sendfire either side of the mail call, the second one carrying whether it succeeded. Handy for logging to your own audit trail.mcwounm_recent_windowcontrols how long the green “Sent” state sticks around. Seven days by default.- Styling is admin-side only—nothing is added to your clients’ front ends. The row button is
.mcwounm-btn, its sent state.mcwounm-sent, and the batch toolbar.mcwounm-batch-barif you want to restyle any of it.
What’s included:
- a per-row send button in MainWP’s Manage Sites table
- batch sending with live per-row progress and an end-of-run summary
- persistent “recently sent” state, shown as time-ago on the button
- per-site owner name and email storage, editable from one screen
- an editable subject, body, and from address, with three placeholders
- basic HTML in the body for logos, links and formatting
- four hooks for developers, and no calls home
Section details:
1 – The message template is written once and reused everywhere. Three placeholders do the personalising—{first_name}, {site_name} and {site_url}—and the site URL comes through as a live link rather than raw text. Basic HTML is allowed in the body, so you can drop in your logo with an <img> tag, add links, and bold what matters. Any bare URL you type on its own line becomes clickable on its own.
2 – The Site Owners table lists every site connected to your dashboard with a first name and email field beside each one. Multiple recipients are fine—separate them with commas and everyone gets the notice. Leave a row blank and nothing breaks. That site simply shows a “Set email” link instead of a button until you fill it in.
3 – The row button has three states, and they’re the whole point. Blue “Email owner” means ready to go. Green “Sent 2 days ago” means someone already has it, which stops the awkward second email when you and a teammate both run maintenance. “Set email” means you’ve not told it where to write yet. The green state persists across page loads and clears itself after a week.
4 – Batch send uses MainWP’s own row checkboxes, so filter and search the table however you normally do, tick what you want, and hit “Send to Selected Owners.” A toolbar pins itself under the MainWP header and stays visible while you scroll, counting off rows as they go. Sites still processing turn amber, failures turn red, and anything without an owner email is skipped and counted in the summary at the end rather than stopping the run.
5 – Delivery goes through WordPress’ standard wp_mail(). That means whatever you already have set up (an SMTP plugin, Mailgun, Postmark, SES) handles these the same way it handles everything else. There’s no separate mail configuration to get wrong, no API key to paste in, and nothing about your client list ever leaves your dashboard.
The whole thing is AJAX, so nothing reloads. Your scroll position, your filters and your place in a long site list all survive a send.
Now, back to our coffee. ☕️
—
Ready to send client updates with a single click?
Download the plugin from WordPress.org »