Web Push Demo

OneSignal SDK integration example

Initializing

Loading SDK...

Data Flow

Waiting...
This Page SDK Client Service Worker IndexedDB OneSignal API Server FCM Chrome/Android APNs Safari/iOS Browser Push Event
OneSignal API Push Service Active

User Identity

Link this browser to a user ID for cross-device messaging

Device ID -
External ID -

Push Subscription

Request permission and subscribe to notifications

Permission -
Status -
Push Token -

Tags

Key-value pairs for user segmentation

No tags set

Foreground Notifications

Notifications received while on this page

No notifications yet. Send one from the OneSignal dashboard.

E-commerce Simulation

Simulate user behavior to see how tags drive targeted notifications

Browse Products

Cart Actions

Customer Type

Current User Profile

No behavior tracked yet

Matching Segments

No segments matched

Event Log

Waiting for SDK...
API Reference

Initialization

Docs
// Initialize SDK - call once on page load
await OneSignal.init({
  appId: "your-app-id",
  safari_web_id: "web.onesignal.auto.xxx",
  allowLocalhostAsSecureOrigin: true, // dev only
});

User Identity (External ID)

Docs
// Link browser to your user ID (cross-device)
await OneSignal.login("user_123");

// Get current IDs
OneSignal.User.onesignalId;  // device UUID
OneSignal.User.externalId;  // your user ID

// Clear identity (anonymous mode)
await OneSignal.logout();

Push Subscription

Docs
// Request permission & subscribe
await OneSignal.Notifications.requestPermission();

// Check subscription state
OneSignal.Notifications.permission;        // true/false
OneSignal.User.PushSubscription.optedIn;  // true/false
OneSignal.User.PushSubscription.token;    // push token

// Unsubscribe (opt out)
await OneSignal.User.PushSubscription.optOut();

// Re-subscribe (opt in)
await OneSignal.User.PushSubscription.optIn();

Tags (Segmentation)

Docs
// Add single tag
OneSignal.User.addTag("plan", "premium");

// Add multiple tags
OneSignal.User.addTags({ 
  plan: "premium", 
  interests: "tech,music" 
});

// Get all tags (returns object)
const tags = OneSignal.User.getTags();

// Remove tag
OneSignal.User.removeTag("plan");
OneSignal.User.removeTags(["plan", "interests"]);

Event Listeners

Docs
// Notification received while on page
OneSignal.Notifications.addEventListener(
  'foregroundWillDisplay', 
  (event) => {
    console.log(event.notification.title);
    // event.preventDefault(); // suppress system notification
  }
);

// Notification clicked
OneSignal.Notifications.addEventListener(
  'click',
  (event) => {
    console.log('Clicked:', event.notification);
  }
);

// Subscription state changed
OneSignal.User.PushSubscription.addEventListener(
  'change',
  (event) => {
    console.log('Opted in:', event.current.optedIn);
  }
);