Push Display Handled by Application 11.x.x


This section is only required for very advanced use cases where the application needs to handle the push display on the client side. We believe that the customization provided in Advanced Push Configuration should solve most of your use cases. Refer to this document only if your use cases cannot be satisfied by the customizations provided in the Advanced Push Configuration section.

If the push notification display is handled by the application, we need some help from the application to show Push Campaign statistics, namely Impressions and Clicks.

Tracking Notification Impressions

The application needs to notify the SDK if a push from the MoEngage Platform is received via Firebase Cloud Messaging(FCM). SDK provides a helper API to check whether a push is received from the MoEngage Platform or not. Use this API to check if the received push is from the MoEngage Platform.

Kotlin Java
if (MoEPushHelper.getInstance().isFromMoEngagePlatform(pushPayload)) {
   MoEPushHelper.getInstance().logNotificationReceived(context, pushPayload)

Tracking Notification Clicks

After the notification is clicked, the application needs to notify the SDK that a notification is clicked for the SDK to track notification clicks. For the SDK track notification clicks and user sessions accurately, ensure:

  • The push payload received from FCM is added as extras to the Pending Intent 
  • The API is called from onCreate() of your Activity, which is inflated on notification click.
Kotlin Java
MoEPushHelper.getInstance().logNotificationClick(applicationContext, intent)

Handling Silent Push

MoEngage Platform sends out silent notifications(notifications that are not displayed to the end-user) for uninstall tracking. When push payload is handled by the SDK, no additional handling is required for Silent pushes. But since the application is handling push notifications you would need to check for silent pushes and pass the payload to the MoEngage SDK.
The first check before processing the push payload is:

Kotlin Java
if (MoEPushHelper.getInstance().isFromMoEngagePlatform(pushPayload) && MoEPushHelper.getInstance().isSilentPush(pushPayload)){
      MoEFireBaseHelper.getInstance().passPushPayload(context, pushPayload)
// app logic to build and show notification

Callback for push delivered by Push Amp

Push-Amp notification is not delivered via FCM; it is delivered directly via MoEngage. You need to set up a callback for receiving payload for messages/campaigns.


  1. Set up a callback for notification received. For more information, refer to the notification received callback documentation.
  2. Mark notification as not required. This step is important; if not implemented correctly end-user might end up with two notifications. For more information, refer to the notification received callback documentation.

In this case, isNotificationRequired() should always return false.

Handling re-direction for push delivered by Push Amp+

Whenever campaigns are delivered using Push Amp+, due to a technical limitation, push display cannot be handled by the application. The application gets a callback only once the user clicks on the notification. For more information about how to register for push redirection callback, refer to the notification clicked callback documentation.

Related Documents

MoEngage Andriod Push Handling Samples



Was this article helpful?
0 out of 0 found this helpful

How can we improve this article?