Free plugin
Manual notifications, automatic new-post notifications, subscriber collection, guest subscriptions, background delivery queue, VAPID credentials, GDPR export/erasure hooks, and developer APIs.
This guide is based on the actual PushAI Free and PushAI Pro plugin code. It covers setup, admin workflows, Pro automation, troubleshooting, and the PHP and REST surfaces available to theme and plugin developers.
Current plugin version
0.9.0
Minimum WordPress
6.4+
Minimum PHP
8.1+
What PushAI does
PushAI is a self-hosted Web Push plugin for WordPress. Browser subscriptions, notifications, queue jobs, license state, and analytics data live in your WordPress installation instead of a third-party push SaaS. Delivery uses VAPID credentials and the native Web Push standard.
Manual notifications, automatic new-post notifications, subscriber collection, guest subscriptions, background delivery queue, VAPID credentials, GDPR export/erasure hooks, and developer APIs.
Licensed automation for AI digests, analytics, templates, custom post types, comments, admin alerts, WooCommerce events, Trending Today, and the permission popup.
First install
[pushai_button]
[pushai_button label="Enable browser notifications" align="center"]
<?php echo do_shortcode( '[pushai_button]' ); ?>Common tasks
Start here when you want to do a specific job in the WordPress admin. Each guide assumes the main PushAI plugin is installed and active.
Outcome: Visitors can click one button and allow browser notifications.
[pushai_button label="Enable browser notifications" align="center"]Outcome: Confirms that subscription collection, VAPID credentials, and delivery queue all work.
Outcome: PushAI queues a notification whenever a post is published.
Outcome: Logged-out readers can become browser subscribers.
Outcome: A notification reaches only users with active browser subscriptions.
Outcome: Notifications show a recognizable site or brand icon.
Licensed workflows
These tasks require PushAI Pro to be installed and the site license to be active from PushAI > Plans & License.
Outcome: Unlocks Pro menus and licensed automation.
Outcome: Recent posts are collected and sent as scheduled browser push summaries.
Outcome: Publishing selected content types can trigger automatic browser notifications.
Outcome: Post authors receive browser notifications when their content gets comments.
Outcome: Subscribed administrators and registered customers receive store events by push.
Outcome: Automatic notifications use your own titles and message templates.
Operational checks
Confirm Push service is enabled, guest subscriptions are allowed when testing logged out, HTTPS is active in production, and the browser supports Web Push.
Regenerating credentials invalidates all existing browser subscriptions. Visitors must subscribe again.
Check WP-Cron, server loopback requests, and the Dashboard cards for queue depth and failed jobs.
Customer order status, order note, and cross-sell notifications reach registered customers with active subscriptions. Guest checkouts cannot be targeted.
WordPress admin
PushAI -> Dashboard
Monitors active subscribers, sent notifications, completed campaigns, queue depth, failed jobs, recent notifications, and service health.
PushAI -> Notifications
Creates manual campaigns, filters history by queued, processing, sent, or failed status, and supports targeted sends to selected WordPress users.
PushAI -> Subscribers
Lists browser subscriptions for registered users and guests. Each row represents one browser endpoint, not one human account.
PushAI -> Settings
Controls the push service, automatic new-post notifications, guest subscriptions, notification icon, shortcode usage, Pro panels, and maintenance actions.
PushAI -> Credentials
Shows the masked public VAPID key and can regenerate Web Push credentials. Regeneration invalidates existing browser subscriptions.
PushAI -> Plans & License
Manages checkout, license activation, refresh, renewal, and site deactivation for PushAI Pro.
What Pro adds
PHP integration
Developers can queue notifications directly from a theme, plugin, or custom automation. The helper returns the notification ID on success or a WP_Error on failure.
$notification_id = pushai_trigger_notification( array(
'title' => 'New update',
'body' => 'A new article is available.',
'url' => home_url( '/news/' ),
'image' => '',
'source_type' => 'developer',
'source_id' => 0,
'target_user_ids' => array( 12, 34 ),
'exclude_user_ids'=> array( 56 ),
) );Equivalent action form:
do_action( 'pushai_send_notification', array(
'title' => 'Order ready',
'body' => 'Your order is ready for pickup.',
'url' => wc_get_endpoint_url( 'orders', '', wc_get_page_permalink( 'myaccount' ) ),
) );title, body, url, image, source_type, source_id, target_user_id, target_user_ids, and exclude_user_ids.
Use pushai_license_is_active(), pushai_license_is_active_cached(), and pushai_get_license() when building integrations that depend on Pro.
Browser integration
/wp-json/pushai/v1/subscription-nonceReturns a PushAI nonce and a fresh wp_rest nonce for the current browser session.
/wp-json/pushai/v1/subscriptionsStores or updates the browser push subscription. Requires X-Pushai-Nonce and same-origin validation. Guests are accepted only when Guest subscriptions is enabled.
/wp-json/pushai/v1/subscriptionsChecks whether the current browser endpoint is active.
/wp-json/pushai/v1/subscriptionsMarks the current browser endpoint as unsubscribed. This remains available even if guest subscriptions are later disabled.
/wp-json/pushai/v1/notification-statusReturns the current logged-in user notification status.
/wp-json/pushai-pro/v1/clickPro endpoint used by the service worker to record signed notification click events.
Extension points
pushai_send_notificationActionQueue a notification with the same arguments accepted by pushai_trigger_notification().pushai_notification_queuedActionRuns after a notification row and queue job are created.pushai_notification_failedActionRuns when a developer-triggered notification cannot be queued.pushai_notification_delivery_completedActionRuns after delivery finishes with success, failed, and expired counts.pushai_loadedActionRuns after PushAI initializes shared services.pushai_should_create_post_notificationFilterAllow or block automatic notification creation for a published post.pushai_post_notification_argsFilterModify title, body, URL, image, targeting, or context before a post notification is queued.pushai_should_send_to_subscriptionFilterDecide per subscription whether it should receive a notification.pushai_notification_payloadFilterChange the browser payload before delivery. Pro uses this to add click tracking.pushai_utm_parametersFilterCustomize or disable UTM parameters appended to notification URLs.pushai_skip_inactive_targetsFilterControl whether targeted users without active subscriptions are pruned before queueing.pushai_localize_configFilterExtend the front-end JavaScript config. Pro uses this for the permission prompt.pushai_pro_notification_post_typesFilterAdjust Pro automatic notification post types.pushai_pro_comment_notification_post_typesFilterAdjust Pro comment notification post types.Storage
PushAI stores browser subscriptions, notifications, and queue jobs in WordPress database tables with the site table prefix.
Pro creates a pushai_pro_analytics table for delivery and click events. Click tracking uses a signed token and rate limiting.
Stored subscription data includes endpoint, public key, auth token, content encoding, device type, status, user ID or guest ID, and delivery timestamps.
Settings includes Clear Cache and Delete All Data. Delete All Data removes subscriptions, notifications, and jobs and cannot be undone.
Release notes