What is Confirmed Delivery?

Confirmed Delivery tracks whether a device has actually received a push notification sent via OneSignal. This information appears in the notification’s Message Report under the status “Confirmed” or “Received.”

Once a push notification is successfully delivered to a device, the OneSignal SDK sends a receipt event back to OneSignal’s servers.

Confirmed Deliveries Flow


How Confirmed Deliveries work

Push notifications are sent from OneSignal through platform-specific services (APNs for iOS, FCM for Android, etc.). Confirmed Delivery events happen only after the OneSignal SDK on a device successfully receives a notification and acknowledges it back to OneSignal.

  • Android: Confirmed automatically when the OneSignal SDK receives the push.
  • iOS: Requires Notification Service Extension (NSE) and correct App Group configuration to confirm receipt.
  • Web: Requires correct SDK and Service Worker versions. Safari is not supported.

Requirements


Handling inactive devices

Devices that are offline or retired will not receive push notifications. This is common when users change or abandon devices.

Tips for re-engagement:

  • Use Audience Activity to try resending messages to users who “Did not Confirm Delivery.”
  • Create Segments based on Last Session to identify users inactive for 6 months, 1 year, or longer.
  • Periodically target inactive users with push notifications to identify unsubscribed or unreachable devices.

Troubleshooting Confirmed Delivery

General scenarios

  • Device offline: Push can be delivered up to 3 days later by default if the device is offline. Adjust this using the Time To Live parameter.
  • Unstable network: The notification may be received and/or clicked but the confirmation might fail to send due to network issues or app crash. This should be rare.

iOS troubleshooting

Common Cause: Misconfigured of both the Notification Service Extension (NSE) and App Groups.

Must-haves:

  • NSE properly configured following our Mobile SDK Setup guide.
  • The same App Group name for both the main app and the NSE.
    • group.your-main-app-target-bundle-id.onesignal
    • group.your-bundle-id.OneSignalNotificationServiceExtension.onesignal
  • Message is sent with mutable-content set to 1. This happens automatically, but you may be setting it to 0 in your code.

If issues persist, see Troubleshooting the iOS Notification Service Extension guide for more debugging steps.

Android troubleshooting

  • If notifications are not displaying on Android, see our Notification Not Shown Guide.
  • If notifications display, but no Confirmed Delivery reported, you likely have a custom Android Notification Service Extension blocking the request. See our Android Service Extension setup guide to make sure you implemented it to work correctly with OneSignal Notifications.

Web troubleshooting

  • Due to limitations with the Safari browser, it cannot support Confirmed Delivery.
  • Ensure that you migrated to the v16 SDK correctly. See our User Model Web Migration Guide for more details.
    • Your init code loads the correct v16 SDK:
      <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
      
    • Your OneSignalSDKWorker.js Service Worker script references the correct v16 script:
      importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
      

Confirmed Delivery limitations

CaseDescription
Displayed but NOT ConfirmedDevice shows the notification but doesn’t report to OneSignal due to network error or crash.
Confirmed but NOT DisplayedNotification received but not seen by user due to:
  • Low priority or grouped notifications
  • App is foregrounded and prevents display
  • Other SDK suppressing display
  • Android notification channel disabled
Delivered but NOT Confirmed and NOT DisplayedNot Confirmed because of message deduplication:
  • iOS: APNs keeps only 1 message per app if device is offline
  • Android: FCM replaces older messages with same collapse_id

Need help?

Chat with our Support team or email support@onesignal.com

Please include:

  • Details of the issue you’re experiencing and steps to reproduce if available
  • Your OneSignal App ID
  • The External ID or Subscription ID if applicable
  • The URL to the message you tested in the OneSignal Dashboard if applicable
  • Any relevant logs or error messages

We’re happy to help!


What is Confirmed Delivery?

Confirmed Delivery tracks whether a device has actually received a push notification sent via OneSignal. This information appears in the notification’s Message Report under the status “Confirmed” or “Received.”

Once a push notification is successfully delivered to a device, the OneSignal SDK sends a receipt event back to OneSignal’s servers.

Confirmed Deliveries Flow


How Confirmed Deliveries work

Push notifications are sent from OneSignal through platform-specific services (APNs for iOS, FCM for Android, etc.). Confirmed Delivery events happen only after the OneSignal SDK on a device successfully receives a notification and acknowledges it back to OneSignal.

  • Android: Confirmed automatically when the OneSignal SDK receives the push.
  • iOS: Requires Notification Service Extension (NSE) and correct App Group configuration to confirm receipt.
  • Web: Requires correct SDK and Service Worker versions. Safari is not supported.

Requirements


Handling inactive devices

Devices that are offline or retired will not receive push notifications. This is common when users change or abandon devices.

Tips for re-engagement:

  • Use Audience Activity to try resending messages to users who “Did not Confirm Delivery.”
  • Create Segments based on Last Session to identify users inactive for 6 months, 1 year, or longer.
  • Periodically target inactive users with push notifications to identify unsubscribed or unreachable devices.

Troubleshooting Confirmed Delivery

General scenarios

  • Device offline: Push can be delivered up to 3 days later by default if the device is offline. Adjust this using the Time To Live parameter.
  • Unstable network: The notification may be received and/or clicked but the confirmation might fail to send due to network issues or app crash. This should be rare.

iOS troubleshooting

Common Cause: Misconfigured of both the Notification Service Extension (NSE) and App Groups.

Must-haves:

  • NSE properly configured following our Mobile SDK Setup guide.
  • The same App Group name for both the main app and the NSE.
    • group.your-main-app-target-bundle-id.onesignal
    • group.your-bundle-id.OneSignalNotificationServiceExtension.onesignal
  • Message is sent with mutable-content set to 1. This happens automatically, but you may be setting it to 0 in your code.

If issues persist, see Troubleshooting the iOS Notification Service Extension guide for more debugging steps.

Android troubleshooting

  • If notifications are not displaying on Android, see our Notification Not Shown Guide.
  • If notifications display, but no Confirmed Delivery reported, you likely have a custom Android Notification Service Extension blocking the request. See our Android Service Extension setup guide to make sure you implemented it to work correctly with OneSignal Notifications.

Web troubleshooting

  • Due to limitations with the Safari browser, it cannot support Confirmed Delivery.
  • Ensure that you migrated to the v16 SDK correctly. See our User Model Web Migration Guide for more details.
    • Your init code loads the correct v16 SDK:
      <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
      
    • Your OneSignalSDKWorker.js Service Worker script references the correct v16 script:
      importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
      

Confirmed Delivery limitations

CaseDescription
Displayed but NOT ConfirmedDevice shows the notification but doesn’t report to OneSignal due to network error or crash.
Confirmed but NOT DisplayedNotification received but not seen by user due to:
  • Low priority or grouped notifications
  • App is foregrounded and prevents display
  • Other SDK suppressing display
  • Android notification channel disabled
Delivered but NOT Confirmed and NOT DisplayedNot Confirmed because of message deduplication:
  • iOS: APNs keeps only 1 message per app if device is offline
  • Android: FCM replaces older messages with same collapse_id

Need help?

Chat with our Support team or email support@onesignal.com

Please include:

  • Details of the issue you’re experiencing and steps to reproduce if available
  • Your OneSignal App ID
  • The External ID or Subscription ID if applicable
  • The URL to the message you tested in the OneSignal Dashboard if applicable
  • Any relevant logs or error messages

We’re happy to help!