Pushpad Logo Pushpad

Web Push Notification Service

Pushpad is the easiest way to add push notifications to websites and web apps.

📈 We deliver millions of web push notifications daily.

Web notifications on desktop and mobile

About Web Push Notifications

Websites and web apps can send push notifications. Try »

Off-Site Push Notifications

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

Web Technology • No App Required

Pushpad uses the W3C Push API for Chrome, Firefox, Edge and Opera, and the Apple Push Notification service for Safari. We rely only on browser features — no apps, no plugins.

Desktop & Mobile Browser Support

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

Pushpad pro prompt and 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 a web service and a dashboard and you can subscribe the users to web push notifications directly on your domain using the Javascript SDK.

Get started

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.

Send new notification from dashboard
notification = Pushpad::Notification.new({
  body: "Hello world!", # required
  title: "Web Notification Example",
  target_url: "http://example.com",
  icon_url: "http://example.com/assets/icon.png"
})

# deliver to a user
user = User.find …
notification.deliver_to user # or user.id

# deliver to a group of users
users = User.where …
notification.deliver_to users

# deliver to some users only if they have a given preference
# e.g. only users who have opted in for global announcements will be reached
notification.deliver_to users, tags: ['global-announcements']

# deliver to segments
notification.broadcast tags: ['segment1', 'segment2']

# deliver to everyone
notification.broadcast
$notification = new Pushpad\Notification(array(
  'body' => "Hello world!", # required
  'title' => "Web Notification Example",
  'target_url' => "http://example.com",
  'icon_url' => "http://example.com/assets/icon.png"
));

# deliver to a user
$notification->deliver_to("user1");

# deliver to a group of users
$notification->deliver_to(["user1", "user2", "user3"]);

# deliver to some users only if they have a given preference
# e.g. only users who have opted in for global announcements will be reached
$notification->deliver_to($users, ["tags" => ["global-announcements"]]);

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

# deliver to everyone
$notification->broadcast();
var pushpad = require('pushpad');

var project = new pushpad.Pushpad({
  authToken: AUTH_TOKEN,
  projectId: PROJECT_ID
});

var notification = new pushpad.Notification({
  project: project,
  body: 'Hello world!',
  title: 'Web Notification Example',
  targetUrl: 'http://example.com',
  iconUrl: 'http://example.com/assets/icon.png' // optional, defaults to the project icon
});

// deliver to a user
notification.deliverTo('user1', function(err, result) { /*...*/ });

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

// deliver to some users only if they have a given preference
// e.g. only users who have opted in for global announcements will be reached
notification.deliverTo(users, { tags: ['global-announcements'] }, function (err, result) { /*...*/ });

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

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

project = pushpad.Pushpad(auth_token='5374d7dfeffa2eb49965624ba7596a09', project_id=123)

notification = pushpad.Notification(
    project,
    body="Hello world!",
    title="Web Notification Example",
    target_url="http://example.com",
    icon_url="http://example.com/assets/icon.png" # optional, defaults to the project icon
)

# deliver to a user
notification.deliver_to('user_id')

# deliver to a group of users
notification.deliver_to(('user1_id', 'user2_id', 'user3_id'))

# deliver to some users only if they have a given preference
# e.g. only users who have opted in for global announcements will be reached
notification.deliver_to(('user1_id', 'user2_id', 'user3_id'), tags=['global-announcements'])

# deliver to segments
notification.broadcast(tags=['segment1', 'segment2'])

# deliver to everyone
notification.broadcast()
String authToken = "5374d7dfeffa2eb49965624ba7596a09";
String projectId = "123";
Pushpad pushpad = new Pushpad(authToken, projectId);

Notification notification = pushpad.buildNotification("Web Notification Example", "Hello world!", "http://example.com");
// optional, defaults to the project icon
notification.iconUrl = "http://example.com/assets/icon.png";

try {
  // deliver to a user
  notification.deliverTo("user_id");

  // deliver to a group of users
  String[] users = {"user1_id", "user2_id", "user3_id"};
  notification.deliverTo(users);

  // deliver to some users only if they have a given preference
  // e.g. only users who have opted in for global announcements will be reached
  String[] tags1 = {"global-announcements"};
  notification.deliverTo(users, tags1);

  // deliver to segments
  String[] tags2 = {"segment1", "segment2"};
  notification.broadcast(tags2);

  // deliver to everyone
  notification.broadcast();
} catch (DeliveryException e) {
  e.printStackTrace();
}
curl -H 'Authorization: Token token="AUTH_TOKEN"' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -X POST 'https://pushpad.xyz/projects/PROJECT_ID/notifications' \
  -d '{
    "notification": {
      "body": "Hello world!",
      "title": "Web Notification Example",
      "target_url": "http://example.com",
      "icon_url": "http://example.com/assets/icon.png"
    },
    "uids": ["user1_id", "user2_id", "user3_id"],
    "tags": ["segment1", "segment2"]
  }'
Web notifications examples

Reach the Right Audience

Transactional Notifications & User Authentication

Safely authenticate your users with SSO and target users and groups instead of devices.

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

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.

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.

Automatic Configuration

The VAPID key pairs required for Firebase, Mozilla autopush and Windows Push Notification Services are generated and configured automatically.

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

API calls for sending web push notifications take 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.

Rich web notifications

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.

Scheduled Notifications

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

Privacy

Privacy & Data is yours

We protect the privacy of your business and we don't resell data about your users. We are based in Europe.

Wordpress plugin metabox

Wordpress integration

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

Get started

More than 6,000 developers have already signed up.