I built EasyPush because the two existing options for WordPress push notifications both asked for something I did not want to give.
The hosted services wanted a monthly fee that grows with my subscriber list, and they wanted to hold the list on their servers. The self-hosted applications wanted a VPS and an afternoon of sysadmin work per site.
There was an obvious third option nobody had built properly: implement the Web Push Protocol in PHP, inside WordPress, using the database that is already there. No external service. No second server. No monthly bill.
That is EasyPush.
What it does
Collects subscribers. A customisable opt-in box appears before the browser’s permission dialog — several layouts, five trigger types including scroll depth and exit intent. Because the visitor only sees the browser prompt after saying yes to yours, your permanent Block rate stays low.
Sends notifications. Manually, automatically when you publish, or on a schedule. Title, message, icon, wide hero image, two action buttons, TTL and urgency.
Handles large lists. Sending goes through a persistent queue with parallel delivery. A send that is interrupted by a PHP timeout picks up where it left off rather than starting over or silently dying halfway.
Reports honestly. Click rate is measured against notifications displayed, not notifications accepted by the push service. The second number is bigger and flatters everyone; the first is the one that tells you whether your copy works.
Cleans up after itself. Expired subscriptions are removed automatically. Old queue rows and event history are pruned on a schedule you control.
What it does not do
iOS, mostly. Apple supports web push only for sites the user has installed to their home screen. Almost nobody does this. Treat iOS as roughly zero — this is Apple’s decision, and no plugin changes it.
Send at hosted-service speed on cheap hosting. Delivery is bound by what PHP on your server can do. With parallel cURL you should see a few thousand notifications a minute on decent shared hosting and considerably more on a VPS. For a list of twenty thousand that means minutes. For a list of half a million on £3-a-month hosting, budget for a better server. The Diagnostics screen tells you where you stand before you find out the hard way.
Work while your site is down. Nothing sends if WordPress is not running. A hosted service would keep going. If push notifications are business-critical infrastructure for you, that is a real argument for keeping them off your web server.
I would rather say this now than have you discover it in a review.
Free vs Pro
The free version is not a demo. Unlimited subscribers, unlimited notifications, forever. That is not a launch promotion — there is no per-message cost to pass on, so there is nothing to meter.
| Free | Pro | |
|---|---|---|
| Subscribers | Unlimited | Unlimited |
| Notifications | Unlimited | Unlimited |
| Opt-in prompt, several styles, 5 triggers | ✓ | ✓ |
| Manual, scheduled and auto-push | ✓ | ✓ |
| Analytics | ✓ | ✓ |
| Welcome notification | ✓ | ✓ |
| Segmentation by browser, device, country, language and engagement | — | ✓ |
| Welcome drip sequences | — | ✓ |
| WooCommerce cart recovery | — | ✓ |
| Revenue attribution | — | ✓ |
| A/B testing | — | ✓ |
| Frequency caps and quiet hours | — | ✓ |
| RSS auto-push | — | ✓ |
| White-label (Agency plan) | — | ✓ |
Pro is a yearly licence, not a per-subscriber fee. Your bill does not change when your list grows.
New to licences? Here’s how activating, moving and renewing a key works.
Setting it up
- Install and activate. VAPID keys are generated automatically — you never touch a key file or a Firebase console.
- Go to Settings → Permalinks and press Save. Nothing to change. This lets WordPress serve the service worker file.
- Open EasyPush → Diagnostics. Seven checks, covering HTTPS, OpenSSL, your keys, whether the service worker is reachable, cURL and the queue and cron. All green means you are ready.
- Visit your own site, allow notifications.
- EasyPush → Send New, write something, hit “Send test to me”.
That is genuinely the whole setup. There is no account to create, because there is no service to create an account with.
One thing worth doing on any site with more than a few thousand subscribers: add a real cron job instead of relying on WP-Cron. WP-Cron only fires when someone visits your site, so a quiet site drains its queue slowly. The Settings screen gives you the exact line to paste.
Technical notes, for the people who want them
EasyPush implements RFC 8030 (delivery), RFC 8291 (aes128gcm payload encryption) and RFC 8292 (VAPID) directly on PHP’s OpenSSL extension. No Composer dependencies, no bundled crypto library.
Subscribers live in six purpose-built database tables, not in postmeta. The queue uses claim-and-lock so overlapping cron runs cannot double-send. Delivery uses curl_multi for parallel HTTP/2 POSTs with configurable concurrency.
The free version makes no external HTTP requests of any kind — no phone-home, no analytics, no licence check. The Pro add-on is a separate plugin, which keeps the free version clean for the WordPress.org repository and means you can audit exactly what talks to the internet.
Requirements: WordPress 5.8+, PHP 7.4+, HTTPS, OpenSSL with P-256 support. That last one is standard on essentially every host; Diagnostics checks it anyway.
Why the free tier is this generous
Because metering it would be dishonest. There is no marginal cost to a notification — Google and Mozilla relay them for free, and the encryption happens on your own server. A plugin that capped you at 500 subscribers would be charging you for a limit it invented.
What is worth paying for is the software that turns a subscriber list into revenue: segments, welcome sequences, cart recovery, testing. That is where Pro lives, and it is optional.
Get EasyPush free
Step-by-step: the setup guide.
New to this? Start with how web push notifications actually work, or the comparison of the alternatives — including the cases where EasyPush is the wrong choice.
Frequently asked questions
Is EasyPush free?
Yes. The free plugin has unlimited subscribers and unlimited notifications, with no per-message fee. Pro is an optional yearly licence.
Do I need Firebase, OneSignal or any other account?
No. EasyPush implements the Web Push Protocol itself and generates its own keys. There’s nothing to sign up for.
What does Pro add?
Segments, welcome drip sequences, A/B testing, frequency caps and quiet hours, RSS auto-push, WooCommerce features (abandoned cart, price drop and back-in-stock alerts, order status pushes, revenue attribution), and white-label on the Agency plan.
Does it work on iPhones?
Only for sites a visitor has added to their home screen. That’s Apple’s rule.
Will it handle a large list on shared hosting?
A few thousand notifications a minute is realistic on decent shared hosting, and more on a VPS. For very large lists, use a real cron job and budget for a better server.
What happens if my Pro licence expires?
Pro switches off and delivery goes back to the free behaviour. Nothing is deleted, and it returns when you renew.
Does it work if my site is down?
No. Nothing sends if WordPress isn’t running.
