Push notifications from your own site.
No vendor in the middle.
Chirpush is a WordPress plugin for web push. Readers subscribe on your site, the subscriber list lives in your own database, and WordPress sends each notification straight to the browser’s own push service. No monthly bill, no third-party script, and no one else holding your list.
The parts of push you actually use
Hosted push services sell segments, journeys and A/B tests. Most sites send one notification per story. Chirpush does that job well and keeps it on your site. It’s still being built; these are the features planned for the first full release.
A polite subscribe prompt
A small slide-in asks first, after a set number of pageviews and seconds. The browser’s own permission prompt appears only after a reader clicks Allow, so browsers don’t quiet your site for asking on page load. There’s a plain “Get notifications” button too.
Send a post from the editor
Tick “Send a push notification when this post is published” in the editor. Scheduled posts send when they go live. A post that has already been sent needs a confirm to send again, so a re-save never pushes twice.
One-off messages
A “New notification” screen for anything that isn’t a post: a title, a message, a link and an optional image from the Media Library. Send a test to yourself, then send to everyone.
A welcome notification
A short thank-you right after someone subscribes, in your own words. It’s on by default, and it’s never sent to readers moved over from another service.
Clicks land in the right tab
Each notification carries the headline, image and link. A click brings forward a tab that’s already open on that page, or opens a new one. A newer push for the same send replaces an undelivered older one instead of doubling up.
Plain numbers
Every send reports how many were accepted by the push services, failed, removed and clicked, with a click rate. A subscribers card shows the total, readers seen this week, new today, and the split by browser.
A list that stays clean
When a push service says a subscription is gone, Chirpush deletes it at once. Busy services get a few polite retries. Dead rows don’t pile up, and nothing grows without a cap.
Sends never slow your pages
A send is a queue entry. Real server cron works through it in batches in the background, so sending to tens of thousands of readers never happens inside a page request.
Private and locked down
No cookies, user accounts or IP addresses stored. Subscriptions are accepted only for the browsers’ own push services, and your site’s private signing key is never shown on screen.
Four steps, all between your site and the browser
Web push is an open standard built into the browsers. A vendor only ever supplied the subscriber list, the sending loop and a dashboard. Chirpush keeps all three in WordPress.
A reader subscribes
They click Allow. The browser creates a subscription at its own push service (Google’s for Chrome, Mozilla’s for Firefox, Microsoft’s for Edge, Apple’s for Safari) and hands your site its address and two public keys.
Your site stores it
WordPress saves the subscription in its own table: one row per browser. No cookies, no user accounts, no IP addresses.
Your site signs and encrypts
To send, WordPress signs each request with your site’s own key and encrypts the message so only that browser can read it.
The push service delivers
The browser’s push service carries it to the reader for free, and the notification appears even when your site isn’t open in a tab.
Chrome, Edge, Firefox and Safari all speak the same Web Push standard, so the same sending code reaches every one of them.
In development
Chirpush isn’t released yet. The sending code is the same for every browser, so the order below is simply the order we test in, starting with the browsers most readers use.
Proof of concept: Chrome and Edge on desktop
- A “Get notifications” button, the browser’s permission prompt, and a stored subscription
- A test send from wp-admin that shows up as a notification and opens the right page
- Subscriptions the push service says are gone, deleted on the next send
- Edge is built on Chrome’s engine, so one round of testing covers both
Firefox, then Safari on the Mac
- Firefox on desktop
- Safari 16 or newer on macOS 13 or newer, which only allows the permission prompt inside a click
Chrome on Android
- Mostly the same as desktop Chrome
- Large post images show in the notification on Android
iPhone and iPad, via the Home Screen
- iOS and iPadOS 16.4 or newer allow web push only from a site added to the Home Screen
- An optional web app manifest, and an “Add to Home Screen to get alerts” hint in place of the prompt
Along the way, in this order: the send queue, editor panel and reports; the subscribe prompt and welcome notification; then the tools for switching from a hosted service.
Switch without asking readers again
Notification permission belongs to your site’s address, not to the vendor. If your subscriptions already live on your own domain, a returning reader who said yes before can be moved to Chirpush with no new prompt. Planned for OneSignal and PushEngage first, with room to recognise others.
Collect quietly
Run Chirpush in shadow mode for a few weeks beside your current service, which keeps sending as before. Each time a reader who already allowed notifications visits, Chirpush makes its own subscription for them: no prompt, no welcome message.
Switch over in a day
Turn off the old service’s plugin and remove any of its code added by hand, then turn on Chirpush’s prompt and editor panel. Only one system sends at a time, so nobody gets every push twice.
Tidy up as readers return
On later visits, Chirpush unsubscribes the old service and removes its worker from each reader’s browser. It only touches workers it recognises.
What can’t be moved
- Readers who don’t come back. Each old subscription is tied to the vendor’s own signing key, so it can’t be copied. A reader is moved on their next visit, and readers who never visit again stay behind.
- Subscriptions on the vendor’s address. If your service collected subscribers on its own subdomain rather than yours, the permission belongs to that subdomain. Those readers see your prompt again, like new visitors.
Built by Orchard Grove Media
Chirpush comes from Orchard Grove Media, the studio of Ted Slater. It was built for national news publishers paying a hosted service every month for something WordPress and the browsers can do on their own: keep a list of subscribers and send to it. Chirpush moves the list and the sending back onto the publisher’s own site, one copy per site, with nothing in between.
Orchard Grove Media is a boutique studio that has been building the web since 1994 — three decades of designing, running and rescuing websites, these days for national news publishers serving millions of pageviews a day. Every plugin we publish runs on those sites first, and is maintained for years afterward rather than abandoned after launch.
It’s free and open source, in the same spirit as our other plugins, like SleekSearch and Heirloom SEO: do the essential work exactly right, stay fast, and stay out of the way.
Frequently asked
Is it really free?
When can I use it?
Is there a Chirpush server in the middle?
Which browsers will it reach?
What does it add to my pages?
defer, and a short settings object. Once a reader has decided (subscribed or blocked), the script does nothing more except a once-a-day “still here” ping from subscribed browsers. Sending never happens during a page request, and the page stays safe to cache.How does it send to a large list?
What do I need to run it?
What does it store about readers?
What if I lose my site’s key?
wp-config.php on production.Can I script it?
wp chirpush status, wp chirpush send <post-id>, wp chirpush queue run (what cron calls) and wp chirpush subscribers prune.What doesn’t it do?
Changelog
Every release, newest first.
No releases yet. The first version will be listed here.
Questions or feedback?
Want to hear when it’s ready, or thinking about leaving a hosted push service? I’d genuinely like to hear from you.
Your readers. Your list. Your site.
Free and open source. The first release is on its way, and this is where you’ll download it.
When it’s out: Plugins → Add New → Upload the ZIP → activate → add the button or turn on the prompt.
In development: no release yet.