PushRelay – Push Notifications Security & Risk Analysis

wordpress.org/plugins/pushrelay

Send web push notifications to bring visitors back to your WordPress site.

0 active installs v1.7.3 PHP 7.4+ WP 5.8+ Updated Jan 17, 2026
engagementmarketingnotificationspush-notificationsweb-push
100
A · Safe
CVEs total0
Unpatched0
Last CVENever
Safety Verdict

Is PushRelay – Push Notifications Safe to Use in 2026?

Generally Safe

Score 100/100

PushRelay – Push Notifications has no known CVEs and is actively maintained. It's a solid choice for most WordPress installations.

No known CVEs Updated 4mo ago
Risk Assessment

The Push Relay plugin v1.7.3 exhibits a generally strong security posture, with excellent practices in output escaping and a very low percentage of SQL queries not using prepared statements. The plugin also demonstrates a commitment to security with a high number of nonce and capability checks. However, the static analysis reveals a concerning number of unprotected entry points, specifically 2 REST API routes that lack permission callbacks. Furthermore, the taint analysis indicates 5 high-severity flows with unsanitized paths, which represent a significant risk of potential vulnerabilities if these paths are exposed to untrusted input. While the plugin has no recorded vulnerability history (CVEs), the presence of high-severity taint flows suggests potential for undiscovered vulnerabilities. The lack of historical vulnerabilities could imply either a robust development process or simply a lack of prior in-depth security auditing that might uncover these taint issues.

Key Concerns

  • Unprotected REST API routes without permission callbacks
  • High severity taint flows with unsanitized paths
Vulnerabilities
None known

PushRelay – Push Notifications Security Vulnerabilities

No known vulnerabilities — this is a good sign.
Version History

PushRelay – Push Notifications Release Timeline

v1.7.3Current
v1.7.2
v1.7.1
v1.7.0
v1.6.0
v1.5.0
v1.4.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
Code Analysis
Analyzed Mar 17, 2026

PushRelay – Push Notifications Code Analysis

Dangerous Functions
0
Raw SQL Queries
20
67 prepared
Unescaped Output
12
936 escaped
Nonce Checks
56
Capability Checks
52
File Operations
14
External Requests
4
Bundled Libraries
0

SQL Query Safety

77% prepared87 total queries

Output Escaping

99% escaped948 total outputs
Data Flows · Security
8 unsanitized

Data Flow Analysis

13 flows8 with unsanitized paths
ajax_preview_campaign (includes\class-campaigns.php:1030)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
2 unprotected

PushRelay – Push Notifications Attack Surface

Entry Points58
Unprotected2

AJAX Handlers 51

authwp_ajax_pushrelay_save_settingsincludes\class-admin.php:47
authwp_ajax_pushrelay_detect_websiteincludes\class-admin.php:48
authwp_ajax_pushrelay_test_connectionincludes\class-admin.php:49
authwp_ajax_pushrelay_get_chart_dataincludes\class-admin.php:50
authwp_ajax_pushrelay_export_analyticsincludes\class-admin.php:51
authwp_ajax_pushrelay_create_campaignincludes\class-admin.php:52
authwp_ajax_pushrelay_get_analytics_overviewincludes\class-analytics.php:23
authwp_ajax_pushrelay_get_campaign_analyticsincludes\class-analytics.php:24
authwp_ajax_pushrelay_get_subscriber_analyticsincludes\class-analytics.php:25
authwp_ajax_pushrelay_get_chart_dataincludes\class-analytics.php:26
authwp_ajax_pushrelay_export_analyticsincludes\class-analytics.php:27
authwp_ajax_pushrelay_get_realtime_statsincludes\class-analytics.php:28
authwp_ajax_pushrelay_create_campaignincludes\class-campaigns.php:52
authwp_ajax_pushrelay_send_campaignincludes\class-campaigns.php:53
authwp_ajax_pushrelay_delete_campaignincludes\class-campaigns.php:54
authwp_ajax_pushrelay_get_campaignincludes\class-campaigns.php:55
authwp_ajax_pushrelay_preview_campaignincludes\class-campaigns.php:56
authwp_ajax_pushrelay_get_logsincludes\class-debug-logger.php:72
authwp_ajax_pushrelay_clear_logsincludes\class-debug-logger.php:73
authwp_ajax_pushrelay_export_logsincludes\class-debug-logger.php:74
authwp_ajax_pushrelay_subscribeincludes\class-frontend.php:32
noprivwp_ajax_pushrelay_subscribeincludes\class-frontend.php:33
authwp_ajax_pushrelay_run_health_checkincludes\class-health-check.php:26
authwp_ajax_pushrelay_get_health_statusincludes\class-health-check.php:27
authwp_ajax_pushrelay_fix_issuesincludes\class-health-check.php:28
authwp_ajax_pushrelay_create_segmentincludes\class-segmentation.php:24
authwp_ajax_pushrelay_get_segmentsincludes\class-segmentation.php:25
authwp_ajax_pushrelay_get_segmentincludes\class-segmentation.php:26
authwp_ajax_pushrelay_update_segmentincludes\class-segmentation.php:27
authwp_ajax_pushrelay_delete_segmentincludes\class-segmentation.php:28
authwp_ajax_pushrelay_calculate_segmentincludes\class-segmentation.php:29
authwp_ajax_pushrelay_get_segment_previewincludes\class-segmentation.php:30
authwp_ajax_pushrelay_test_swincludes\class-service-worker.php:63
authwp_ajax_pushrelay_regenerate_swincludes\class-service-worker.php:64
authwp_ajax_pushrelay_get_subscribersincludes\class-subscribers.php:24
authwp_ajax_pushrelay_get_subscriberincludes\class-subscribers.php:25
authwp_ajax_pushrelay_update_subscriberincludes\class-subscribers.php:26
authwp_ajax_pushrelay_delete_subscriberincludes\class-subscribers.php:27
authwp_ajax_pushrelay_bulk_delete_subscribersincludes\class-subscribers.php:28
authwp_ajax_pushrelay_export_subscribersincludes\class-subscribers.php:29
authwp_ajax_pushrelay_get_subscriber_statsincludes\class-subscribers.php:30
authwp_ajax_pushrelay_filter_subscribersincludes\class-subscribers.php:31
authwp_ajax_pushrelay_create_ticketincludes\class-support-tickets.php:29
authwp_ajax_pushrelay_get_ticketsincludes\class-support-tickets.php:30
authwp_ajax_pushrelay_get_ticketincludes\class-support-tickets.php:31
authwp_ajax_pushrelay_delete_ticketincludes\class-support-tickets.php:32
authwp_ajax_pushrelay_woo_get_settingsincludes\class-woocommerce.php:62
authwp_ajax_pushrelay_woo_save_settingsincludes\class-woocommerce.php:63
authwp_ajax_pushrelay_woo_get_statsincludes\class-woocommerce.php:64
noprivwp_ajax_pushrelay_track_product_viewincludes\class-woocommerce.php:65
authwp_ajax_pushrelay_track_product_viewincludes\class-woocommerce.php:66

