--- title: "Track Push & In-App Notifications" slug: "mapp-intelligence-ios-sdk-v5-engage-track-push-in-app-notifications" updated: 2026-04-30T12:19:01Z published: 2026-04-30T12:19:01Z canonical: "docs.mapp.com/mapp-intelligence-ios-sdk-v5-engage-track-push-in-app-notifications" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.mapp.com/llms.txt > Use this file to discover all available pages before exploring further. # Track Push & In-App Notifications > [!NOTE] > Before you start, complete the [Quickstart](/v1/docs/mapp-intelligence-ios-sdk-v5-quickstart) and [Set Up Mapp Engage for Push & In-App Notifications](/v1/docs/mapp-intelligence-ios-sdk-v5-engage-setup-push-in-app-notifications) so the Engage SDK and `AppConfig.plist` are in place. Once you have installed the **Mapp Engage SDK** and configured your [AppConfig.plist](/v1/docs/mapp-intelligence-ios-sdk-v5-engage-setup-push-in-app-notifications), you can track push and in‑app notification interactions by implementing the Engage SDK delegate methods in your `AppDelegate`. > [!NOTE] > Push and in‑app delivery is handled by the Mapp Engage SDK. The Mapp Intelligence SDK only attributes the resulting events to the same user / session when the two SDKs are used together with [User Matching](/v1/docs/mapp-intelligence-ios-sdk-v5-user-matching). --- ## Track received and opened push notifications Adopt `AppoxeeDelegate` and `AppoxeeNotificationDelegate` on your `AppDelegate` and implement the handler: **Swift** ```swift class AppDelegate: UIResponder, UIApplicationDelegate,                   AppoxeeDelegate, AppoxeeNotificationDelegate {    func appoxee(_ appoxee: Appoxee,                 handledRemoteNotification pushNotification: APXPushNotification,                 andIdentifer actionIdentifier: String) {        // Forward to your analytics / routing layer if needed.    } } ``` **Objective-C** ```objectivec #import "AppoxeeSDK.h" @interface AppDelegate : UIResponder @end @implementation AppDelegate - (void)appoxee:(Appoxee *)appoxee    handledRemoteNotification:(APXPushNotification *)pushNotification                 andIdentifer:(NSString *)actionIdentifier {    // Forward to your analytics / routing layer if needed. } @end ``` --- ## Track in‑app messages For in‑app message tracking, additionally adopt `AppoxeeInappDelegate` and implement the in‑app callbacks: **Swift** ```swift class AppDelegate: UIResponder, UIApplicationDelegate,                   AppoxeeDelegate,                   AppoxeeNotificationDelegate,                   AppoxeeInappDelegate {    func appoxeeInapp(_ appoxeeInapp: AppoxeeInapp,                      didReceiveInappMessageWithIdentifier identifier: NSNumber,                      andMessageExtraData messageExtraData: [String: Any]?) { }    func inAppCallFailed(withResponse response: String?, andError error: Error?) { }    func didReceiveDeepLink(withIdentifier identifier: NSNumber,                            withMessageString message: String,                            andTriggerEvent triggerEvent: String) { }    func didReceive(inBoxMessages messages: [Any]?) { }    func didReceive(_ message: APXInBoxMessage?) { } } ``` **Objective-C** ```objectivec #import "AppoxeeInappSDK.h" @interface AppDelegate : UIResponder @end @implementation AppDelegate - (void)appoxeeInapp:(AppoxeeInapp *)appoxeeInapp    didReceiveInappMessageWithIdentifier:(NSNumber *)identifier                     andMessageExtraData:(NSDictionary *)messageExtraData { } - (void)inAppCallFailedWithResponse:(NSString *)response andError:(NSError *)error { } - (void)didReceiveDeepLinkWithIdentifier:(NSNumber *)identifier                       withMessageString:(NSString *)message                         andTriggerEvent:(NSString *)triggerEvent { } - (void)didReceiveInBoxMessages:(NSArray *)messages { } - (void)didReceiveInBoxMessage:(APXInBoxMessage *)message { } @end ``` --- ## Tie events back to Mapp Intelligence To attribute push / in‑app interactions to a known Intelligence user, enable [User Matching](/v1/docs/mapp-intelligence-ios-sdk-v5-user-matching) so the Engage `dmcUserID` is shared with Mapp Intelligence. If you also want a Mapp Intelligence event for a specific message interaction, send an action event from inside the relevant Engage delegate callback: ```swift let action = MIActionEvent(name: "InAppMessageOpened") action.eventParameters = MIEventParameters(dictionary: [    1: "messageId-\(identifier)" ]) MappIntelligence.shared()?.trackAction(action) ``` --- ## Related - [Quickstart](/v1/docs/mapp-intelligence-ios-sdk-v5-quickstart) - [Set Up Mapp Engage for Push & In-App Notifications](/v1/docs/mapp-intelligence-ios-sdk-v5-engage-setup-push-in-app-notifications) - [User Matching](/v1/docs/mapp-intelligence-ios-sdk-v5-user-matching) - [Events](/v1/docs/mapp-intelligence-ios-sdk-v5-events)