Send and manage mobile and web push notifications with OneSignal using the dashboard or API, with targeting, personalization, and scheduling.
Re-engage users with timely, personalized content across devices, even when they aren’t actively using your app or website.Watch how push notifications drive the highest engagement, or skip ahead to get started.
Why push notifications drive the highest engagement
OneSignal provides a complete platform to manage push notifications across mobile, web, and desktop:
Send campaigns and transactional messages from the dashboard or API.
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.
Name, label, and audience segment selection in the dashboard.
See how timing impacts push notification performance.
Timing is everything: How to send push notifications that drive action
Choose when OneSignal evaluates audience membership and begins delivering the message.
Option
Description
API field
Send immediately
Start sending to all users in the audience now.
(none)
Scheduled
Send at a specific time, up to 30 days in advance.
send_after
The send time determines the audience cutoff. OneSignal evaluates audience membership at that moment, and anyone in the audience receives the message regardless of per-user optimization settings.
Per-user delivery time:Set when each user in the audience receives the message.
Option
Description
API field
Everyone at the same time
All recipients receive the message at once. Best for urgent messages.
(none)
Intelligent Delivery
Sends at the optimal time for each user based on their session activity.
delayed_option: last-active
Custom time per timezone
Sends at a set local time in each user’s timezone.
delayed_option: timezone, delivery_time_of_day
Delivery overrides:Override the app-level delivery defaults for this message only.
With Intelligent Delivery or Custom time per timezone, delivery spans a 24-hour period so every record in the audience can receive the message. If it is already 10 AM for a recipient when a 9 AM local-time message sends, they receive it at 9 AM the following day.
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 headings and contents, set content_available to true on both iOS and Android, and optionally include additional data.
Anatomy of a web and mobile push notification
Legend: 1 Title, 2 Message, 3 Icon, 4 Image, 5 Action buttons, 6 App name or browser, 7 Timestamp received.
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.
Push platforms (Android, iOS, Huawei, Amazon) do not truncate titles or messages at a fixed character count. Where the text gets cut off depends on the device, orientation, and the user’s system text size (Accessibility mode). On Android, it also varies by launcher and manufacturer.OneSignal and the delivery services (APNs, FCM, and others) send the notification but don’t control how the device renders it, so no API or payload option can override truncation. The same text can show fully on one device and be cut off on another.
The message body truncates under the same operating system rendering rules, and how much shows depends on whether the notification is collapsed or expanded. See the Title note above.
Huawei: Badge displayed as a number or dot. API: huawei_badge_class, huawei_badge_set_num, huawei_badge_add_num
Web (Chrome on Android): Monochrome status-bar icon for Chrome web notifications on Android devices. This is not an app-icon badge. Recommended: square PNG, 96×96 (minimum 72×72). API: chrome_web_badge. See Notification icons
Replace earlier notifications with a newer one if they share the same collapse_id. Max length: 64 characters. API: collapse_idFor example, a weather app sends three alerts. If the user opens their device after all three, only the last message displays.
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
How long to keep a message if the device is offline. Default: 3 days. Range: 0–2,419,200 seconds (28 days). API: ttlIf 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.
Control how OneSignal delivers push to Huawei (HMS) devices. API: huawei_msg_type
data: The OneSignal SDK renders the notification client-side, enabling the full feature set (large image, action buttons) and Confirmed delivery. Not shown if the app is force quit.
message (default): HMS Core renders server-side; title and body only, but shows even if the app is force quit.
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.
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.
How do I test push notifications before sending to users?
Set up Test users to verify delivery, rendering, and deep links without affecting real users. You can also send to a single-user segment for quick testing.
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?
APNs and FCM limit the delivered push payload to 4,096 bytes (APNs allows 5,120 bytes for VoIP notifications). The data field (Additional Data) supports up to 2,048 bytes. Payloads over the provider limit are rejected.custom_data does not count toward the APNs or FCM limit. It is not delivered to the device. OneSignal uses it to render your template, and it has its own OneSignal-set limit: 2KB for push and SMS, 10KB for email.
This is different from on-screen title/body truncation. Payload size is a hard limit enforced by APNs/FCM before delivery. Title and body display truncation happens after delivery, on-device, and depends on operating system rendering. See Title above.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OneSignal","description":"OneSignal is a platform for sending push notifications, emails, in-app messages, and SMS campaigns via a single API, Journey Builder, and a dashboard.","colors":{"primary":"#3A3DB3","light":"#E54B4D","dark":"#3A3DB3"},"logo":{"light":"https://mintcdn.com/onesignal/yJcueeDCO7UpHnnY/logo/OneSignal-Logo.svg?fit=max\u0026auto=format\u0026n=yJcueeDCO7UpHnnY\u0026q=85\u0026s=1fcfb6fef6d820fd9d99c74850711107","dark":"https://mintcdn.com/onesignal/s4WC_KzLxf8ornqq/logo/OneSignal-Logo-White.svg?fit=max\u0026auto=format\u0026n=s4WC_KzLxf8ornqq\u0026q=85\u0026s=2573a53b5aea961e18c82b3af8f31925"},"favicon":"https://mintcdn.com/onesignal/SGduBFHpiRdg5l6h/favicon.ico?fit=max\u0026auto=format\u0026n=SGduBFHpiRdg5l6h\u0026q=85\u0026s=c0a99fadc0553c658a83741c5611cef4","api":{"examples":{"languages":["curl","typescript","python","php","go","ruby","java","csharp","rust"],"autogenerate":true}},"navbar":{"links":[{"href":"mailto:support@onesignal.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.onesignal.com"}},"footer":{"socials":{"github":"https://github.com/OneSignal","linkedin":"https://linkedin.com/company/onesignal","youtube":"https://www.youtube.com/@onesignalofficial/playlists"}},"seo":{"metatags":{"apple-mobile-web-app-title":"OneSignal Docs"}},"fonts":{"family":"Nunito Sans"},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"ga4":{"measurementId":"G-2DGWL0VYP5"},"posthog":{"apiKey":"phc_vZpvE0f5eyzcOt30FHer34yddVmNdo9kmlMVRBzLMtn","apiHost":"https://eu.i.posthog.com","sessionRecording":true}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"languages":[{"language":"en","href":"docs/en/home"},{"language":"cn","href":"docs/cn/home"},{"language":"ko","href":"docs/ko/home"},{"language":"ja","href":"docs/ja/home"},{"language":"tr","href":"docs/tr/home"},{"language":"pt-BR","href":"docs/pt-BR/home"},{"language":"es","href":"docs/es/home"},{"language":"fr","href":"docs/fr/home"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"onesignal","hasAudioNarration":false,"actualSubdomain":"onesignal","customDomains":["documentation.onesignal.com"],"gitSource":{"type":"github","owner":"onesignal","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeb720656d3256e25f7f5e8","collectionId":"771b8338-c78a-4909-ac00-b1b5dd3eb9cf","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeb720656d3256e25f7f5e8"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aebb1cc40574e0e146e06f5","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"en","tag":"User Guides","count":202},{"language":"es","tag":"Guías del Usuario","count":178},{"language":"fr","tag":"Guides utilisateur","count":178},{"language":"ja","tag":"ユーザーガイド","count":178},{"language":"ko","tag":"사용자 가이드","count":178},{"language":"pt-BR","tag":"Guia do Usuário","count":178},{"language":"tr","tag":"Kullanıcı Kılavuzları","count":178},{"language":"cn","tag":"用户指南","count":176},{"language":"en","tag":"Message channels","count":90},{"language":"es","tag":"Canales de mensajería","count":84},{"language":"fr","tag":"Canaux de messagerie","count":84},{"language":"ja","tag":"メッセージングチャネル","count":84},{"language":"ko","tag":"메시지 채널","count":84},{"language":"pt-BR","tag":"Canais de mensagem","count":84},{"language":"tr","tag":"Mesaj kanalları","count":84},{"language":"cn","tag":"消息渠道","count":83},{"language":"default","tag":"API Reference","count":68},{"language":"default","tag":"API reference","count":64},{"language":"en","tag":"Analytics \u0026 Integrations","count":53},{"language":"es","tag":"Analítica \u0026 Integraciones","count":52},{"language":"fr","tag":"Analyses et intégrations","count":52},{"language":"ja","tag":"分析 \u0026 統合","count":52},{"language":"ko","tag":"분석 \u0026 통합","count":52},{"language":"pt-BR","tag":"Análises \u0026 Integrações","count":52},{"language":"tr","tag":"Analitik ve Entegrasyonlar","count":52},{"language":"cn","tag":"分析和集成","count":51},{"language":"cn","tag":"开发者指南","count":48},{"language":"es","tag":"Guías del desarrollador","count":48},{"language":"fr","tag":"Guides développeur","count":48},{"language":"ja","tag":"開発者ガイド","count":48},{"language":"ko","tag":"개발자 가이드","count":48},{"language":"tr","tag":"Geliştirici Kılavuzları","count":48},{"language":"en","tag":"Developer Guides","count":47},{"language":"pt-BR","tag":"Guia de desenvolvedor","count":47},{"language":"en","tag":"Integrations","count":37},{"language":"es","tag":"Integraciones","count":37},{"language":"fr","tag":"Intégrations","count":37},{"language":"ja","tag":"統合","count":37},{"language":"ko","tag":"통합","count":37},{"language":"pt-BR","tag":"Integrações","count":37},{"language":"tr","tag":"Entegrasyonlar","count":37},{"language":"cn","tag":"集成","count":36},{"language":"en","tag":"Tutorials","count":35},{"language":"cn","tag":"推送通知","count":31},{"language":"cn","tag":"OneSignal 作为目的地","count":31},{"language":"en","tag":"Push","count":31},{"language":"en","tag":"OneSignal as destination","count":31},{"language":"es","tag":"Push notificaciones","count":31},{"language":"es","tag":"OneSignal como destino","count":31},{"language":"fr","tag":"Push","count":31},{"language":"fr","tag":"OneSignal comme destination","count":31},{"language":"ja","tag":"プッシュ通知","count":31},{"language":"ja","tag":"OneSignal as 宛先","count":31},{"language":"ko","tag":"푸시","count":31},{"language":"ko","tag":"OneSignal을 데이터 목적지로 사용","count":31},{"language":"pt-BR","tag":"Push notificações","count":31},{"language":"pt-BR","tag":"OneSignal como destino","count":31},{"language":"tr","tag":"Anlık bildirimler","count":31},{"language":"tr","tag":"OneSignal hedef","count":31},{"language":"en","tag":"Mobile SDKs","count":26},{"language":"cn","tag":"移动SDK","count":25},{"language":"es","tag":"SDKs móviles","count":25},{"language":"fr","tag":"SDK mobiles","count":25},{"language":"ja","tag":"モバイルSDK","count":25},{"language":"ko","tag":"모바일 SDKs","count":25},{"language":"pt-BR","tag":"SDKs móveis","count":25},{"language":"tr","tag":"Mobil SDK'lar","count":25},{"language":"cn","tag":"教程","count":24},{"language":"es","tag":"Tutoriales","count":24},{"language":"fr","tag":"Tutoriels","count":24},{"language":"ja","tag":"チュートリアル","count":24},{"language":"ko","tag":"튜토리얼","count":24},{"language":"pt-BR","tag":"Tutoriais","count":24},{"language":"tr","tag":"Eğitimler","count":24},{"language":"en","tag":"Mobile SDK setup","count":19},{"language":"cn","tag":"移动SDK设置","count":18},{"language":"es","tag":"Configuración del SDK móvil","count":18},{"language":"fr","tag":"Configuration SDK mobile","count":18},{"language":"ja","tag":"モバイルSDKセットアップ","count":18},{"language":"ko","tag":"모바일 SDK 설정","count":18},{"language":"pt-BR","tag":"Configuração do SDK móvel","count":18},{"language":"tr","tag":"Mobil SDK kurulumu","count":18},{"language":"default","tag":"Messages","count":9},{"language":"default","tag":"Users","count":9},{"language":"default","tag":"Organization","count":9},{"language":"default","tag":"Journeys","count":8},{"language":"default","tag":"Deprecated","count":6},{"language":"default","tag":"Templates","count":6},{"language":"default","tag":"Subscriptions","count":6},{"language":"default","tag":"Segments","count":5}]},"assistantConfig":{"enableStarterQuestions":false,"deflection":{"enabled":true,"email":"support@onesignal.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"docs/en/push","slug":"/docs/en/push","pageMetadata":{"title":"Push overview","description":"Send and manage mobile and web push notifications with OneSignal using the dashboard or API, with targeting, personalization, and scheduling.","keywords":["push notifications","send push","mobile push","web push","push API","notification personalization"],"href":"/docs/en/push"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Send and manage mobile and web push notifications with OneSignal using the dashboard or API, with targeting, personalization, and scheduling.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,hr:`hr`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,Columns,Frame,Heading,Info,Note,OptimizedFrame,OptimizedImage,Step,Steps,Table,Tip,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!Columns)_missingMdxReference(`Columns`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedFrame)_missingMdxReference(`OptimizedFrame`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Re-engage users with timely, personalized content across devices, even when they aren’t actively using your app or website.`}),`\n`,_jsxs(_components.p,{children:[`Watch how push notifications drive the highest engagement, or skip ahead to `,_jsx(_components.a,{href:`#push-setup`,children:`get started`}),`.`]}),`\n`,_jsx(Frame,{caption:`Why push notifications drive the highest engagement`,children:_jsx(OptimizedFrame,{width:`560`,height:`315`,src:`https://www.youtube.com/embed/atjjj4BQqfc?si=PP-XrMF8ttXkXkuQ`,title:`YouTube video player`,frameborder:`0`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share`,referrerpolicy:`strict-origin-when-cross-origin`,allowfullscreen:true})}),`\n`,_jsx(_components.p,{children:`OneSignal provides a complete platform to manage push notifications across mobile, web, and desktop:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Send campaigns and transactional messages`}),` from the `,_jsx(_components.a,{href:`#send-push-notifications`,children:`dashboard`}),` or `,_jsx(_components.a,{href:`/reference/create-message`,children:`API`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Automate multi-channel flows`}),` with `,_jsx(_components.a,{href:`/docs/en/journeys-overview`,children:`Journeys`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Target users precisely`}),` using `,_jsx(_components.a,{href:`/docs/en/segmentation`,children:`Segments`}),`, filters, or user data.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[_jsx(_components.a,{href:`/docs/en/ab-testing`,children:`A/B test`}),` and optimize`]}),` message performance.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Personalize content`}),` with user attributes and `,_jsx(_components.a,{href:`/docs/en/message-personalization`,children:`dynamic content`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Integrate with your stack:`}),` HubSpot, Mixpanel, Amplitude, Zapier, and `,_jsx(_components.a,{href:`/docs/en/integrations`,children:`more`}),`.`]}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`push-setup`,children:`Push setup`}),`\n`,_jsx(_components.p,{children:`Before sending push notifications, complete the platform setup, configure permission prompts, and enable the features you need.`}),`\n`,_jsx(Heading,{level:`3`,id:`platform-setup-guides`,children:`Platform setup guides`}),`\n`,_jsxs(Columns,{cols:2,children:[_jsx(Card,{title:`Mobile push setup`,icon:`mobile`,href:`/docs/en/mobile-push-setup`,children:_jsx(_components.p,{children:`End-to-end setup for iOS, Android, Huawei, and Amazon push notifications.`})}),_jsx(Card,{title:`Web push setup`,icon:`globe`,href:`/docs/en/web-push-setup`,children:_jsx(_components.p,{children:`Enable push for Chrome, Firefox, Safari, and Edge.`})}),_jsx(Card,{title:`Mobile SDK setup`,icon:`code`,href:`/docs/en/mobile-sdk-setup`,children:_jsx(_components.p,{children:`Integrate the OneSignal SDK into your mobile app.`})}),_jsx(Card,{title:`Web SDK setup`,icon:`browsers`,href:`/docs/en/web-sdk-setup`,children:_jsx(_components.p,{children:`Integrate the OneSignal SDK into your website.`})}),_jsx(Card,{title:`Migrating to OneSignal`,icon:`arrow-right-arrow-left`,href:`/docs/en/migrating-to-onesignal`,children:_jsx(_components.p,{children:`Migration steps from Firebase, Airship, Braze, and other providers.`})}),_jsx(Card,{title:`macOS app support`,icon:`desktop`,href:`/docs/en/macos-app-setup`,children:_jsx(_components.p,{children:`Configure OneSignal for macOS apps.`})}),_jsx(Card,{title:`Windows app support`,icon:`desktop`,href:`/docs/en/windows-app-setup`,children:_jsx(_components.p,{children:`Configure OneSignal for Windows desktop apps.`})}),_jsx(Card,{title:`watchOS and Wear OS support`,icon:`clock`,href:`/docs/en/watchos-and-wear-os-support`,children:_jsx(_components.p,{children:`Add OneSignal to Apple Watch and Wear OS devices.`})})]}),`\n`,_jsx(Heading,{level:`3`,id:`permissions`,children:`Permissions`}),`\n`,_jsx(_components.p,{children:`A well-designed opt-in experience maximizes your push audience.`}),`\n`,_jsxs(Columns,{cols:2,children:[_jsx(Card,{title:`Mobile push prompts`,icon:`bell`,href:`/docs/en/prompt-for-push-permissions`,children:_jsx(_components.p,{children:`Build pre-permission prompts and best practices for mobile apps.`})}),_jsx(Card,{title:`Web push prompts`,icon:`bell-on`,href:`/docs/en/permission-requests`,children:_jsx(_components.p,{children:`Customize prompt timing and messaging for web push.`})}),_jsx(Card,{title:`iOS provisional push`,icon:`apple`,href:`/docs/en/ios-provisional-push-notifications`,children:_jsx(_components.p,{children:`Deliver silent notifications to the notification center before prompting for full permission.`})}),_jsx(Card,{title:`Android notification categories`,icon:`android`,href:`/docs/en/android-notification-categories`,children:_jsx(_components.p,{children:`Let Android users customize how they receive notifications from your app.`})})]}),`\n`,_jsx(Heading,{level:`3`,id:`features-and-advanced-use-cases`,children:`Features and advanced use cases`}),`\n`,_jsxs(Columns,{cols:2,children:[_jsx(Card,{title:`Message personalization`,icon:`wand-magic-sparkles`,href:`/docs/en/message-personalization`,children:_jsx(_components.p,{children:`Add dynamic content to personalize messages for each user.`})}),_jsx(Card,{title:`Multi-language messaging`,icon:`language`,href:`/docs/en/multi-language-messaging`,children:_jsx(_components.p,{children:`Send push notifications in each user’s preferred language.`})}),_jsx(Card,{title:`Throttling`,icon:`gauge-high`,href:`/docs/en/throttling`,children:_jsx(_components.p,{children:`Control notification delivery speed for large audiences.`})}),_jsx(Card,{title:`Frequency capping`,icon:`hand`,href:`/docs/en/frequency-capping`,children:_jsx(_components.p,{children:`Limit the number of push notifications per user.`})}),_jsx(Card,{title:`Data and background notifications`,icon:`database`,href:`/docs/en/data-notifications`,children:_jsx(_components.p,{children:`Send data-only notifications for background tasks.`})}),_jsx(Card,{title:`VoIP notifications`,icon:`phone`,href:`/docs/en/voip-notifications`,children:_jsx(_components.p,{children:`Send VoIP-specific push notifications for calling apps.`})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`send-push-notifications`,children:`Send push notifications`}),`\n`,_jsx(_components.p,{children:`You can send messages in several ways. The best option depends on your use cases.`}),`\n`,_jsxs(Columns,{cols:2,children:[_jsx(Card,{title:`Dashboard`,icon:`window-maximize`,href:`#send-from-the-dashboard`,children:_jsx(_components.p,{children:`Compose a message quickly within the dashboard.`})}),_jsx(Card,{title:`Send via API`,icon:`code`,href:`/reference/create-message`,children:_jsx(_components.p,{children:`Send messages programmatically using the REST API.`})}),_jsx(Card,{title:`Journeys`,icon:`route`,href:`/docs/en/journeys-overview`,children:_jsx(_components.p,{children:`Build automated, multi-step, and multi-channel flows.`})}),_jsx(Card,{title:`A/B testing`,icon:`flask`,href:`/docs/en/ab-testing`,children:_jsx(_components.p,{children:`Test up to 10 message variants to optimize performance.`})})]}),`\n`,_jsx(Heading,{level:`3`,id:`send-from-the-dashboard`,children:`Send from the dashboard`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Select the message channel`,icon:`window-maximize`,children:[_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Create…`}),` then choose your message channel. You can also navigate to `,_jsx(_components.strong,{children:`Messages`}),` or `,_jsx(_components.strong,{children:`Templates`}),` to view previous messages.`]}),_jsx(Frame,{caption:`Create a new message in the OneSignal dashboard.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/UDk6E5NjA3sdGdRN/images/dashboard/create-message.png?fit=max\u0026auto=format\u0026n=UDk6E5NjA3sdGdRN\u0026q=85\u0026s=97504cf71555ac4aeb263a36ad2d28b3`,alt:`OneSignal dashboard showing create message options`,\"data-og-width\":`2128`,width:`2128`,\"data-og-height\":`1374`,height:`1374`,\"data-path\":`images/dashboard/create-message.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/UDk6E5NjA3sdGdRN/images/dashboard/create-message.png?w=280\u0026fit=max\u0026auto=format\u0026n=UDk6E5NjA3sdGdRN\u0026q=85\u0026s=c30e5af403626906cd869b1be7a9a058 280w, https://mintcdn.com/onesignal/UDk6E5NjA3sdGdRN/images/dashboard/create-message.png?w=560\u0026fit=max\u0026auto=format\u0026n=UDk6E5NjA3sdGdRN\u0026q=85\u0026s=52fa73ad6b94c1102311da90430d1a9c 560w, https://mintcdn.com/onesignal/UDk6E5NjA3sdGdRN/images/dashboard/create-message.png?w=840\u0026fit=max\u0026auto=format\u0026n=UDk6E5NjA3sdGdRN\u0026q=85\u0026s=2850d5f86926785cae9518cb18fec1e8 840w, https://mintcdn.com/onesignal/UDk6E5NjA3sdGdRN/images/dashboard/create-message.png?w=1100\u0026fit=max\u0026auto=format\u0026n=UDk6E5NjA3sdGdRN\u0026q=85\u0026s=05ae6c9f9b9a33ba3858713e94dedacb 1100w, https://mintcdn.com/onesignal/UDk6E5NjA3sdGdRN/images/dashboard/create-message.png?w=1650\u0026fit=max\u0026auto=format\u0026n=UDk6E5NjA3sdGdRN\u0026q=85\u0026s=075b97068c06d74f06e1ba79577ac576 1650w, https://mintcdn.com/onesignal/UDk6E5NjA3sdGdRN/images/dashboard/create-message.png?w=2500\u0026fit=max\u0026auto=format\u0026n=UDk6E5NjA3sdGdRN\u0026q=85\u0026s=b7adbaa536006b6cc661ea91eb90ecb5 2500w`})})]}),_jsx(Step,{title:`Choose a composition method`,icon:`pencil`,children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Start from scratch or use the `,_jsx(_components.a,{href:`/docs/en/ai-message-composer`,children:`AI message composer`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Use a pre-built `,_jsx(_components.a,{href:`/docs/en/templates`,children:`template`}),`.`]}),`\n`]})}),_jsx(Step,{title:`Set a name and label`,icon:`tag`,children:_jsxs(_components.p,{children:[`Add internal metadata for tracking and reporting. API equivalent: `,_jsx(_components.code,{children:`name`}),`.`]})}),_jsxs(Step,{title:`Select your audience`,icon:`users`,children:[_jsxs(_components.p,{children:[`Choose which users receive the message. You can include and exclude `,_jsx(_components.a,{href:`/docs/en/segmentation`,children:`segments`}),` to target specific groups. Defaults to all “Subscribed Users” if no segment is set.`]}),_jsx(Frame,{caption:`Name, label, and audience segment selection in the dashboard.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/dashboard/message-name-label-audience.png?fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=1f41b0e42d31211b1c1badf87ba84056`,alt:`Dashboard fields for message name, label, and audience segment selection`,\"data-og-width\":`1650`,width:`1650`,\"data-og-height\":`518`,height:`518`,\"data-path\":`images/dashboard/message-name-label-audience.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/dashboard/message-name-label-audience.png?w=280\u0026fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=8d04b438d3ca636dc75bd87aa887d3fa 280w, https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/dashboard/message-name-label-audience.png?w=560\u0026fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=032ade0ee5fa1c405fb4ba2fa7148fcf 560w, https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/dashboard/message-name-label-audience.png?w=840\u0026fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=0d6f8c3f337d18eda0cd22cf1183e273 840w, https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/dashboard/message-name-label-audience.png?w=1100\u0026fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=7c645d262e3c29ded6ce1c1d0bbdf45a 1100w, https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/dashboard/message-name-label-audience.png?w=1650\u0026fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=a5f6c91444a616bc142b58ae1641f676 1650w, https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/dashboard/message-name-label-audience.png?w=2500\u0026fit=max\u0026auto=format\u0026n=ciRrThfP6xMpI7GY\u0026q=85\u0026s=60e9d02aaf36f390d8db8678311e4d7b 2500w`})}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Targeting method`}),_jsx(_components.th,{style:{textAlign:`center`},children:`Dashboard`}),_jsx(_components.th,{style:{textAlign:`center`},children:`API`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/docs/en/segmentation`,children:_jsx(_components.strong,{children:`Segments`})})}),_jsx(_components.td,{style:{textAlign:`center`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`center`},children:`Yes`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Filters`}),` (`,_jsx(_components.a,{href:`/reference/create-message`,children:`API only`}),`)`]}),_jsx(_components.td,{style:{textAlign:`center`},children:`No`}),_jsx(_components.td,{style:{textAlign:`center`},children:`Yes`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Aliases`}),` (`,_jsx(_components.a,{href:`/reference/create-message`,children:`API only`}),`)`]}),_jsx(_components.td,{style:{textAlign:`center`},children:`No`}),_jsx(_components.td,{style:{textAlign:`center`},children:`Yes`})]})]})]})]}),_jsxs(Step,{title:`Design the message and send`,icon:`paper-plane`,children:[_jsxs(_components.p,{children:[`Compose the notification using the `,_jsx(_components.a,{href:`#design-properties`,children:`design properties`}),` and `,_jsx(_components.a,{href:`#feature-properties`,children:`feature properties`}),` below. Then send immediately or set a `,_jsx(_components.a,{href:`#delivery-schedule-and-optimization`,children:`delivery schedule`}),`.`]}),_jsxs(_components.p,{children:[`Before you send, click `,_jsx(_components.strong,{children:`Check message`}),` to review the draft against OneSignal best practices. See `,_jsx(_components.a,{href:`/docs/en/check-message`,children:`what Check message reviews`}),`.`]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`delivery-schedule-and-optimization`,children:`Delivery schedule and optimization`}),`\n`,_jsx(_components.p,{children:`See how timing impacts push notification performance.`}),`\n`,_jsx(Frame,{caption:`Timing is everything: How to send push notifications that drive action`,children:_jsx(OptimizedFrame,{width:`560`,height:`315`,src:`https://www.youtube.com/embed/pRTbUuvYsWY?si=uqL5wSK_vXH6VwMJ`,title:`YouTube video player`,frameborder:`0`,allow:`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share`,referrerpolicy:`strict-origin-when-cross-origin`,allowfullscreen:true})}),`\n`,_jsx(_components.p,{children:`Choose when OneSignal evaluates audience membership and begins delivering the message.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Option`}),_jsx(_components.th,{children:`Description`}),_jsx(_components.th,{children:`API field`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Send immediately`})}),_jsx(_components.td,{children:`Start sending to all users in the audience now.`}),_jsx(_components.td,{children:`(none)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Scheduled`})}),_jsx(_components.td,{children:`Send at a specific time, up to 30 days in advance.`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`send_after`})})]})]})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`The send time determines the audience cutoff. OneSignal evaluates audience membership at that moment, and anyone in the audience receives the message regardless of per-user optimization settings.`})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Per-user delivery time:`})}),`\n`,_jsx(_components.p,{children:`Set when each user in the audience receives the message.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Option`}),_jsx(_components.th,{children:`Description`}),_jsx(_components.th,{children:`API field`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Everyone at the same time`})}),_jsx(_components.td,{children:`All recipients receive the message at once. Best for urgent messages.`}),_jsx(_components.td,{children:`(none)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Intelligent Delivery`})}),_jsx(_components.td,{children:`Sends at the optimal time for each user based on their session activity.`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`delayed_option: last-active`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Custom time per timezone`})}),_jsx(_components.td,{children:`Sends at a set local time in each user’s timezone.`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`delayed_option: timezone`}),`, `,_jsx(_components.code,{children:`delivery_time_of_day`})]})]})]})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Delivery overrides:`})}),`\n`,_jsx(_components.p,{children:`Override the app-level delivery defaults for this message only.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`Description`}),_jsx(_components.th,{children:`API field`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsxs(_components.strong,{children:[`Override `,_jsx(_components.a,{href:`/docs/en/throttling`,children:`Throttling`})]})}),_jsx(_components.td,{children:`Change the throttle rate for this message.`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`throttle_rate_per_minute`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsxs(_components.strong,{children:[`Override `,_jsx(_components.a,{href:`/docs/en/frequency-capping`,children:`Frequency capping`})]})}),_jsx(_components.td,{children:`Disable frequency capping for this message.`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`enable_frequency_cap`})})]})]})]}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`With Intelligent Delivery or Custom time per timezone, delivery spans a 24-hour period so every record in the audience can receive the message. If it is already 10 AM for a recipient when a 9 AM local-time message sends, they receive it at 9 AM the following day.`})}),`\n`,_jsx(Heading,{level:`3`,id:`design-properties`,children:`Design properties`}),`\n`,_jsx(_components.p,{children:`Push messages can either display user-facing content or perform background operations.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Display notifications`}),`: Require a `,_jsx(_components.a,{href:`#message`,children:`message`}),` and may include a title, image, action buttons, and other visual elements.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Background/data-only notifications`}),`: Omit `,_jsx(_components.code,{children:`headings`}),` and `,_jsx(_components.code,{children:`contents`}),`, set `,_jsx(_components.a,{href:`/docs/en/data-notifications`,children:_jsx(_components.code,{children:`content_available`})}),` to `,_jsx(_components.code,{children:`true`}),` on both iOS and Android, and optionally include `,_jsx(_components.a,{href:`#additional-data`,children:`additional data`}),`.`]}),`\n`]}),`\n`,_jsx(Frame,{caption:`Anatomy of a web and mobile push notification`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/web-and-mobile-push-notifications-anatomy.jpg?fit=max\u0026auto=format\u0026n=l4Z9oMlZl9nJOS_T\u0026q=85\u0026s=abd46b4656559360cc713cfa98f138fe`,alt:`Annotated diagram of a push notification with: 1 title, 2 message, 3 icon, 4 image, 5 action buttons, 6 app name or browser, 7 timestamp received`,\"data-og-width\":`1468`,width:`1468`,\"data-og-height\":`2302`,height:`2302`,\"data-path\":`images/push/web-and-mobile-push-notifications-anatomy.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/web-and-mobile-push-notifications-anatomy.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=l4Z9oMlZl9nJOS_T\u0026q=85\u0026s=4219c1c16ba5a40defb834699ead005f 280w, https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/web-and-mobile-push-notifications-anatomy.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=l4Z9oMlZl9nJOS_T\u0026q=85\u0026s=71962a9801c53d67eee3baea3026022c 560w, https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/web-and-mobile-push-notifications-anatomy.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=l4Z9oMlZl9nJOS_T\u0026q=85\u0026s=ea42c1445875618641ac7c45b61e6068 840w, https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/web-and-mobile-push-notifications-anatomy.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=l4Z9oMlZl9nJOS_T\u0026q=85\u0026s=3c99801cc540de4d1d501cd02159ee61 1100w, https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/web-and-mobile-push-notifications-anatomy.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=l4Z9oMlZl9nJOS_T\u0026q=85\u0026s=4e8cf28c140fbb05d54c97bdf542dda7 1650w, https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/web-and-mobile-push-notifications-anatomy.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=l4Z9oMlZl9nJOS_T\u0026q=85\u0026s=c48e4349fe83bf150d94e6bb2bc5d078 2500w`})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Legend:`}),` 1 Title, 2 Message, 3 Icon, 4 Image, 5 Action buttons, 6 App name or browser, 7 Timestamp received.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Use the `,_jsx(_components.a,{href:`/docs/en/ai-message-composer`,children:`AI message composer`}),` to quickly generate notification titles and body text. Adjust tone and content to match your brand in a few clicks.`]})}),`\n`,_jsx(Heading,{level:`4`,id:`title`,children:`Title`}),`\n`,_jsx(_components.p,{children:`Top-most customizable text of the notification. Text appearance is controlled by the operating system.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Required for `,_jsx(_components.strong,{children:`web push`}),` and `,_jsx(_components.strong,{children:`Huawei`})]}),`\n`,_jsx(_components.li,{children:`Defaults to site name on web if not set`}),`\n`,_jsx(_components.li,{children:`Recommended limit: 25–35 characters (mobile), 60–80 (web)`}),`\n`,_jsxs(_components.li,{children:[`Supports: `,_jsx(_components.a,{href:`/docs/en/ai-message-composer`,children:`AI message composer`}),`, emojis, `,_jsx(_components.a,{href:`/docs/en/message-personalization`,children:`message personalization`}),`, `,_jsx(_components.a,{href:`/docs/en/multi-language-messaging`,children:`multi-language messaging`})]}),`\n`,_jsxs(_components.li,{children:[`API: `,_jsx(_components.code,{children:`headings`})]}),`\n`]}),`\n`,_jsxs(Note,{children:[_jsx(_components.p,{children:`Push platforms (Android, iOS, Huawei, Amazon) do not truncate titles or messages at a fixed character count. Where the text gets cut off depends on the device, orientation, and the user’s system text size (Accessibility mode). On Android, it also varies by launcher and manufacturer.`}),_jsx(_components.p,{children:`OneSignal and the delivery services (APNs, FCM, and others) send the notification but don’t control how the device renders it, so no API or payload option can override truncation. The same text can show fully on one device and be cut off on another.`})]}),`\n`,_jsx(Heading,{level:`4`,id:`subtitle`,children:`Subtitle`}),`\n`,_jsx(_components.p,{children:`Secondary text supported on iOS and macOS only (via APNs). Not available on Android or web.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Recommended limit: 25–50 characters`}),`\n`,_jsxs(_components.li,{children:[`Supports: emojis, `,_jsx(_components.a,{href:`/docs/en/message-personalization`,children:`message personalization`}),`, `,_jsx(_components.a,{href:`/docs/en/multi-language-messaging`,children:`multi-language messaging`})]}),`\n`,_jsxs(_components.li,{children:[`API: `,_jsx(_components.code,{children:`subtitle`})]}),`\n`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`Subtitles truncate independently of the title, under the same operating system rendering rules. See the `,_jsx(_components.a,{href:`#title`,children:`Title`}),` note above.`]})}),`\n`,_jsx(Heading,{level:`4`,id:`message`,children:`Message`}),`\n`,_jsx(_components.p,{children:`Main content of the notification. Does not support custom fonts or styling. Style is set by the operating system.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Required unless sending a background notification`}),`\n`,_jsxs(_components.li,{children:[`Supports: `,_jsx(_components.a,{href:`/docs/en/ai-message-composer`,children:`AI message composer`}),`, emojis, `,_jsx(_components.a,{href:`/docs/en/message-personalization`,children:`message personalization`}),`, `,_jsx(_components.a,{href:`/docs/en/multi-language-messaging`,children:`multi-language messaging`})]}),`\n`,_jsx(_components.li,{children:`Recommended limit: ~150 characters`}),`\n`,_jsxs(_components.li,{children:[`API: `,_jsx(_components.code,{children:`contents`})]}),`\n`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`The message body truncates under the same operating system rendering rules, and how much shows depends on whether the notification is collapsed or expanded. See the `,_jsx(_components.a,{href:`#title`,children:`Title`}),` note above.`]})}),`\n`,_jsx(Heading,{level:`4`,id:`icons`,children:`Icons`}),`\n`,_jsx(_components.p,{children:`Customize small and large icons on Android and web. iOS always uses the app icon.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`See `,_jsx(_components.a,{href:`/docs/en/notification-icons`,children:`Notification icons`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`image`,children:`Image`}),`\n`,_jsx(_components.p,{children:`Add a large image to notifications on Android, iOS, and Chrome for Windows/Android.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Recommended size: `,_jsx(_components.code,{children:`1024×512px`}),` (2:1 aspect ratio)`]}),`\n`,_jsx(_components.li,{children:`Max size: 1 MB, max width: 2000 px`}),`\n`,_jsx(_components.li,{children:`Not supported on Safari (macOS/iOS) or macOS Notification Center`}),`\n`,_jsx(_components.li,{children:`Must be tapped or expanded on mobile to view`}),`\n`,_jsxs(_components.li,{children:[`Supported formats: `,_jsx(_components.code,{children:`PNG`}),`, `,_jsx(_components.code,{children:`JPG`}),`, `,_jsx(_components.code,{children:`GIF`}),` (animated only on iOS)`]}),`\n`,_jsxs(_components.li,{children:[`API: `,_jsx(_components.code,{children:`ios_attachments`}),` (iOS), `,_jsx(_components.code,{children:`big_picture`}),` (Android), `,_jsx(_components.code,{children:`chrome_web_image`}),` (Chrome web)`]}),`\n`,_jsxs(_components.li,{children:[`See `,_jsx(_components.a,{href:`/docs/en/rich-media`,children:`Images and rich media`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`app-name`,children:`App name`}),`\n`,_jsx(_components.p,{children:`The name of the app displaying the notification.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`iOS`}),`: Set in Xcode under `,_jsx(_components.em,{children:`Display Name`}),`; requires device restart to update`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Android/Amazon/Huawei`}),`: Set in `,_jsx(_components.code,{children:`AndroidManifest.xml`}),` under `,_jsx(_components.code,{children:`\u003capplication android:label=\"YOUR APP NAME\">`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Web`}),`: Shows the site name and/or browser`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`feature-properties`,children:`Feature properties`}),`\n`,_jsx(Heading,{level:`4`,id:`action-buttons`,children:`Action buttons`}),`\n`,_jsx(_components.p,{children:`Add interactive buttons to the push notification.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Supported on Android 4.1+ and iOS 8.0+`}),`\n`,_jsxs(_components.li,{children:[`See `,_jsx(_components.a,{href:`/docs/en/action-buttons`,children:`Action buttons`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`launch-url`,children:`Launch URL`}),`\n`,_jsx(_components.p,{children:`Control where users go when tapping the notification.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`API: `,_jsx(_components.code,{children:`url`}),` (single universal URL), `,_jsx(_components.code,{children:`app_url`}),` (deep link, e.g. `,_jsx(_components.code,{children:`your-app://screen`}),`), `,_jsx(_components.code,{children:`web_url`}),` (http/https web link)`]}),`\n`,_jsxs(_components.li,{children:[`See `,_jsx(_components.a,{href:`/docs/en/links`,children:`URLs, links, and deep links`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`badges`,children:`Badges`}),`\n`,_jsx(_components.p,{children:`Show dots or badge numbers on app icons.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`iOS`}),`: Red numeric badge; can set, increment, or clear. API: `,_jsx(_components.code,{children:`ios_badgeType`}),`, `,_jsx(_components.code,{children:`ios_badgeCount`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Android`}),`: Requires `,_jsx(_components.a,{href:`/docs/en/android-notification-categories`,children:`notification categories`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Huawei`}),`: Badge displayed as a number or dot. API: `,_jsx(_components.code,{children:`huawei_badge_class`}),`, `,_jsx(_components.code,{children:`huawei_badge_set_num`}),`, `,_jsx(_components.code,{children:`huawei_badge_add_num`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Web (Chrome on Android)`}),`: Monochrome status-bar icon for Chrome web notifications on Android devices. This is not an app-icon badge. Recommended: square PNG, `,_jsx(_components.code,{children:`96×96`}),` (minimum `,_jsx(_components.code,{children:`72×72`}),`). API: `,_jsx(_components.code,{children:`chrome_web_badge`}),`. See `,_jsx(_components.a,{href:`/docs/en/notification-icons#android-web-push-badge-icon`,children:`Notification icons`})]}),`\n`,_jsxs(_components.li,{children:[`See `,_jsx(_components.a,{href:`/docs/en/badges`,children:`Badges`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`sound`,children:`Sound`}),`\n`,_jsx(_components.p,{children:`Play a sound when the push is delivered.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`iOS`}),`: Set with `,_jsx(_components.code,{children:`ios_sound`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Android`}),`: Set via `,_jsx(_components.a,{href:`/docs/en/android-notification-categories`,children:`notification categories`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Web`}),`: Not available`]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`additional-data`,children:`Additional data`}),`\n`,_jsx(_components.p,{children:`Add custom key-value pairs to the payload for SDK handling.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Used by `,_jsx(_components.a,{href:`/docs/en/service-extensions`,children:`mobile service extensions`}),` and click listeners in the `,_jsx(_components.a,{href:`/docs/en/mobile-sdk-reference`,children:`mobile SDK`}),` and `,_jsx(_components.a,{href:`/docs/en/web-sdk-reference`,children:`web SDK`})]}),`\n`,_jsxs(_components.li,{children:[`Dashboard supports only simple key-value data; use the API with `,_jsx(_components.code,{children:`data`}),` to send nested JSON`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`data`}),` field: up to 2,048 bytes. The full push payload delivered by APNs and FCM is limited to 4,096 bytes.`]}),`\n`,_jsxs(_components.li,{children:[`Not the same as `,_jsx(_components.a,{href:`/docs/en/personalization-api-custom-data`,children:_jsx(_components.code,{children:`custom_data`})}),`, which is used only to render templates and is never delivered to the device`]}),`\n`,_jsxs(_components.li,{children:[`See `,_jsx(_components.a,{href:`/docs/en/osnotification-payload`,children:`Notification payload reference`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`collapse-id-mobile-push`,children:`Collapse ID (mobile push)`}),`\n`,_jsxs(_components.p,{children:[`Replace earlier notifications with a newer one if they share the same `,_jsx(_components.code,{children:`collapse_id`}),`. Max length: 64 characters. API: `,_jsx(_components.code,{children:`collapse_id`})]}),`\n`,_jsx(_components.p,{children:`For example, a weather app sends three alerts. If the user opens their device after all three, only the last message displays.`}),`\n`,_jsx(Heading,{level:`4`,id:`web-push-topic-web-push`,children:`Web push topic (web push)`}),`\n`,_jsxs(_components.p,{children:[`Avoid replacing older web notifications by using unique `,_jsx(_components.code,{children:`web_push_topic`}),` values. Notifications with different topics remain visible independently. Max length: 64 characters. API: `,_jsx(_components.code,{children:`web_push_topic`})]}),`\n`,_jsx(Heading,{level:`4`,id:`priority`,children:`Priority`}),`\n`,_jsx(_components.p,{children:`Set the urgency of the push, especially in battery-saving modes.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`High`}),` (`,_jsx(_components.code,{children:`10`}),`, default and recommended): Immediate, alert-based messages.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Normal`}),` (`,_jsx(_components.code,{children:`5`}),`): Recommended for background and data-only notifications.`]}),`\n`,_jsxs(_components.li,{children:[`API: `,_jsx(_components.code,{children:`priority`})]}),`\n`,_jsxs(_components.li,{children:[`Platform docs: `,_jsx(_components.a,{href:`https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns`,children:`APNs priority`}),`, `,_jsx(_components.a,{href:`https://firebase.google.com/docs/cloud-messaging/android/message-priority`,children:`FCM priority`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`4`,id:`time-to-live-ttl`,children:`Time to live (TTL)`}),`\n`,_jsxs(_components.p,{children:[`How long to keep a message if the device is offline. Default: 3 days. Range: 0–2,419,200 seconds (28 days). API: `,_jsx(_components.code,{children:`ttl`})]}),`\n`,_jsxs(_components.p,{children:[`If a user is offline and the TTL expires, the message is discarded. Set `,_jsx(_components.code,{children:`ttl: 0`}),` for messages that should never be delivered late.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`iOS limitation`}),`: APNs stores only the most recent notification while the device is offline. Earlier notifications are dropped. `,_jsx(_components.a,{href:`https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/APNSOverview.html#//apple_ref/doc/uid/TP40008194-CH8-SW5`,children:`Learn more`}),`.`]})}),`\n`,_jsx(Heading,{level:`4`,id:`notification-grouping`,children:`Notification grouping`}),`\n`,_jsx(_components.p,{children:`Android and iOS automatically group notifications after a device receives 4 or more from your app.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`iOS`}),`: Use `,_jsx(_components.code,{children:`thread_id`}),` in the API to group messages together.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Android`}),`: Use `,_jsx(_components.code,{children:`android_group`}),` in the API, or set the “Group Key” in the dashboard. For advanced customization, see `,_jsx(_components.a,{href:`/docs/en/service-extensions#android-notification-service-extension`,children:`Android notification service extension`}),` and `,_jsx(_components.a,{href:`https://developer.android.com/training/notify-user/group`,children:`Android’s group notify guide`}),`.`]}),`\n`]}),`\n`,_jsx(Frame,{caption:`Grouped notifications on Android.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/GnEw4PmmSVWWfgX5Uc3W_stacked_notification.png?fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=cee04b5675b291562d92add259bc2224`,alt:`Android device showing grouped push notifications from the same app`,\"data-og-width\":`900`,width:`900`,\"data-og-height\":`460`,height:`460`,\"data-path\":`images/docs/GnEw4PmmSVWWfgX5Uc3W_stacked_notification.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/GnEw4PmmSVWWfgX5Uc3W_stacked_notification.png?w=280\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=c4bd278dff3f89eaa61c885ce8518925 280w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/GnEw4PmmSVWWfgX5Uc3W_stacked_notification.png?w=560\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=c654daf679fd30f9227b70205b8b1dc0 560w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/GnEw4PmmSVWWfgX5Uc3W_stacked_notification.png?w=840\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=37e59c1fca43268eae17d6a0ae388cc8 840w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/GnEw4PmmSVWWfgX5Uc3W_stacked_notification.png?w=1100\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=0b22fdac4d60cd1f2ece5bd3420dd796 1100w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/GnEw4PmmSVWWfgX5Uc3W_stacked_notification.png?w=1650\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=8a7b1ed5ef92404ab40023a12cfcef50 1650w, https://mintcdn.com/onesignal/6tscVAtiSqz353kV/images/docs/GnEw4PmmSVWWfgX5Uc3W_stacked_notification.png?w=2500\u0026fit=max\u0026auto=format\u0026n=6tscVAtiSqz353kV\u0026q=85\u0026s=76c201b5bf0fa883ee75ae0b59f35807 2500w`})}),`\n`,_jsx(Heading,{level:`4`,id:`huawei-message-type-huawei`,children:`Huawei message type (Huawei)`}),`\n`,_jsxs(_components.p,{children:[`Control how OneSignal delivers push to Huawei (HMS) devices. API: `,_jsx(_components.code,{children:`huawei_msg_type`})]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`data`})}),`: The OneSignal SDK renders the notification client-side, enabling the full feature set (large image, action buttons) and `,_jsx(_components.a,{href:`/docs/en/confirmed-delivery#huawei-limitations`,children:`Confirmed delivery`}),`. Not shown if the app is force quit.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`message`})}),` (default): HMS Core renders server-side; title and body only, but shows even if the app is force quit.`]}),`\n`,_jsxs(_components.li,{children:[`See `,_jsx(_components.a,{href:`/reference/push-notification#body-huawei-msg-type`,children:_jsx(_components.code,{children:`huawei_msg_type`})}),` and `,_jsx(_components.a,{href:`/docs/en/data-notifications#huawei-hms-data-notification-setup`,children:`Data \u0026 background notifications`}),`.`]}),`\n`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`huawei_msg_type=data`}),` is the HMS transport type, `,_jsx(_components.strong,{children:`not`}),` a silent notification. A `,_jsx(_components.code,{children:`data`}),`-type push with visible content still displays a full notification.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`cancel-push-notifications`,children:`Cancel push notifications`}),`\n`,_jsxs(_components.p,{children:[`Cancel a message if it has not been `,_jsx(_components.strong,{children:`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.`]}),`\n`,_jsxs(_components.p,{children:[`In the `,_jsx(_components.a,{href:`/docs/en/push-notification-message-reports`,children:`Message Report`}),`, select `,_jsx(_components.strong,{children:`Actions > Cancel`}),`, or use the `,_jsx(_components.a,{href:`/reference/cancel-message`,children:`Cancel Message API`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`remove-a-push-notification-from-a-device`,children:`Remove a push notification from a device`}),`\n`,_jsxs(_components.p,{children:[`Once delivered, you can only replace a push notification if you set a `,_jsx(_components.a,{href:`#collapse-id-mobile-push`,children:`Collapse ID`}),` or `,_jsx(_components.a,{href:`#web-push-topic-web-push`,children:`Web push topic`}),`. Without one of these, the notification cannot be replaced or removed.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`analytics`,children:`Analytics`}),`\n`,_jsx(_components.p,{children:`Track message performance and engagement.`}),`\n`,_jsxs(Columns,{cols:2,children:[_jsx(Card,{title:`Push message reports`,icon:`chart-line`,href:`/docs/en/push-notification-message-reports`,children:_jsx(_components.p,{children:`Message-level delivery, open rate, and click-through reporting.`})}),_jsx(Card,{title:`Analytics overview`,icon:`chart-bar`,href:`/docs/en/analytics-overview`,children:_jsx(_components.p,{children:`All analytics options available in OneSignal.`})}),_jsx(Card,{title:`Event Streams`,icon:`signal-stream`,href:`/docs/en/event-streams`,children:_jsx(_components.p,{children:`Stream push events to your data warehouse or BI tools in real time.`})}),_jsx(Card,{title:`View messages API`,icon:`code`,href:`/reference/view-messages`,children:_jsx(_components.p,{children:`Pull message analytics programmatically via the REST API.`})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsx(Heading,{level:`3`,id:`what-platforms-does-onesignal-push-support`,children:`What platforms does OneSignal push support?`}),`\n`,_jsxs(_components.p,{children:[`OneSignal supports push on iOS (APNs), Android (FCM), Huawei (HMS), Amazon (ADM), web browsers (Chrome, Firefox, Safari, Edge), macOS, and Windows. See the `,_jsx(_components.a,{href:`#platform-setup-guides`,children:`platform setup guides`}),` above.`]}),`\n`,_jsx(Heading,{level:`3`,id:`how-do-i-test-push-notifications-before-sending-to-users`,children:`How do I test push notifications before sending to users?`}),`\n`,_jsxs(_components.p,{children:[`Set up `,_jsx(_components.a,{href:`/docs/en/test-users`,children:`Test users`}),` to verify delivery, rendering, and deep links without affecting real users. You can also send to a single-user segment for quick testing.`]}),`\n`,_jsx(Heading,{level:`3`,id:`why-are-my-push-notifications-not-showing`,children:`Why are my push notifications not showing?`}),`\n`,_jsxs(_components.p,{children:[`Common causes include missing or expired platform credentials, users not granting permission, or device-level settings like Do Not Disturb. See `,_jsx(_components.a,{href:`/docs/en/notifications-show-successful-but-are-not-being-shown`,children:`Notifications not shown or delayed`}),` for a full troubleshooting checklist.`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-is-the-maximum-push-notification-payload-size`,children:`What is the maximum push notification payload size?`}),`\n`,_jsxs(_components.p,{children:[`APNs and FCM limit the delivered push payload to 4,096 bytes (APNs allows 5,120 bytes for VoIP notifications). The `,_jsx(_components.code,{children:`data`}),` field (Additional Data) supports up to 2,048 bytes. Payloads over the provider limit are rejected.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/docs/en/personalization-api-custom-data#custom-data-size-limits`,children:_jsx(_components.code,{children:`custom_data`})}),` does not count toward the APNs or FCM limit. It is not delivered to the device. OneSignal uses it to render your template, and it has its own OneSignal-set limit: 2KB for push and SMS, 10KB for email.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`This is different from on-screen title/body truncation. Payload size is a hard limit enforced by APNs/FCM before delivery. Title and body display truncation happens after delivery, on-device, and depends on operating system rendering. See `,_jsx(_components.a,{href:`#title`,children:`Title`}),` above.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Push overview","description":"Send and manage mobile and web push notifications with OneSignal using the dashboard or API, with targeting, personalization, and scheduling.","keywords":["push notifications","send push","mobile push","web push","push API","notification personalization"],"href":"/docs/en/push"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Push setup","slug":"push-setup","depth":2,"children":[{"title":"Platform setup guides","slug":"platform-setup-guides","depth":3,"children":[]},{"title":"Permissions","slug":"permissions","depth":3,"children":[]},{"title":"Features and advanced use cases","slug":"features-and-advanced-use-cases","depth":3,"children":[]}]},{"title":"Send push notifications","slug":"send-push-notifications","depth":2,"children":[{"title":"Send from the dashboard","slug":"send-from-the-dashboard","depth":3,"children":[]},{"title":"Delivery schedule and optimization","slug":"delivery-schedule-and-optimization","depth":3,"children":[]},{"title":"Design properties","slug":"design-properties","depth":3,"children":[]},{"title":"Title","slug":"title","depth":4,"children":[]},{"title":"Subtitle","slug":"subtitle","depth":4,"children":[]},{"title":"Message","slug":"message","depth":4,"children":[]},{"title":"Icons","slug":"icons","depth":4,"children":[]},{"title":"Image","slug":"image","depth":4,"children":[]},{"title":"App name","slug":"app-name","depth":4,"children":[]},{"title":"Feature properties","slug":"feature-properties","depth":3,"children":[]},{"title":"Action buttons","slug":"action-buttons","depth":4,"children":[]},{"title":"Launch URL","slug":"launch-url","depth":4,"children":[]},{"title":"Badges","slug":"badges","depth":4,"children":[]},{"title":"Sound","slug":"sound","depth":4,"children":[]},{"title":"Additional data","slug":"additional-data","depth":4,"children":[]},{"title":"Collapse ID (mobile push)","slug":"collapse-id-mobile-push","depth":4,"children":[]},{"title":"Web push topic (web push)","slug":"web-push-topic-web-push","depth":4,"children":[]},{"title":"Priority","slug":"priority","depth":4,"children":[]},{"title":"Time to live (TTL)","slug":"time-to-live-ttl","depth":4,"children":[]},{"title":"Notification grouping","slug":"notification-grouping","depth":4,"children":[]},{"title":"Huawei message type (Huawei)","slug":"huawei-message-type-huawei","depth":4,"children":[]}]},{"title":"Cancel push notifications","slug":"cancel-push-notifications","depth":2,"children":[{"title":"Remove a push notification from a device","slug":"remove-a-push-notification-from-a-device","depth":3,"children":[]}]},{"title":"Analytics","slug":"analytics","depth":2,"children":[]},{"title":"FAQ","slug":"faq","depth":2,"children":[{"title":"What platforms does OneSignal push support?","slug":"what-platforms-does-onesignal-push-support","depth":3,"children":[]},{"title":"How do I test push notifications before sending to users?","slug":"how-do-i-test-push-notifications-before-sending-to-users","depth":3,"children":[]},{"title":"Why are my push notifications not showing?","slug":"why-are-my-push-notifications-not-showing","depth":3,"children":[]},{"title":"What is the maximum push notification payload size?","slug":"what-is-the-maximum-push-notification-payload-size","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/onesignal/e069c1b9f3157e14/hotjar-koala.js","/_mintlify/custom/onesignal/3e5d03885ab32f49/intercom.js","/_mintlify/custom/onesignal/dbb7af4794d1b586/munchkin-marketo.js"],"subdomain":"onesignal","siteName":"OneSignal","title":"Push overview - OneSignal","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/docs/en/push","matchLevel":0},"cn":{"href":"/docs/cn/push","matchLevel":1},"ko":{"href":"/docs/ko/push","matchLevel":1},"ja":{"href":"/docs/ja/push","matchLevel":1},"tr":{"href":"/docs/tr/push","matchLevel":1},"pt-BR":{"href":"/docs/pt-BR/push","matchLevel":1},"es":{"href":"/docs/es/push","matchLevel":1},"fr":{"href":"/docs/fr/push","matchLevel":1}}},"lastModified":"2026-11-04T17:56:44.858Z","originalFileLocation":"docs/en/push.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Send and manage mobile and web push notifications with OneSignal using the dashboard or API, with targeting, personalization, and scheduling.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OneSignal\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Push overview - OneSignal\">\u003cmeta data-mint-head property=\"og:description\" content=\"Send and manage mobile and web push notifications with OneSignal using the dashboard or API, with targeting, personalization, and scheduling.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OneSignal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://documentation.onesignal.com/docs/en/push\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://onesignal.mintlify.app/_mintlify/api/og/v2?division=Push\u0026amp;title=Push+overview\u0026amp;description=Send+and+manage+mobile+and+web+push+notifications+with+OneSignal+using+the+dashboard+or+API%2C+with+targeting%2C+personalization%2C+and+scheduling.\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=669532e931e855edbd1830979fdd68b8a4bfac58e70c27b38ee05272486639de\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Push overview - OneSignal\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Send and manage mobile and web push notifications with OneSignal using the dashboard or API, with targeting, personalization, and scheduling.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://onesignal.mintlify.app/_mintlify/api/og/v2?division=Push\u0026amp;title=Push+overview\u0026amp;description=Send+and+manage+mobile+and+web+push+notifications+with+OneSignal+using+the+dashboard+or+API%2C+with+targeting%2C+personalization%2C+and+scheduling.\u0026amp;theme=8d648f04f85028b307bd669b\u0026amp;signature=669532e931e855edbd1830979fdd68b8a4bfac58e70c27b38ee05272486639de\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/onesignal/eCiRydtW5fLfLRWp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OneSignal Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3A3DB3\">\u003clink data-mint-head rel=\"canonical\" href=\"https://documentation.onesignal.com/docs/en/push\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/en/push.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://documentation.onesignal.com/docs/en/push\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://documentation.onesignal.com/docs/cn/push\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://documentation.onesignal.com/docs/ko/push\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://documentation.onesignal.com/docs/ja/push\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"tr\" href=\"https://documentation.onesignal.com/docs/tr/push\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://documentation.onesignal.com/docs/pt-BR/push\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://documentation.onesignal.com/docs/es/push\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://documentation.onesignal.com/docs/fr/push\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://documentation.onesignal.com/docs/en/push\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://documentation.onesignal.com/#organization\",\"name\":\"OneSignal\",\"url\":\"https://documentation.onesignal.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/onesignal/yJcueeDCO7UpHnnY/logo/OneSignal-Logo.svg?fit=max\u0026auto=format\u0026n=yJcueeDCO7UpHnnY\u0026q=85\u0026s=1fcfb6fef6d820fd9d99c74850711107\"}},{\"@type\":\"WebSite\",\"@id\":\"https://documentation.onesignal.com#website\",\"name\":\"OneSignal\",\"url\":\"https://documentation.onesignal.com\",\"publisher\":{\"@id\":\"https://documentation.onesignal.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://documentation.onesignal.com/docs/en/push#webpage\",\"url\":\"https://documentation.onesignal.com/docs/en/push\",\"name\":\"Push overview\",\"description\":\"Send and manage mobile and web push notifications with OneSignal using the dashboard or API, with targeting, personalization, and scheduling.\",\"dateModified\":\"2026-11-04T17:56:44.858Z\",\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"},\"breadcrumb\":{\"@id\":\"https://documentation.onesignal.com/docs/en/push#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://documentation.onesignal.com/docs/en/push#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Message channels\",\"item\":\"https://documentation.onesignal.com/docs/en/channel-setup\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Push overview\",\"item\":\"https://documentation.onesignal.com/docs/en/push\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://documentation.onesignal.com/docs/en/push#article\",\"headline\":\"Push overview\",\"name\":\"Push overview\",\"description\":\"Send and manage mobile and web push notifications with OneSignal using the dashboard or API, with targeting, personalization, and scheduling.\",\"url\":\"https://documentation.onesignal.com/docs/en/push\",\"mainEntityOfPage\":{\"@id\":\"https://documentation.onesignal.com/docs/en/push#webpage\"},\"dateModified\":\"2026-11-04T17:56:44.858Z\",\"keywords\":\"push notifications, send push, mobile push, web push, push API, notification personalization\",\"publisher\":{\"@id\":\"https://documentation.onesignal.com/#organization\"},\"isPartOf\":{\"@id\":\"https://documentation.onesignal.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OneSignal\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OneSignal","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/docs/en/home"}]},{"tab":"User Guides","groups":[{"group":"First steps \u0026 settings","pages":[{"title":"Getting started with OneSignal","href":"/docs/en/quickstart-guide"},{"group":"OneSignal dashboard","pages":[{"title":"Apps, Organizations, \u0026 Accounts","href":"/docs/en/apps-organizations"},{"title":"Team members","href":"/docs/en/manage-team-members"},{"title":"Keys \u0026 IDs","href":"/docs/en/keys-and-ids"},{"title":"Audit logs","href":"/docs/en/audit-logs"},{"title":"Usage \u0026 billing","href":"/docs/en/billing-faq"},{"title":"Disabled apps \u0026 organizations","href":"/docs/en/disabled-apps"}]},{"title":"Migrating to OneSignal","href":"/docs/en/migrating-to-onesignal"}]},{"group":"Message channels","pages":[{"title":"Channel setup","description":"Set up push notifications, in-app messages, email, SMS, RCS, and Live Activities in OneSignal to reach users across every channel.","href":"/docs/en/channel-setup"},{"group":"Push","pages":[{"title":"Push overview","href":"/docs/en/push"},{"group":"Mobile push","pages":[{"title":"Mobile push setup","description":"End-to-end checklist for setting up mobile push notifications with OneSignal on iOS, Android, Huawei, and Amazon, from SDK setup to permission prompts.","href":"/docs/en/mobile-push-setup"},{"title":"Prompt for push permissions","href":"/docs/en/prompt-for-push-permissions"},{"title":"iOS provisional push notifications","href":"/docs/en/ios-provisional-push-notifications"},{"title":"Android notification categories","href":"/docs/en/android-notification-categories"},{"title":"Data \u0026 background notifications","href":"/docs/en/data-notifications"},{"title":"VoIP push notifications","href":"/docs/en/voip-notifications"}]},{"group":"Web push","pages":[{"title":"Web push setup","href":"/docs/en/web-push-setup"},{"title":"Web permission prompts","href":"/docs/en/permission-requests"},{"title":"Web push FAQ","href":"/docs/en/web-push-setup-faq"},{"title":"Web push browser behavior","href":"/docs/en/browser-behavior-and-unsubscribes"},{"title":"OneSignal WordPress plugin setup for web push","href":"/docs/en/wordpress"},{"title":"WordPress troubleshooting","href":"/docs/en/troubleshooting-wordpress-web-push"},{"title":"Shopify web push integration","href":"/docs/en/shopify"}]},{"group":"Push features","pages":[{"title":"Notification icons","href":"/docs/en/notification-icons"},{"title":"Notification images \u0026 rich media","href":"/docs/en/rich-media"},{"title":"Notification sounds","href":"/docs/en/notification-sounds"},{"title":"Notification badges","href":"/docs/en/badges"},{"title":"Action buttons for push notifications","href":"/docs/en/action-buttons"},{"title":"Push frequency capping","href":"/docs/en/frequency-capping"},{"title":"Push throttling","href":"/docs/en/throttling"},{"title":"iOS: Focus modes and interruption levels","href":"/docs/en/ios-focus-modes-and-interruption-levels"},{"title":"iOS: Relevance score","href":"/docs/en/ios-relevance-score"}]},{"group":"Push analytics \u0026 troubleshooting","pages":[{"title":"Push message reports","href":"/docs/en/push-notification-message-reports"},{"title":"Confirmed receipt","href":"/docs/en/confirmed-delivery"},{"title":"Notification click-through rate (CTR)","href":"/docs/en/notification-ctr"},{"title":"Mobile push: Notifications not shown or delayed","href":"/docs/en/notifications-show-successful-but-are-not-being-shown"},{"title":"Web push: Notifications not shown","href":"/docs/en/notifications-not-shown-web-push"},{"title":"Notification Images Not Showing","href":"/docs/en/notification-images-not-showing"},{"title":"Duplicated notifications","href":"/docs/en/duplicated-notifications"},{"title":"FCM expired token FAQ","href":"/docs/en/fcm-expired-token-faq"}]}]},{"group":"In-app messages","pages":[{"title":"In-app overview","href":"/docs/en/in-app-messages-setup"},{"title":"In-app triggers","href":"/docs/en/iam-triggers"},{"title":"In-app click actions","href":"/docs/en/iam-click-actions"},{"group":"In-app design","pages":[{"title":"Design in-app messages with drag-and-drop","href":"/docs/en/design-your-in-app-message"},{"title":"Design in-app messages with HTML","href":"/docs/en/design-your-in-app-message-with-html"},{"title":"In-app message templates \u0026 quickstarts","href":"/docs/en/in-app-html-templates"},{"title":"In-app message JavaScript API reference","href":"/docs/en/in-app-message-api"}]},{"title":"In-app message reports","href":"/docs/en/in-app-message-reports"},{"title":"In-app troubleshooting","href":"/docs/en/in-app-message-troubleshooting"}]},{"group":"Email","pages":[{"title":"Email overview","href":"/docs/en/email-messaging"},{"group":"Email setup","pages":[{"title":"Email setup","href":"/docs/en/email-setup"},{"title":"Email DNS configuration","href":"/docs/en/email-dns-configuration"},{"title":"Senders","href":"/docs/en/senders"},{"title":"BCC emails","href":"/docs/en/email-bcc"},{"title":"Transactional emails","href":"/docs/en/setup-transactional-emails"},{"title":"Create a custom email unsubscribe page","href":"/docs/en/create-custom-unsubscribe-page"}]},{"group":"Email deliverability \u0026 analytics","pages":[{"title":"Email message reports","href":"/docs/en/email-message-reports"},{"title":"Email deliverability","href":"/docs/en/email-deliverability"},{"title":"Deliverability insights by inbox provider","href":"/docs/en/email-deliverability-insights"},{"title":"Email reputation best practices","href":"/docs/en/email-reputation-best-practices"},{"title":"Email address validation","href":"/docs/en/email-address-validation"},{"title":"Email warm-up","href":"/docs/en/email-warm-up"},{"title":"Google Postmaster Tools","href":"/docs/en/google-postmaster-tools"},{"title":"Suppressions","href":"/docs/en/suppressions"},{"title":"Email troubleshooting","href":"/docs/en/email-troubleshooting"}]},{"group":"Design your emails","pages":[{"title":"Design emails with drag-and-drop","href":"/docs/en/design-emails-with-drag-and-drop"},{"title":"Design emails with HTML","href":"/docs/en/design-emails-with-html"},{"title":"Email unsubscribe links \u0026 headers","href":"/docs/en/unsubscribe-links-email-subscriptions"},{"title":"Email template forwarding","href":"/docs/en/email-template-forwarding"}]}]},{"group":"SMS \u0026 RCS","pages":[{"title":"SMS, MMS, and RCS overview","href":"/docs/en/sms-messaging"},{"title":"Rich Communication Services (RCS)","href":"/docs/en/rcs-messaging"},{"group":"SMS setup","pages":[{"title":"SMS setup","href":"/docs/en/sms-setup"},{"title":"Sender resource applications and country requirements","sidebarTitle":"Sender resource applications","href":"/docs/en/sms-registration-requirements"},{"title":"SMS opt-in and collection","href":"/docs/en/sms-opt-in-and-collection"},{"title":"SMS consent keyword management","href":"/docs/en/sms-consent-keyword-management"},{"title":"SMS keywords","href":"/docs/en/keywords"}]},{"group":"SMS messaging","pages":[{"title":"Promotional messaging","href":"/docs/en/sms-promotional-messaging"},{"title":"Transactional messaging","href":"/docs/en/sms-transactional-messaging"},{"title":"One-time passwords (OTP)","sidebarTitle":"One-time passwords","href":"/docs/en/sms-verify"},{"title":"Composing messages","href":"/docs/en/sms-composing-messages"},{"title":"SMS message reports","href":"/docs/en/sms-message-reports"}]}]},{"group":"Live Activities","pages":[{"title":"Live Activities","href":"/docs/en/live-activities"},{"title":"Live Activities analytics","href":"/docs/en/live-activities-analytics"}]},{"group":"Features","pages":[{"title":"A/B testing","href":"/docs/en/ab-testing"},{"title":"Multi-language messaging","href":"/docs/en/multi-language-messaging"},{"title":"Brand Kit","href":"/docs/en/brand-kit"},{"group":"Personalization","pages":[{"title":"Personalization","href":"/docs/en/message-personalization"},{"title":"Using Liquid syntax","href":"/docs/en/using-liquid-syntax"},{"title":"Data feeds","href":"/docs/en/data-feeds"},{"title":"Personalize with Custom Events","href":"/docs/en/personalization-custom-event"},{"title":"Personalize with properties","href":"/docs/en/personalization-properties-and-tags"},{"title":"Personalize messages with API custom_data","href":"/docs/en/personalization-api-custom-data"},{"title":"Dynamic Content with CSV","href":"/docs/en/dynamic-content"}]},{"group":"URLs, Links, \u0026 Deep Links","pages":[{"title":"URLs, links, \u0026 deep links","href":"/docs/en/links"},{"title":"Deep linking","href":"/docs/en/deep-linking"},{"title":"Email unsubscribe links \u0026 headers","href":"/docs/en/unsubscribe-links-email-subscriptions"}]},{"title":"Retargeting messages","href":"/docs/en/retargeting"},{"title":"Templates","href":"/docs/en/templates"},{"title":"Labels","href":"/docs/en/labels"}]}]},{"group":"Journeys","pages":[{"title":"Journeys overview","href":"/docs/en/journeys-overview"},{"group":"Journey features","pages":[{"title":"Journey settings","href":"/docs/en/journeys-settings"},{"title":"Journey messages","href":"/docs/en/journeys-messages"},{"title":"Journey message A/B testing","sidebarTitle":"A/B testing","tag":"BETA","href":"/docs/en/journeys-ab-testing"},{"title":"Journey actions","href":"/docs/en/journeys-actions"},{"title":"Journey webhooks","href":"/docs/en/journeys-webhook"},{"title":"Send WhatsApp Messages via Journey Webhooks","href":"/docs/en/sending-whatsapp-messages-via-journey-webhooks"},{"title":"Managing journeys","href":"/docs/en/managing-journeys"},{"title":"Journey version history","tag":"NEW","href":"/docs/en/journeys-version-history"},{"title":"Journey analytics","href":"/docs/en/journeys-analytics"}]},{"title":"Journey examples","href":"/docs/en/journeys-examples"},{"title":"Control Journey membership with tags","href":"/docs/en/journeys-membership-tags"}]},{"group":"OneSignal AI","pages":[{"title":"OneSignal AI","tag":"BETA","href":"/docs/en/onesignal-ai"},{"title":"OneSignal AI skills","sidebarTitle":"Skills","tag":"BETA","href":"/docs/en/onesignal-ai-skills"},{"title":"Check message","tag":"BETA","href":"/docs/en/check-message"},{"title":"OneSignal Home","href":"/docs/en/onesignal-home"},{"title":"OneSignal MCP Server","href":"/docs/en/model-context-protocol"},{"title":"OneSignal AI data practices","mode":"frame","href":"/docs/en/ai-data-practices"},{"title":"AI message composer","href":"/docs/en/ai-message-composer"},{"title":"OneSignal Slack Agent","hidden":true,"tag":"BETA","href":"/docs/en/slack-agent"}]},{"group":"Audience \u0026 events","pages":[{"title":"Segments","href":"/docs/en/segmentation"},{"title":"User-based segmentation","tag":"BETA","href":"/docs/en/user-based-segmentation"},{"group":"Users \u0026 Subscriptions","pages":[{"title":"Users","href":"/docs/en/users"},{"title":"Subscriptions","href":"/docs/en/subscriptions"},{"title":"Sessions","href":"/docs/en/sessions"},{"title":"User and Subscription Profiles","href":"/docs/en/user-subscription-profiles"},{"title":"Aliases","href":"/docs/en/aliases"},{"title":"Test users","href":"/docs/en/test-users"},{"title":"Delete users","href":"/docs/en/delete-users"}]},{"group":"Events","pages":[{"title":"Message events","href":"/docs/en/message-events"},{"title":"Session events","href":"/docs/en/session-events"},{"group":"Custom events","pages":[{"title":"Custom events","href":"/docs/en/custom-events"},{"title":"Custom event best practices","href":"/docs/en/custom-event-best-practices"},{"title":"Custom event storage and retention","href":"/docs/en/custom-event-storage"}]}]},{"group":"Tags","pages":[{"title":"Tags","href":"/docs/en/add-user-data-tags"},{"title":"Tags: Time Operators","href":"/docs/en/time-operators"}]},{"title":"Import","href":"/docs/en/import"}]},{"group":"Analytics \u0026 Integrations","pages":[{"group":"Analytics","pages":[{"title":"Analytics overview","href":"/docs/en/analytics-overview"},{"title":"Metrics glossary","href":"/docs/en/analytics-metrics-glossary"},{"title":"Goals","sidebarTitle":"Goals","tag":"BETA","href":"/docs/en/goals"},{"title":"Exporting data","href":"/docs/en/exporting-data"},{"title":"Template analytics","href":"/docs/en/template-analytics"},{"title":"Conversion metrics","href":"/docs/en/conversion-metrics"},{"title":"Engagement trends","href":"/docs/en/engagement-analytics"},{"title":"Subscription trends","href":"/docs/en/subscription-trends"},{"title":"Sessions volume","href":"/docs/en/sessions-volume"},{"group":"Retention metrics","pages":[{"title":"Retention metrics","href":"/docs/en/retention-metrics"},{"title":"Interpreting retention curves","href":"/docs/en/interpreting-retention-curves"}]},{"title":"Custom Outcomes","href":"/docs/en/custom-outcomes"}]},{"group":"Event Streams","pages":[{"title":"Event Streams","href":"/docs/en/event-streams"},{"title":"Event Stream data reference","sidebarTitle":"Event Stream data","href":"/docs/en/event-streams-data"},{"title":"In-app message event streams","href":"/docs/en/iam-event-streams"},{"title":"Google Sheets integration with Event Streams","href":"/docs/en/google-sheets-integration-with-event-streams"}]},{"group":"Integrations","pages":[{"title":"Integrations overview","href":"/docs/en/integrations"},{"title":"Data warehouse, DMP, \u0026 CRM integration","href":"/docs/en/database-dmp-crm-integration"},{"group":"OneSignal as data source","pages":[{"title":"Amplitude","href":"/docs/en/amplitude"},{"title":"Databricks","href":"/docs/en/databricks"},{"title":"Google BigQuery","href":"/docs/en/bigquery"},{"title":"Mixpanel","href":"/docs/en/mixpanel"},{"title":"Snowflake","href":"/docs/en/snowflake"},{"title":"Segment (Twilio)","href":"/docs/en/segment-onesignal-integration"}]},{"group":"OneSignal as destination","pages":[{"title":"Adobe Audience Manager","href":"/docs/en/adobe-audience-manager"},{"title":"AlloyDB","href":"/docs/en/alloydb"},{"title":"Amazon Athena","href":"/docs/en/amazon-athena"},{"title":"Amazon S3","href":"/docs/en/s3"},{"title":"Amplitude","href":"/docs/en/amplitude"},{"title":"Apache Kafka","href":"/docs/en/kafka"},{"title":"Amazon Redshift","href":"/docs/en/amazon-redshift"},{"title":"Azure Synapse","href":"/docs/en/azure-synapse"},{"title":"ClickHouse","href":"/docs/en/clickhouse"},{"title":"Confluent Cloud","href":"/docs/en/confluent-cloud"},{"title":"Databricks","href":"/docs/en/databricks"},{"title":"Elasticsearch","href":"/docs/en/elasticsearch"},{"title":"Google BigQuery","href":"/docs/en/bigquery"},{"title":"Google Cloud SQL","href":"/docs/en/google-cloud-sql"},{"title":"Google Sheets","href":"/docs/en/google-sheets"},{"title":"Greenplum","href":"/docs/en/greenplum"},{"title":"HubSpot","href":"/docs/en/hubspot"},{"title":"Materialize","href":"/docs/en/materialize"},{"title":"Microsoft Fabric","href":"/docs/en/microsoft-fabric"},{"title":"Mixpanel","href":"/docs/en/mixpanel"},{"title":"MotherDuck","href":"/docs/en/motherduck"},{"title":"MySQL","href":"/docs/en/mysql"},{"title":"PostgreSQL","href":"/docs/en/postgresql"},{"title":"Pub/Sub","href":"/docs/en/google-pubsub"},{"title":"SingleStore","href":"/docs/en/singlestore"},{"title":"Snowflake","href":"/docs/en/snowflake"},{"title":"SQL Server","href":"/docs/en/sql-server"},{"title":"Starburst Enterprise","href":"/docs/en/starburst-enterprise"},{"title":"Starburst Galaxy","href":"/docs/en/starburst-galaxy"},{"title":"Trino","href":"/docs/en/trino"},{"title":"Segment (Twilio)","href":"/docs/en/segment-onesignal-integration"}]},{"group":"Attribution","pages":[{"title":"RevenueCat","href":"/docs/en/revenuecat"},{"title":"Adjust","href":"/docs/en/adjust"},{"title":"BlueConic","href":"/docs/en/blueconic"}]},{"title":"Building an integration with OneSignal: partner guide","href":"/docs/en/building-an-integration-with-onesignal-partner-guide"}]}]},{"group":"Privacy \u0026 Security","pages":[{"group":"Security credentials","pages":[{"title":"SOC 2 Type II","href":"/docs/en/soc-2-type-ii"},{"title":"ISO 27001","href":"/docs/en/iso27001"},{"title":"HIPAA","href":"/docs/en/hipaa"}]},{"group":"Data privacy \u0026 regulatory compliance","pages":[{"title":"GDPR \u0026 Individual Rights","href":"/docs/en/gdpr-compliance"},{"title":"EU-US Data Privacy Framework","href":"/docs/en/eu-us-data-privacy-framework"},{"title":"Email regulatory compliance","href":"/docs/en/email-compliance"},{"title":"SMS regulatory compliance","href":"/docs/en/sms-regulatory-compliance"},{"title":"Apple App Privacy Requirements","href":"/docs/en/apple-app-privacy-requirements"},{"title":"Google Play Data Safety Requirements","href":"/docs/en/google-play-data-safety-requirements"},{"title":"Data collection \u0026 security FAQs","href":"/docs/en/data-questions"},{"title":"Data collected by the OneSignal SDK","href":"/docs/en/data-collected-by-the-onesignal-sdk"},{"title":"Handling personal data","href":"/docs/en/handling-personal-data"},{"title":"Data taxonomy","href":"/docs/en/data-taxonomy"},{"title":"OneSignal AI data practices","mode":"frame","href":"/docs/en/ai-data-practices"}]},{"group":"Authentication","pages":[{"title":"2-step authentication","href":"/docs/en/2-step-authentication"},{"title":"Single Sign-On (SSO)","href":"/docs/en/sso"}]}]}]},{"tab":"Developer Guides","pages":[{"title":"Developer Guides","href":"/docs/en/developers"}]},{"tab":"Tutorials","pages":[{"title":"Tutorials","href":"/docs/en/tutorials"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/reference/rest-api-overview"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/release-notes/changelog"}]},{"tab":"Customer Success Hub","pages":[{"title":"Customer Success Hub","href":"/docs/en/customer-success-hub"}]}],"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://onesignal.com/blog"},{"anchor":"GitHub","icon":"github","href":"https://github.com/OneSignal"},{"anchor":"YouTube","icon":"youtube","href":"https://www.youtube.com/@onesignalofficial/playlists"}]}},{"language":"cn","pages":[{"title":"cn","href":"/docs/cn/push"}]},{"language":"ko","pages":[{"title":"ko","href":"/docs/ko/push"}]},{"language":"ja","pages":[{"title":"ja","href":"/docs/ja/push"}]},{"language":"tr","pages":[{"title":"tr","href":"/docs/tr/push"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/docs/pt-BR/push"}]},{"language":"es","pages":[{"title":"es","href":"/docs/es/push"}]},{"language":"fr","pages":[{"title":"fr","href":"/docs/fr/push"}]}]},"basePath":"","title":"Push overview - OneSignal","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-BdiBGm0H.js","DynamicMarkdown-CbqEDjbV.js","zoom-image-lightbox-CvtNkYOX.js","lightbox-handle-r17bVUz3.js"]}