REST API Routes 2

GET/wp-json/pushrelay/v1/service-workerincludes\class-service-worker.php:158
GET/wp-json/pushrelay/v1/manifestincludes\class-service-worker.php:164

Shortcodes 5

[pushrelay_subscribe] includes\class-shortcodes.php:23
[pushrelay_widget] includes\class-shortcodes.php:24
[pushrelay_stats] includes\class-shortcodes.php:25
[pushrelay_count] includes\class-shortcodes.php:26
[pushrelay_status] includes\class-shortcodes.php:27
WordPress Hooks 49
actionadmin_initincludes\class-admin.php:32
actionadmin_initincludes\class-admin.php:35
actionadmin_menuincludes\class-admin.php:37
actionadmin_enqueue_scriptsincludes\class-admin.php:38
actionadmin_enqueue_scriptsincludes\class-admin.php:39
actionadmin_print_scriptsincludes\class-admin.php:40
actionadmin_initincludes\class-admin.php:41
actionadmin_noticesincludes\class-admin.php:42
actionadmin_initincludes\class-admin.php:43
actionadmin_footerincludes\class-admin.php:44
actionwp_after_insert_postincludes\class-campaigns.php:46
actionpushrelay_process_queueincludes\class-campaigns.php:49
actionsave_postincludes\class-campaigns.php:59
actionwp_headincludes\class-frontend.php:23
actionwp_footerincludes\class-frontend.php:24
actionwp_enqueue_scriptsincludes\class-frontend.php:25
actionadd_meta_boxesincludes\class-frontend.php:28
actionsave_postincludes\class-frontend.php:29
actionpushrelay_health_checkincludes\class-health-check.php:23
actioninitincludes\class-service-worker.php:50
filterquery_varsincludes\class-service-worker.php:51
actiontemplate_redirectincludes\class-service-worker.php:54
actionparse_requestincludes\class-service-worker.php:57
actionpushrelay_settings_updatedincludes\class-service-worker.php:60
actioninitincludes\class-service-worker.php:67
actionwp_headincludes\class-service-worker.php:70
actionwp_headincludes\class-service-worker.php:71
actionrest_api_initincludes\class-service-worker.php:74
actionwoocommerce_add_to_cartincludes\class-woocommerce.php:33
actionwoocommerce_cart_updatedincludes\class-woocommerce.php:34
actionwoocommerce_new_orderincludes\class-woocommerce.php:37
actionwoocommerce_order_status_changedincludes\class-woocommerce.php:38
actionwoocommerce_product_set_stockincludes\class-woocommerce.php:41
actionwoocommerce_product_set_sale_priceincludes\class-woocommerce.php:42
actionwoocommerce_new_productincludes\class-woocommerce.php:43
actionwp_footerincludes\class-woocommerce.php:46
actionpushrelay_woo_check_abandoned_cartsincludes\class-woocommerce.php:49
actionpushrelay_woo_check_price_dropsincludes\class-woocommerce.php:50
actionadmin_noticesinstall-database.php:119
actionadmin_post_pushrelay_install_tablesinstall-database.php:148
actionshutdownpushrelay.php:58
actioninitpushrelay.php:159
actioninitpushrelay.php:160
actionadmin_initpushrelay.php:161
actionadmin_noticespushrelay.php:183
actionadmin_noticespushrelay.php:193
actionplugins_loadedpushrelay.php:653
actionadmin_initpushrelay.php:656
filtercron_schedulespushrelay.php:668

