You are here:
MobilePush FAQs
Review these frequently asked questions about MobilePush in Marketing Cloud Engagement.
How is a contact related to a device?
One contact can have multiple mobile devices, but one mobile device can’t be associated with multiple contacts. If a new contact logs in to a device, Marketing Cloud Engagement associates the device with the new contact key. This association takes about 15 minutes.
How does a user opt in or out of receiving messages?
On an iOS device, your app prompts the contact to opt in to notifications. On an Android device, notifications are enabled by default. On both platforms, the contact must enable location tracking to receive location-based messages.
If a contact deletes your app or disables notifications, the contact is automatically opted out.
Why implement the SDK when using MobilePush?
Implementing the SDK gives you access to all the MobilePush features. If you use MobilePush without implementing the SDK, these features are unavailable:
- Tracking opt-ins and opt-outs
- Tracking changes made to the device at any level
- Rich push, inbox messaging, location-based messaging, and in-app messaging
- Device analytics
How does device registration work with the MobilePush SDK?
The SDK registers a device when the SDK is initialized. If a login is required, we recommend that you delay registering the device until the login is completed. When the SDK identifies the contact key, it creates a contact record and associates the device ID to the contact. For more information, see the Device and Contact Registration and Register Contacts with Marketing Cloud Engagement.
If a user has multiple devices, how do I send to only one device?
You can target a specific device using device-level attributes and AMPscript. For example, you can target only iOS devices by including AMPscript code that generates a message for that platform. This AMPscript code produces a message that’s only visible on an iOS device.
%%[If Platform == 'iPhone OS' THEN]%%Hello from Marketing Cloud
Engagement!%%[EndIf]%%
What constitutes a bounce message?
Firebase Cloud Messaging (FCM) and Apple Push Notification service (APNs) provide send-time
feedback for Android and iOS devices. A message is flagged as bounced when FCM or APNs responds
to a send request with a NotRegistered error. If a message
is sent unsuccessfully to an Android or iOS device three times, the device is considered opted
out. If a device re-registers after opt-out, the bounces are cleared, and you can send messages
to that device again.
A Bounce record is for operational data. The bounce record is a marker to signify when a device must be opted out.
If a user’s device is turned off, is that treated as a bounce, or is the push delivered in the background?
If a user’s device is turned off or disconnected from the network, the messaging provider adds the message to a queue. APNs and FCM don’t specify a guaranteed amount of time that they store messages in this queue.
If the device is turned back on while a message is in this queue, the message is delivered to the device.
If a message expires while it’s in the queue, it isn’t counted as a bounce, opted-out, or undeliverable message.
If a user disables push notifications or uninstalls the app, does that information get sent back to the messaging service and treated as a bounce?
If a user uninstalls the app, the message bounces and the user is opted out automatically.
If the app is installed but push notifications are disabled at the operating system level, the next registration payload from the app registers the opt-out.
On iOS, disabling push notifications doesn’t unregister the device. Instead, push notification payloads are received but aren’t delivered. The device doesn’t appear in APNs feedback as a result of disabling push notifications.
On Android, opting out at the operating system level unregisters the app with FCM, and subsequent push messages bounce.
How does Marketing Cloud Engagement behave when MobilePush records are imported and then a user opts in using the mobile app?
When a user opts into a mobile app that uses the SDK, imported contacts are replaced with contacts created by the SDK.
This example describes what happens when an imported user opts in using a mobile app that uses the SDK.
- Contact 1 is imported with device token
X5h3n9u1t4r6d2J7v0L5s8x1. - Contact 1 logs in to the mobile app.
- The SDK registers the device token
X5h3n9u1t4r6d2J7v0L5s8x1. - The SDK creates Contact 2 with device ID
d480032d-2e79-4094-bee8-1360cdcf2855. - Contact 1 is disassociated with the device token
X5h3n9u1t4r6d2J7v0L5s8x1. - The device token
X5h3n9u1t4r6d2J7v0L5s8x1is associated with Contact 2.
How long does it take for attributes to appear in Marketing Cloud Engagement?
If the device was provisioned and registered correctly, it takes about 15 minutes for the attributes to be processed and appear in Marketing Cloud Engagement.
Does MobilePush use encryption in the SDK?
Yes. The SDK database is protected using AES 256 encryption.
What are device IDs, system tokens, and device tokens?
A device ID, sometimes referred to as an installation ID, is a globally unique identifier (GUID) that the SDK generates every time an app is installed on a device. The device ID isn’t used as a persistent unique identifier for the physical device. FCM and APNs generate system and device tokens when the device registers to receive push notifications.
What kind of data is captured when the analytics flag is enabled?
When the analytics flag is enabled, the SDK sends the events listed in this table to Marketing Cloud Engagement. This list of supported events is subject to change.
| Analytic Event | Description |
|---|---|
| Open | The message was opened. |
| Display | A local fence or beacon notification was displayed. |
| Time in App | The amount of time that an app is in the foreground. |
| Time in App Opens | The amount of time that the user spent in the app after tapping the notification. |
| Fence Entry | The device entered a geofence. |
| Fence Exit | The device left a geofence. |
| Time in Location | The amount of time that a device was inside a geofence. |
| Beacon in Range | The device was within range of a beacon. |
| Time with Beacon in Range | The amount of time that the device was within range of a beacon. |
| Inbox Download | An inbox message was downloaded to the device. |
| Inbox Open | An inbox message was opened. |
| Should Show Message | If the shouldShowNotification() function in the
SDK returns true, the value for this event is 1. Otherwise, the value is 0. |

