Skip to main content
Push notifications re-engage Users with timely, personalized content across devices — even when they’re not actively using your app or website. Watch how push notifications drive the highest engagement, or skip ahead to get started.
OneSignal provides a complete platform to manage push notifications across mobile, web, and desktop:
  • Send campaigns and transactional messages from the dashboard or API
  • Automate multi-channel flows with Journeys
  • Target Users precisely using Segments, filters, or User data
  • A/B test and optimize message performance
  • Personalize content with User attributes and dynamic content
  • Integrate with your stack — HubSpot, Mixpanel, Amplitude, Zapier, and more

Push setup

Before sending push notifications, complete the platform setup, configure permission prompts, and enable the features you need.

Platform setup guides

Permissions

A well-designed opt-in experience maximizes your push audience.

Features and advanced use cases


Send push notifications

You can send messages in several ways. The best option depends on your use cases.

Send from the dashboard

Select the message channel

Select Create… then choose your message channel. You can also navigate to Messages or Templates to view previous messages.
OneSignal dashboard showing create message options

Choose a composition method

Set a name and label

Add internal metadata for tracking and reporting. API equivalent: name

Select your audience

Choose which users receive the message. You can include and exclude segments to target specific groups. Defaults to all “Subscribed Users” if no segment is set.
Dashboard fields for message name, label, and audience segment selection
Targeting methodDashboardAPI
SegmentsYesYes
Filters (API only)NoYes
Aliases (API only)NoYes

Delivery schedule and optimization

See how timing impacts push notification performance.
Choose when the message should start sending.
OptionDescriptionAPI field
Send immediatelyDeliver to all recipients now.
ScheduledSend at a specific time, up to 30 days in advance.send_after
Per-user optimization: Set when users should receive the message.
OptionDescriptionAPI field
Everyone at the same timeAll recipients receive the email at once. Best for urgent messages.
Intelligent DeliverySends at the optimal time for each user based on their session activity.delayed_option: last-active
Custom time per timezoneSends at a set local time in each user’s timezone.delayed_option: timezone, delivery_time_of_day
Override ThrottlingChange the throttle rate.throttle_rate_per_minute
Override Frequency cappingDisable frequency capping for this message.enable_frequency_cap

Design properties

Push messages can either display User-facing content or perform background operations.
  • Display notifications: Require a message and may include a title, image, action buttons, and other visual elements.
  • Background/data-only notifications: Omit the message, include content_available, and optionally additional data.
Annotated diagram showing the anatomy of web and mobile push notifications
Use the AI message composer to quickly generate notification titles and body text. Adjust tone and content to match your brand in a few clicks.

Title

Top-most customizable text of the notification. Text appearance is controlled by the operating system.

Subtitle

Secondary text supported on iOS and macOS only (via APNs). Not available on Android or web.

Message

Main content of the notification. Does not support custom fonts or styling. Style is set by the operating system.

Icons

Customize small and large icons on Android and web. iOS always uses the app icon.

Image

Add a large image to notifications on Android, iOS, and Chrome for Windows/Android.
  • Recommended size: 1024×512px (2:1 aspect ratio)
  • Max size: 1 MB, max width: 2000 px
  • Not supported on Safari (macOS/iOS) or macOS Notification Center
  • Must be tapped or expanded on mobile to view
  • Supported formats: PNG, JPG, GIF (animated only on iOS)
  • API: ios_attachments (iOS), big_picture (Android), chrome_web_image (Chrome web)
  • See Images and rich media

App name

The name of the app displaying the notification.
  • iOS: Set in Xcode under Display Name; requires device restart to update
  • Android/Amazon/Huawei: Set in AndroidManifest.xml under <application android:label="YOUR APP NAME">
  • Web: Shows the site name and/or browser

Feature properties

Action buttons

Add interactive buttons to the push notification.

Launch URL

Control where Users go when tapping the notification.
  • API: url (single universal URL), app_url (deep link, e.g. your-app://screen), web_url (http/https web link)
  • See URLs, links, and deep links

Badges

Show dots or badge numbers on app icons.
  • iOS: Red numeric badge; can set, increment, or clear. API: ios_badgeType, ios_badgeCount
  • Android: Requires notification categories
  • Huawei: Badge displayed as a number or dot. API: huawei_badge_class, huawei_badge_set_num, huawei_badge_add_num
  • Web (Chrome/Android): Icon shown in Android status bar; must be a 72×72 alpha PNG. API: chrome_web_badge
  • See Badges

Sound

Play a sound when the push is delivered.

Additional data

Add custom key-value pairs to the payload for SDK handling.

Collapse ID (mobile push)

Replace earlier notifications with a newer one if they share the same collapse_id. Max length: 64 characters. API: collapse_id For example, a weather app sends three alerts. If the User opens their device after all three, only the last message displays.

Web push topic (web push)

Avoid replacing older web notifications by using unique web_push_topic values. Notifications with different topics remain visible independently. Max length: 64 characters. API: web_push_topic

Priority

Set the urgency of the push, especially in battery-saving modes.
  • High (recommended): Immediate, alert-based messages
  • Normal: Used for background/data notifications
  • API: priority
  • Platform docs: APNs priority, FCM priority

Time to live (TTL)

How long to keep a message if the device is offline. Default: 3 days. Range: 0–2,419,200 seconds (28 days). API: ttl If a User is offline and the TTL expires, the message is discarded. Set ttl: 0 for messages that should never be delivered late.
iOS limitation: APNs stores only the most recent notification while the device is offline. Earlier notifications are dropped. Learn more.

Notification grouping

Android and iOS automatically group notifications after a device receives 4 or more from your app.
Android device showing grouped push notifications from the same app

Cancel push notifications

Cancel a message if it has not been Delivered yet. OneSignal stops sending the message to all Subscriptions not already in the queue. This does not remove the message from devices that already received it. In the Message Report, select Actions > Cancel, or use the Cancel Message API.

Remove a push notification from a device

Once delivered, you can only replace a push notification if you set a Collapse ID or Web push topic. Without one of these, the notification cannot be replaced or removed.

Analytics

Track message performance and engagement.

FAQ

What platforms does OneSignal push support?

OneSignal supports push on iOS (APNs), Android (FCM), Huawei (HMS), Amazon (ADM), web browsers (Chrome, Firefox, Safari, Edge), macOS, and Windows. See the platform setup guides above.

How do I test push notifications before sending to Users?

Set up test Subscriptions to verify delivery, rendering, and deep links without affecting real Users. You can also send to a single-user segment for quick testing.

Why are my push notifications not showing?

Common causes include missing or expired platform credentials, Users not granting permission, or device-level settings like Do Not Disturb. See Notifications not shown or delayed for a full troubleshooting checklist.

What is the maximum push notification payload size?

The total payload size is approximately 4 KB across all platforms. The data field supports up to 2048 bytes. Exceeding these limits may cause notifications to be truncated or rejected.