The Best Way to Send Web Push Notifications

Pushpad is a reliable service for sending notifications from websites and web apps.
We deliver millions of web push notifications every day.

Web push notifications on desktop and mobile

About Web Push Notifications

Websites and web apps can send push notifications to deliver news, updates, promotions and personalized content.

Web Technology

We rely on browser features: Pushpad uses the W3C Push API and related standards for sending the notifications.

Off-Site Push Notifications

Web push notifications are delivered instantly, even when the users are not on your website.

Desktop & Mobile Browser Support

Pushpad works with all browsers (desktop & mobile) that support web push notifications.

Browser permission prompt for notifications triggered by JavaScript code

Web Push Notification Service

Pushpad is the professional solution for web app developers and websites of any size that want to send push notifications. We offer an API and a dashboard and you can subscribe the users to web push notifications on your domain using the JavaScript SDK or the widget.

Get started with the JavaScript SDK

If you are looking for a standard solution, like a prompt or button, you can use pushpad('widget'). Otherwise you can build any UI component with your custom style and a few simple methods: subscribe the user and display the native permission prompt with pushpad('subscribe'), get the current subscription status with pushpad('status'), unsubscribe the user with pushpad('unsubscribe'), authenticate your users with pushpad('uid') or attach other data for targeting with pushpad('tags').

Read the docs

Sending web push notifications

You can send web notifications manually from the dashboard. You can also automate notification sending with the REST API or using one of the libraries. We also offer a Zapier app for RSS feeds and other integrations.

