Skip to main content

Overview

Confirmed Delivery tracks when a device actually receives a push notification sent through OneSignal. In your OneSignal Dashboard, this appears in the Message Report as Confirmed (or Received).
Confirmed Deliveries Flow

Confirmed Deliveries Flow

Push notifications are delivered through platform push services:
  • iOS & Safari: Apple Push Notification Service (APNs)
  • Android & Chrome: Google Firebase Cloud Messaging (FCM)
  • Huawei devices: Huawei Messaging Service (HMS)
  • Amazon devices: Amazon Device Messaging (ADM)
  • Windows devices: Microsoft Push Notification Service (MPNS)
These services confirm when a notification was delivered to the service successfully, failed, or the device token is unsubscribed. Once the user’s device receives the notification, the OneSignal SDK sends a Confirmed Delivery event back to OneSignal. This event includes: This allows you to see exactly which Subscriptions received which notifications.

Requirements

  • Available only on paid plans. Compare plans.
  • Complete Mobile SDK Setup, including:
    • iOS Notification Service Extension
    • App Group configuration
  • Confirmed Delivery only works if the device has the OneSignal SDK installed.
    • Not supported for subscriptions created via API only.

Platform-specific limitations

iOS

  • Requires both the Notification Service Extension and App Group setup.
  • APNs keeps only one message per app when offline. If multiple pushes are sent while offline, only the latest is delivered.

Huawei

  • Supported only for the data Huawei message type.
  • For the message type, Huawei provides receipt data only in their own dashboard.

Web

  • Safari does not support Confirmed Delivery.

FAQ

Why are my Confirmed Delivery numbers low or missing?

Common causes:
  1. Many inactive or abandoned devices. See Handling inactive devices.
  2. Platform limitations (Huawei, Safari).
  3. Setup issues — especially common with iOS. See Troubleshooting Confirmed Delivery.
  4. Android devices may force quit your app, stopping SDK events. Some device manufacturers treat swiping the app away as a force quit. See Mobile push not shown guide.

Handling inactive devices

Devices that are offline won’t receive push notifications or send Confirmed Delivery events. This is common when users replace or abandon devices. Tips to re-engage inactive users:
  • Use Audience Activity to resend to users who did not Confirm Delivery.
  • Create Segments based on Last Session (e.g., inactive for 90+ days).
    • Combine with a Re-engagement Journey to win them back.
    • Periodically target inactive users to prune unreachable devices.

Why does it show Confirmed but not appear on my device?

A Confirmed Delivery event means the device received the push. Rarely, the device may not display it. Check for:

Troubleshooting Confirmed Delivery

General

  • Device offline: Pushes can be delayed up to 3 days (default). Adjust with Time To Live.
  • Unstable network: Notification may be received but the confirmation fails if the app crashes or has no network. This is rare.

iOS

Most common issue: misconfigured Notification Service Extension or App Groups. Checklist:
  1. Add the OneSignalNotificationServiceExtension target in Xcode.
  2. Double-check steps 3–6 in the iOS SDK Setup. Make sure to use the same App Group name for both app and extension:
    • group.your-main-app-target-bundle-id.onesignal
    • group.your-bundle-id.OneSignalNotificationServiceExtension.onesignal
    • If you use your own App Group name, you need to update your Info.plist files for both the main app and the Notification Service Extension to tell our SDK which App Group to use.
  3. Ensure mutable-content: 1 is present in the payload (set automatically unless overridden).
See Troubleshooting the iOS Notification Service Extension for advanced debugging.

Android

Web

  • Safari is not supported.
  • For other browsers, ensure migration to v16 SDK is complete:
    • Correct SDK init:
      <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
      
    • Correct Service Worker reference:
      importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
      

Need help?Chat with our Support team or email support@onesignal.comPlease 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!

I