Skip to content


Repository files navigation

Perfecty Push WP Plugin ⚡️

tests deployment License PHP compatibility WP compatibility

Self-hosted Push Notifications from your Wordpress server for free! 🥳

Perfecty Push for Wordpress

Perfecty Push WP is an Open Source plugin for WordPress that allows you to send web Push Notifications directly from your server: No hidden fees, no third-party dependencies and you own your data. 👏

Install it now:

More information about the project:

Features ✨

  • Open Source, send Push Notifications from your server for free!
  • 10.000 notifications/minute in a 2 GB, 1vCPU host. Can achieve better performance with better specs.
  • PWA compatible / AMP (Transitional)
  • Can be called by other plugins using the Perfecty_Push_Integration class
  • No third-party dependencies
  • Migrate users from other push services like OneSignal
  • Send push notifications on posts publishing
  • Customize the public widget
  • The user authorization tokens stay in your server
  • Offline browser notifications through Push API (Safari is not supported yet)
  • Built-in Push Server based on web-push-php

Requirements 🧩

  • PHP >= 7.2
  • gmp extension for message encryption (optional)

Note: The gmp extension is optional and recommended for better performance.


External integrations 🛸

You can use and extend Perfecty Push Notifications from third party plugins or your own code.

Send notifications through Perfecty Push

You can use the Perfecty_Push_Integration class to send Push Notifications from other plugins:

  • Perfecty_Push_Integration::notify( $wp_user_id, $message, $title = '', $image_url = '', $url_to_open = '' ) Send a notification to a registered WordPress user. If the user has multiple devices, it will send the notification to all the devices the user has subscribed.

  • Perfecty_Push_Integration::broadcast( $message, $title = '', $image_url = '', $url_to_open = '' ) Schedule a broadcast notification that will be sent to all the Push Notifications users.


  • perfecty_push_broadcast_scheduled($payload) executed when a broadcast notification has been scheduled. You have access to the provided payload.

  • perfecty_push_wp_user_notified($payload, $wp_user_id) executed when a notification has been sent to a WordPress user. You have access to the provided payload and WP User ID.


  • perfecty_push_custom_payload($payload) use this filter to customize the $payload array content. More information about the payload array here.

Local development 👨🏻‍💻

To see it in action in your local development environment, you need a set of services which Wordpress relies on. You start off by creating the docker image:

docker build -t custom-wordpress:5.6-php7.2-apache .

Then start all the services and run the setup:

make up
make setup

You can now go to https://localhost/wp-login.php > Plugins > Activate the Perfecty Push plugin.

Available commands 👾

# start the service containers
make up

# stop de service containers
make down

# remote console
make console

# run the unit tests
make test

# run the formatter
make format

# setup all: make wordpress, make composer, make phpunit and make sdk
make setup

# setup wordpress and plugins
make wordpress

# install all the composer dependencies
make deps

# setup wordpress as a testing environment for phpunit
make phpunit

# generates the redistributable bundle in dist/
make bundle

Demo 🎭

Admin Dashboard


Public view

Screenshot preview

Testing ✅

This project relies on automated tests as in the Wordpress Core guidelines.

Run all the test suites:

make test

Run a single test:

make console
cd wp-contents/plugins/perfecty-push/
phpunit --filter test_schedule_broadcast_async

Troubleshooting 🛠

Not intended for production: In case the plugins cannot be installed on your local installation do:

make console
chown -R www-data wp-content

License 👓

The WordPress Plugin is an Open Source project licensed under GPL v2.

The bell icon SVG code is a Font Awesome icon, a MIT License.

Banner photo by NASA on Unsplash

Contributing 🚀

If you're interesting on contributing to this project, feel free to submit your suggestions as a PR or an issue directly to any of the projects repos. Remember to read the Code of Conduct and the license information of each project, which in general use the MIT license, except the WordPress plugin (GPL v2).

Open Source contributors 🔥

Rowinson Gallego MocioF

Special Thanks


Thanks to Jetbrains for supporting this Open Source project with their magnificent tools.