Scheduled Events 8

pushrelay_health_check
pushrelay_process_queue
pushrelay_woo_check_abandoned_carts
pushrelay_woo_check_price_drops
pushrelay_health_check
pushrelay_process_queue
pushrelay_health_check
pushrelay_process_queue
Maintenance & Trust

PushRelay – Push Notifications Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedJan 17, 2026
PHP min version7.4
Downloads329

Community Trust

Rating0/100
Number of ratings0
Active installs0
Developer Profile

PushRelay – Push Notifications Developer Profile

pushrelay

1 plugin · 0 total installs

94
trust score
Avg Security Score
100/100
Avg Patch Time
30 days
View full developer profile
Detection Fingerprints

How We Detect PushRelay – Push Notifications

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/pushrelay/assets/css/admin.css/wp-content/plugins/pushrelay/assets/css/frontend.css/wp-content/plugins/pushrelay/assets/js/admin.js/wp-content/plugins/pushrelay/assets/js/frontend.js/wp-content/plugins/pushrelay/assets/js/vendor/moment.min.js/wp-content/plugins/pushrelay/assets/js/vendor/moment_tz.min.js/wp-content/plugins/pushrelay/assets/js/vendor/Chart.min.js/wp-content/plugins/pushrelay/assets/js/vendor/chartjs_adapter.min.js+14 more
Script Paths
/wp-content/plugins/pushrelay/assets/js/admin.js/wp-content/plugins/pushrelay/assets/js/frontend.js/wp-content/plugins/pushrelay/assets/js/vendor/moment.min.js/wp-content/plugins/pushrelay/assets/js/vendor/moment_tz.min.js/wp-content/plugins/pushrelay/assets/js/vendor/Chart.min.js/wp-content/plugins/pushrelay/assets/js/vendor/chartjs_adapter.min.js+14 more
Version Parameters
pushrelay/assets/css/admin.css?ver=pushrelay/assets/css/frontend.css?ver=pushrelay/assets/js/admin.js?ver=pushrelay/assets/js/frontend.js?ver=pushrelay/assets/js/vendor/moment.min.js?ver=pushrelay/assets/js/vendor/moment_tz.min.js?ver=pushrelay/assets/js/vendor/Chart.min.js?ver=pushrelay/assets/js/vendor/chartjs_adapter.min.js?ver=pushrelay/assets/js/vendor/vue.min.js?ver=pushrelay/assets/js/vendor/vue_router.min.js?ver=pushrelay/assets/js/vendor/vue_toastification.min.js?ver=pushrelay/assets/js/vendor/vue_chartjs.min.js?ver=pushrelay/assets/js/vendor/vue_multiselect.min.js?ver=pushrelay/assets/js/vendor/vue_sweetalert2.min.js?ver=pushrelay/assets/js/vendor/tiptool.min.js?ver=pushrelay/assets/js/vendor/swiper.min.js?ver=pushrelay/assets/js/vendor/vue_formulate.min.js?ver=pushrelay/assets/js/vendor/vue_date_fns.min.js?ver=pushrelay/assets/js/vendor/vue_chartjs_plugin_datalabels.min.js?ver=pushrelay/assets/js/vendor/vue_chartjs_plugin_annotation.min.js?ver=pushrelay/assets/js/vendor/vue_chartjs_plugin_zoom.min.js?ver=pushrelay/assets/js/vendor/pushrelay_sdk.min.js?ver=

HTML / DOM Fingerprints

CSS Classes
pushrelay-dashboardpushrelay-subscribe-button
HTML Comments
<!-- PushRelay Service Worker --><!-- PushRelay Push Notifications -->
Data Attributes
data-pushrelay-tokendata-pushrelay-subscribe-textdata-pushrelay-unsubscribe-text
JS Globals
window.pushrelaySDKwindow.PushRelaywindow.PushRelayFrontendConfig
REST Endpoints
/wp-json/pushrelay/v1/subscribe/wp-json/pushrelay/v1/unsubscribe/wp-json/pushrelay/v1/analytics
Shortcode Output
[pushrelay_subscribe_button]
FAQ

Frequently Asked Questions about PushRelay – Push Notifications