Web Push Notifications

Reach them even when the tab is closed

One prompt, one subscription, one HTTP call. Push notifications land on desktop and mobile without an app, an extension, or a download.

Enable notifications Create an account

Try it right now

Opt this browser in and watch the subscriber count tick up. This is the same endpoint your campaign code calls.

Checking push support…

Your browser will ask permission. Nothing is sent until you allow it.

-
Subscribers
-
This browser
-
Delivery
# subscribe in the browser (one prompt, no form)
navigator.serviceWorker.register('/sw.js')
  .then(reg => reg.pushManager.subscribe({
        userVisibleOnly: true,
        applicationServerKey: '<vapid-public-key>'
      }))
  .then(sub => fetch('/subscribe.php', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ token: sub.endpoint, keys: sub.toJSON().keys })
      }))

# send to every subscriber, from anywhere
curl -X POST https://push.gsvirtual.net/api/v1/send \
  -H "Authorization: Bearer gsv_key" -H "Content-Type: application/json" \
  -d '{"channel":"push","title":"Back in stock","body":"The thing you wanted is available again.","url":"/shop/blue-hat"}'

How web push works

Three moving parts, and you only ever touch two of them.

1

User subscribes

The visitor allows notifications through the browser's own prompt. No email, no form, no app install.

2

You send

One authenticated HTTP call from your dashboard or your code. Title, body, and a link are enough.

3

It arrives

Desktop or mobile, foreground or not. Queued deliveries are retried when the device comes back online.

Built for engagement

The boring parts - retries, dead-token cleanup, quotas, delivery logs - are handled for you.

📣

1-click subscribe

A single browser prompt converts a visitor. No wall of fields before the opt-in.

🕑

Advance scheduling

Queue a campaign for a moment that suits your audience, not just right now.

📈

Automatic cleanup

Tokens the push service reports as dead are pruned on the next send, so lists stay honest.

📋

Delivery logging

Every campaign records who was reached, who was not, and why.

🔒

Scoped API keys

Read, write, or readwrite bearer keys per client, with a push quota you control.

📱

Works offline

Messages queue on the service and arrive as soon as the device reconnects.

What people send

The same primitive fits very different jobs.

🛍

Cart recovery

Most carts are abandoned. A single timely nudge recovers a meaningful slice of them.

📦

Back in stock

Let shoppers tell you what they want, then ping the moment it returns.

💰

Price drops

Reach the visitors who already showed interest in an item.

🚚

Order updates

Shipment and status changes that people actually want on their phone.

Browser support

Anything with the Push API, on desktop, mobile or tablet.

ChromeEdgeFirefox Safari 16.4+OperaAndroid iOS / iPadOSmacOSWindowsLinux

iOS and iPadOS require Safari 16.4 or newer, and the site must be served over HTTPS. Notifications must be installed from a user gesture on iOS.

Plans & pricing

Start free. Pay when the list grows.

Free

$0/mo

Up to 3,000 subscribers

  • Unlimited notifications
  • Mobile + desktop
  • API access
  • 1,000 API calls / month
  • Email support
Get started
Most popular

Growth

$19/mo

Up to 50,000 subscribers

  • Everything in Free
  • Scheduled campaigns
  • Automatic dead-token cleanup
  • Rich notifications with actions
  • Delivery analytics
  • 30,000 API calls / month
Start free trial

Scale

$79/mo

Unlimited subscribers

  • Everything in Growth
  • Drip campaigns
  • A/B testing
  • Custom subdomain
  • Priority support
  • 500,000 API calls / month
Talk to us

Questions

Do users have to install anything?

No. There is no app and no extension. The browser shows a permission prompt; if the visitor allows it, you have a subscription.

Does this work on iPhone and iPad?

Yes, on iOS and iPadOS 16.4 and newer. Safari on those releases supports Web Push, but the site must be HTTPS and the first subscription has to happen from a tap.

What happens if a message cannot be delivered?

Queued deliveries are retried when the device reconnects. If the push service reports a registration as permanently invalid, it is pruned from the list on the next send.

Can I export my subscribers if I leave?

Yes. Subscriptions are plain JSON you can read and archive yourself, and the API exposes your own list.

Why is delivery currently marked as pending?

Subscriptions are being collected now, but outbound delivery stays disabled until a push provider credential is configured. Add one under Admin → Providers and delivery switches on without any code change.