Notifications that deliver

Beams is a hosted push notifications API designed for developers who need critical transactional information delivered every time

Notify users with confidence

Realtime delivery and transparency for your iOS, Android and Web apps. Reach users instantly with expert notification deliverability across devices and locations at scale

Flexible delivery

Trigger notifications automatically with every event in your app using a single function

  • Delivery to iOS, Android and Web users with one request
  • High volume throughput and batch support
  • Automatic scaling
  • Support for common edge cases
  • Compatible with server SDKs in PHP, Node, Java, and more
  • Support for Google Chrome

Publish API

const beamsClient = new PushNotifications({

instanceId: 'YOUR_INSTANCE_ID_HERE',

secretKey: 'YOUR_SECRET_KEY_HERE'

});


beamsClient.publishToInterests(['hello'], {

apns: {

aps: {

alert: 'Hello!'

}

},

fcm: {

notification: {

title: 'Hello',

body: 'Hello, world!'

}

}

}).then((publishResponse) => {

console.log('Just published:', publishResponse.publishId);

}).catch((error) => {

console.error('Error:', error);

});

const beamsClient = new PushNotifications({

instanceId: 'YOUR_INSTANCE_ID_HERE',

secretKey: 'YOUR_SECRET_KEY_HERE'

});


beamsClient.publishToInterests(['hello'], {

apns: {

aps: {

alert: 'Hello!'

}

},

fcm: {

notification: {

title: 'Hello',

body: 'Hello, world!'

}

}

}).then((publishResponse) => {

console.log('Just published:', publishResponse.publishId);

}).catch((error) => {

console.error('Error:', error);

});

Beams supports:

Experts in every industry

We’ve delivered over 18 trillion messages across thousands of apps. Discover how Pusher customers use realtime infrastructure to delight their users.

“We need to focus on our features and app and not on plumbing and operations for a unique component in our stack. So we turned to Pusher—the experts—and it worked out great.”

Chris Brookins

CTO, Help Scout

Observable health

Debug your implementation and observe your delivery health with Debug Console and Insights

  • Notifications acknowledge by devices
  • Notifications opened by users
  • Realtime debug console

Easy integration

We host and manage your complete device token lifecycle

  • Supported iO, Android and Web SDKs
  • Offline support
  • Managed device token and interest database
  • Automatic retry handling

Integrate Client SDK

let pushNotifications = PushNotifications.shared


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

self.pushNotifications.start(instanceId: "YOUR_INSTANCE_ID")

self.pushNotifications.registerForRemoteNotifications()

try? self.pushNotifications.subscribe(interest: "hello")


return true

}


func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

self.pushNotifications.registerDeviceToken(deviceToken) {

print("Ready to receive notifications!")

}

}


func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

self.pushNotifications.handleNotification(userInfo: userInfo)

}

let pushNotifications = PushNotifications.shared


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

self.pushNotifications.start(instanceId: "YOUR_INSTANCE_ID")

self.pushNotifications.registerForRemoteNotifications()

try? self.pushNotifications.subscribe(interest: "hello")


return true

}


func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

self.pushNotifications.registerDeviceToken(deviceToken) {

print("Ready to receive notifications!")

}

}


func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

self.pushNotifications.handleNotification(userInfo: userInfo)

}

We have everything you need to get set up

Docs

Full reference of our APIs

Tutorials

Tutorials to help you get started

40+ SDKS

Bring our APIs to any tech stack

Trusted by giants, loved by startups

  • GDPR

    Pusher is GDPR compliant

  • Scalable

    Built to seamlessly scale

  • Realtime experts

    Delighting users since 2011

Start building with Beams today