Title: PushNotificationService.com
Author: pushnotificationservice
Published: <strong>July 18, 2026</strong>
Last modified: July 18, 2026

---

Search plugins

![](https://ps.w.org/pushnotificationservice-com/assets/banner-772x250.png?rev=3612842)

![](https://ps.w.org/pushnotificationservice-com/assets/icon-256x256.png?rev=3612842)

# PushNotificationService.com

 By [pushnotificationservice](https://profiles.wordpress.org/pushnotificationservice/)

[Download](https://downloads.wordpress.org/plugin/pushnotificationservice-com.1.0.4.zip)

 * [Details](https://wordpress.org/plugins/pushnotificationservice-com/#description)
 * [Reviews](https://wordpress.org/plugins/pushnotificationservice-com/#reviews)
 *  [Installation](https://wordpress.org/plugins/pushnotificationservice-com/#installation)
 * [Development](https://wordpress.org/plugins/pushnotificationservice-com/#developers)

 [Support](https://wordpress.org/support/plugin/pushnotificationservice-com/)

## Description

Connects your WordPress site to [PushNotificationService.com](https://pushnotificationservice.com),
a privacy-friendly web push service with unlimited subscribers on every plan.

 * **One-field setup** — paste your Site ID and the subscription snippet is injected
   on every page.
 * **No file uploads** — the required service worker (`/pnsc-sw`) is served by the
   plugin itself. This is the step that breaks most manual web-push installs; here
   it just works.
 * **Subscribe button** — append it to every post with one checkbox, or place it
   anywhere with the `[pnsc_subscribe]` shortcode. It styles itself like your theme’s
   buttons, reflects the visitor’s real subscription state, and shows iPhone and
   iPad visitors Add-to-Home-Screen instructions instead of a dead end.
 * **Push on publish** — optionally send a notification (title, excerpt, permalink,
   featured image, your Site Icon) the moment a post goes live, including scheduled
   posts. Each post pushes at most once.
 * **Tag targeting** — optionally target only subscribers with specific tags.
 * **Privacy-friendly** — no tracking cookies, no per-user click history, subscribers
   can unsubscribe from any notification with one click.

You need a pushnotificationservice.com account (30-day free trial). Push delivery
uses the open Web Push standard — subscribers opt in through their browser’s native
permission prompt.

### External services

This plugin is the official integration for PushNotificationService.com, a web push
notification service operated by us. It cannot function without connecting to that
service. It connects in three ways:

 1. **Push SDK script** — on every public page (when snippet injection is enabled and
    a Site ID is set), the plugin loads the subscription SDK from `https://cdn.pushnotificationservice.
    com/sdk/v1.js`. Loading the script sends the visitor’s IP address and user agent
    to our CDN, as with any script request. The SDK does not collect, store, or transmit
    any visitor data unless the visitor explicitly opts in to push notifications through
    their browser’s native permission prompt. After opt-in, the visitor’s browser push
    subscription (endpoint URL and encryption keys, plus your Site ID) is sent to `
    https://api.pushnotificationservice.com` so notifications can be delivered to them.
 2. **Service worker** — the plugin serves a service worker at `/pnsc-sw` on your own
    domain that imports its logic from `https://cdn.pushnotificationservice.com/sdk/
    v1/sw.js`. It runs only for visitors who have opted in.
 3. **Push on publish** (optional, off by default) — when you publish a post and this
    feature is enabled, the plugin sends the post’s title, excerpt, permalink, featured
    image URL, your Site Icon URL, and your configured target tags, together with your
    Site ID and API key, to `https://api.pushnotificationservice.com` to create the
    notification.

No data is sent to any service other than PushNotificationService.com. The service’s
terms and policies:

 * Terms of service: https://pushnotificationservice.com/terms
 * Privacy policy: https://pushnotificationservice.com/privacy

## Screenshots

[⌊The whole setup, on one screen: paste your Site ID on the Push Notifications settings
screen, then choose snippet injection, push-on-publish, and tag targeting.⌉⌊The 
whole setup, on one screen: paste your Site ID on the Push Notifications settings
screen, then choose snippet injection, push-on-publish, and tag targeting.⌉[

The whole setup, on one screen: paste your Site ID on the Push Notifications settings
screen, then choose snippet injection, push-on-publish, and tag targeting.

[⌊What subscribers receive when a post goes live — your site icon, the post's title,
excerpt, and featured image, linking to the post.⌉⌊What subscribers receive when
a post goes live — your site icon, the post's title, excerpt, and featured image,
linking to the post.⌉[

What subscribers receive when a post goes live — your site icon, the post’s title,
excerpt, and featured image, linking to the post.

## Installation

 1. Install and activate the plugin.
 2. In your [dashboard](https://app.pushnotificationservice.com), create a site for
    this domain and copy its Site ID.
 3. In WordPress, go to **Settings  Push Notifications** and paste the Site ID.
 4. (Optional) For push-on-publish, create an API key in the dashboard and paste it
    too.
 5. (Optional) Tick **Add a subscribe button at the end of each post**, or put `[pnsc_subscribe]`
    wherever you want the button.
 6. Visit **Settings  Permalinks** and click Save once, so the `/pnsc-sw` route registers.

## FAQ

### Do I need to upload a service worker file?

No — the plugin serves it at `/pnsc-sw` automatically, including for WordPress installs
in a subdirectory. If that URL 404s, re-save your permalinks.

### How do visitors subscribe?

Give them a button: tick **Add a subscribe button at the end of each post** in the
settings, or place `[pnsc_subscribe]` in any post, page, or block. The label is 
customizable — `[pnsc_subscribe text="Notify me" subscribed_text="You're in"]` —
and the button only appears where push can actually work. Alternatively, enable 
the automatic permission prompt, though a user-triggered button converts better 
and avoids browser penalties for unsolicited prompts.

### When does a post trigger a push?

On the transition to published (including scheduled posts going live), for the `
post` type, when push-on-publish is enabled and an API key is set. Each post pushes
at most once; publishing, unpublishing, and republishing will not send a duplicate.

### Does this work on iOS?

iOS and iPadOS require the visitor to add your site to their Home Screen (a PWA)
before push permission can be requested — an Apple platform restriction. Desktop
browsers and Android work without caveats. The subscribe button handles this for
you: on iOS Safari it shows Add-to-Home-Screen instructions instead of a button 
that cannot work, and once the visitor opens your site from their Home Screen, the
same button subscribes them normally.

### Where is my API key stored?

In your WordPress options table, like other plugin credentials. Use a dedicated 
key for WordPress so you can revoke it independently.

### Are visitors tracked?

No. Nothing is collected from visitors unless they explicitly opt in to notifications
via their browser’s permission prompt, and even then only the push subscription 
needed to deliver notifications is stored. See the External services section for
details.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“PushNotificationService.com” is open source software. The following people have
contributed to this plugin.

Contributors

 *   [ pushnotificationservice ](https://profiles.wordpress.org/pushnotificationservice/)

[Translate “PushNotificationService.com” into your language.](https://translate.wordpress.org/projects/wp-plugins/pushnotificationservice-com)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/pushnotificationservice-com/),
check out the [SVN repository](https://plugins.svn.wordpress.org/pushnotificationservice-com/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/pushnotificationservice-com/)
by [RSS](https://plugins.trac.wordpress.org/log/pushnotificationservice-com/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.4

 * New subscribe button: tick “Add a subscribe button at the end of each post” in
   the settings, or place `[pnsc_subscribe]` anywhere (attributes: `text`, `subscribed_text`,`
   denied_text`, `ios_hint` — set `ios_hint="off"` to disable the iOS instructions).
   The button uses your theme’s native button styling, shows the visitor’s real 
   subscription state, and appears only where push can work.
 * On iOS Safari, where Apple only allows push for Home Screen web apps, the button
   shows Add-to-Home-Screen instructions instead of rendering nothing.
 * Placing a button now loads the subscription SDK on that page even when “Add the
   subscription snippet to every page” is off, so a single signup post works without
   a site-wide snippet.

#### 1.0.3

 * Push-on-publish notifications now carry your Site Icon (Settings  General) as
   the notification icon, so pushes are recognizably yours on the subscriber’s screen.
   Sent only when a Site Icon is set and served over HTTPS; nothing else changes
   if you haven’t set one.

#### 1.0.2

 * Renamed the plugin to “PushNotificationService.com” and moved every function,
   option, constant, script handle, and route to the `pnsc` prefix. The service 
   worker now serves at `/pnsc-sw` (was `/pns-sw`); existing installs pick this 
   up automatically on the next page load.
 * The service-worker route now escapes its imported URL with `esc_url()`.
 * Documented the connection to PushNotificationService.com in a new External services
   readme section, with terms and privacy links.
 * Uninstall now also removes the stored rewrite-flush version marker.

#### 1.0.1

 * The service worker now serves at `/pns-sw` instead of `/pns-sw.js`. Many hosts
   have an nginx/Apache/CDN rule that treats any `*.js` URL as a static file and
   returns a hard 404 if nothing exists on disk at that path, without ever reaching
   WordPress, if it wasn’t caching the request already. The route’s Content-Type
   header (not its URL) is what makes it a valid service worker, so dropping the
   recognizable static extension avoids that whole class of host misconfiguration.
   Existing installs pick this up automatically on the next page load, no action
   needed.
 * Fixed: the snippet is now added via `wp_enqueue_script()` instead of being echoed
   directly, per directory guidelines.

#### 1.0.0

 * Initial release: snippet injection, hosted service worker, push-on-publish, tag
   targeting.

## Meta

 *  Version **1.0.4**
 *  Last updated **3 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [Notifications](https://wordpress.org/plugins/tags/notifications/)[publish](https://wordpress.org/plugins/tags/publish/)
   [push notifications](https://wordpress.org/plugins/tags/push-notifications/)[subscribers](https://wordpress.org/plugins/tags/subscribers/)
   [web push](https://wordpress.org/plugins/tags/web-push/)
 *  [Advanced View](https://wordpress.org/plugins/pushnotificationservice-com/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/pushnotificationservice-com/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/pushnotificationservice-com/reviews/)

## Contributors

 *   [ pushnotificationservice ](https://profiles.wordpress.org/pushnotificationservice/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/pushnotificationservice-com/)