Sending a web push notification from the Pushpad dashboard
notification = Pushpad::Notification.new({
  title: "Web Notification Example",
  body: "Hello world!",
  target_url: "https://example.com"

# deliver to specific users
notification.deliver_to ["user1", "user2"]

# deliver to segments
notification.broadcast tags: ['tag1', 'tag2']

# deliver to everyone
$notification = new Pushpad\Notification(array(
  'title' => "Web Notification Example",
  'body' => "Hello world!",
  'target_url' => "https://example.com"

# deliver to specific users
$notification->deliver_to(["user1", "user2"]);

# deliver to segments
$notification->broadcast(["tags" => ["tag1", "tag2"]]);

# deliver to everyone
var pushpad = require('pushpad');
var project = new pushpad.Pushpad({ authToken: AUTH_TOKEN, projectId: PROJECT_ID });

var notification = new pushpad.Notification({
  project: project,
  title: 'Web Notification Example',
  body: 'Hello world!',
  targetUrl: 'https://example.com'

// deliver to specific users
notification.deliverTo(['user1', 'user2'], function(err, result) { /*...*/ });

// deliver to segments
notification.broadcast({ tags: ['tag1', 'tag2'] }, function (err, result) { /*...*/ });

// deliver to everyone
notification.broadcast(function(err, result) { /*...*/ });
import pushpad

project = pushpad.Pushpad(auth_token=AUTH_TOKEN, project_id=PROJECT_ID)

notification = pushpad.Notification(
    title="Web Notification Example",
    body="Hello world!",

# deliver to specific users
notification.deliver_to(('user1', 'user2'))

# deliver to segments
notification.broadcast(tags=['tag1', 'tag2'])

# deliver to everyone
Pushpad pushpad = new Pushpad(authToken, projectId);

Notification notification = pushpad.buildNotification(
  "Web Notification Example",
  "Hello world!",

try {
  // deliver to specific users
  String[] users = {"user1", "user2"};

  // deliver to segments
  String[] tags = {"tag1", "tag2"};

  // deliver to everyone
} catch (DeliveryException e) {
pushpad.Configure("AUTH_TOKEN", "PROJECT_ID")

n := pushpad.Notification {
  Title: "Web Notification Example",
  Body: "Hello world!",
  TargetURL: "https://example.com",
res, err := n.Send()

// deliver to specific users
n := pushpad.Notification { Body: "Hello world!", UIDs: []string{"user1", "user2"} }
res, err := n.Send()

// deliver to segments
n := pushpad.Notification { Body: "Hello world!", Tags: []string{"tag1", "tag2"} }
res, err := n.Send()

// deliver to everyone
n := pushpad.Notification { Body: "Hello world!" }
res, err := n.Send()
curl -X POST 'https://pushpad.xyz/api/v1/projects/PROJECT_ID/notifications' \
  -H 'Authorization: Token token="AUTH_TOKEN"' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{
    "notification": {
      "title": "Web Notification Example",
      "body": "Hello world!",
      "target_url": "https://example.com"
    "uids": ["user1", "user2"],
    "tags": ["tag1", "tag2"]
Examples of web push notifications

Reach the Right Audience

Transactional Notifications & User Authentication

Authenticate your users with signed tokens when they subscribe to notifications and then send messages to specific users or groups.

Tag-based Routing

Filter your audience with tags and expressions (AND, OR, NOT) and manage notification preferences for each device.

Marketing Campaigns & Bulk Notifications

You can reach all your subscribers or create custom segments. It's very simple and you can reach your audience in a few minutes, even if you have millions of users.

Stats about notifications and subscribers in the dashboard

Analytics & Monitoring

Project overview

See how many people subscribe to your web notifications and monitor your project with aggregated stats.

Detailed stats

See the number of clicks and the delivery status for each notification.

Custom metrics

Tag the notifications to aggregate the stats in custom ways. Compare the CTR and other metrics for different groups of notifications.

The layers involved for sending web push notifications

A Layer of Abstraction

Unified API for Multiple Services

Send web notifications to Firebase, Mozilla autopush, Windows Push Notification Services and Apple Push Notification service with just one API.

High Level SDK

The libraries for web push are simple and opinionated. We have already made the hard choices for you.

Subscription Management

Pushpad automate the configuration of VAPID key pairs required for web push, simplify the management of subscriptions, automatically replace subscriptions with the new ones when they expire and removes the invalid subscriptions.

Performance and sending speed

Performance & Deliverability

High Throughput

You can send thousands of web push notifications per second and they get delivered in near real-time, without queues.

Low Response Time & Page Speed

An API call for sending a web push notification to millions of subscribers takes only fractions of a second. Also the JavaScript SDK is asynchronous and doesn't impact page load speed.

Error Handling

We manage many kinds of exceptions and perform automatic retries to ensure the notification delivery.

A web push notification with images and other features

Full-Featured Web Notifications

Awesome Notifications

Send awesome web notifications and customize the title, body, link, icon, expiration and sender domain. You can also add emoji, large images and action buttons. Action buttons can open a web page or even perform JavaScript actions in background.

Welcome Notifications

You can easily create welcome messages and welcome series that are automatically sent to the new subscribers.

Scheduled Notifications

You can create scheduled notifications that will be sent at a given time in the future.

Different ways for subscribing the user to notifications (custom permission prompt, bell, button, checkbox and more)

Your Style & Custom Behavior

Customizable Widget

The widget is the easiest way to collect subscribers on your website using a subscription prompt, a floating action button or a subscribe button. You have complete control over text, color, behavior, timing, position, size, font and more.

JavaScript SDK for Developers

The JavaScript SDK allows you to build a custom subscription flow or new components for advanced integrations and a perfect user experience. You can create your own design or display the browser permission prompt directly.

Privacy protection (a user with a shield)

Data Protection

Privacy & Data is yours

We protect the privacy of your business and we don't resell data about your users. Our SDK is completely free from tracking cookies. We are based in Europe.

Identity and Access Management

You can add members with limited access to your project. In this way you protect your data, while multiple authors can manage the notifications.

Sending the notifications using the Wordpress plugin

Easy Integration

Vanilla JavaScript & Any Frontend Framework

The JavaScript SDK is written in plain JavaScript, without dependencies. It works well with any technology and any frontend framework, including React and Vue.

WordPress Plugin

Web push notifications re-engage your users by notifying them when you publish something new.

10,000+ websites have reached 210,000,000+ devices with billions of notifications using Pushpad.

We are an open core company and our libraries are trusted by major brands.