Segment-MoEngage 8.2.0

Segment-MoEngage 8.2.0

LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release Feb 2023

Maintained by rakshitha, MoEngage Inc.

Depends on:
Analytics~> 4.0
MoEngage-iOS-SDK< 9.6.0, >= 9.5.0



Version License

MoEngage integration for analytics-ios.


MoEngage can be integrated via Segment using CocoaPods.

  • Initialise pod with pod init command, this will create a podfile for your project.
  • Update your podfile by adding pod 'Segment-MoEngage' as shown below:
pod 'Segment-MoEngage’
  • Update the pod.
pod update

Setup Segment SDK:

Now head to the App Delegate file, and setup the Segment SDK by

  1. Importing SEGMoEngageIntegrationFactory.h and SEGMoEngageInitializer.h.
  2. Initialize MOSDKConfig object and call initializeDefaultInstance: method of SEGMoEngageInitializer.
  3. Initialize SEGMoEngageIntegrationFactory instance to the SEGAnalyticsConfiguration as shown below:


#import <SEGMoEngageIntegrationFactory.h>
#import <SEGMoEngageInitializer.h>
#import <SEGAnalytics.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

   //Initialize SDKConfig object and call initializeDefaultInstance: method of SEGMoEngageInitializer
   MOSDKConfig* sdkConfig = [[MOSDKConfig alloc] initWithAppID:@"YOUR APP ID"];
   [SEGMoEngageInitializer initializeDefaultInstance:sdkConfig];
   // Add your configuration key from Segment
   SEGAnalyticsConfiguration *config = [SEGAnalyticsConfiguration configurationWithWriteKey:@"configuration key"];

   // Add MoEngageIntegrationFactory. Without this data will not come to MoEngage.
   [config use:[SEGMoEngageIntegrationFactory instance]];
   [SEGAnalytics setupWithConfiguration:config];


import Segment_MoEngage
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey:  Any]?) -> Bool {
    let sdkConfig = MOSDKConfig(appID: "YOUR APP ID")
    // Add your configuration key from Segment
    let config = SEGAnalyticsConfiguration(writeKey:"configuration key")
    // Add MoEngageIntegrationFactory. Without this data will not come to MoEngage.
    SEGAnalytics.setup(with: config)

Setup MoEngage in Segment Dashboard:

To setup MoEngage do the following :

  1. First get your key from MoEngage dashboard. (Dashboard -> Settings -> General -> General Settings -> AppID)
  2. Go to Segment dashboard, go to Integrations and select MoEngage.
  3. Enable MoEngage Integration.
  4. Go to MoEngage Settings and enter the MoEngage AppID, obtained in Step1.
  5. Save the changes.

Segment Dashboard Settings

These new settings will take up to an hour to propogate to all of your existing users. For new users it’ll be instanteneous! Segment-MoEngage Integration is a bundled integration, requires client side integration.

Tracking User Attribute

User attributes are specific traits of a user, like email, username, mobile, gender etc. identify lets you tie a user to their actions and record traits about them. It includes a unique User ID and any optional traits you know about them.

[[SEGAnalytics sharedAnalytics] identify:@"a user's id" traits:@{ @"email": @"a user's email address" }];

For more info refer to this link.

Tracking Events

Event tracking is used to track user behaviour in an app. track lets you record the actions your users perform. Every action triggers i.e,“event”, which can also have associated attributes.

[[SEGAnalytics sharedAnalytics] track:@"Item Purchased" properties:@{ @"item": @"Sword of Heracles"}];

That's all you need for tracking data. For more info refer this link.

Reset Users

The reset method clears the SDK’s internal stores for the current user. This is useful for apps where users can log in and out with different identities over time.

[[SEGAnalytics sharedAnalytics] reset];

For more info refer to this link.

Install / Update Differentiation

Since you might integrate us when your app is already on the App Store, we would need to know whether your app update would be an actual UPDATE or an INSTALL. To differentiate between those, use one of the method below:

//For new Install call following
[[MoEngage sharedInstance] appStatus:AppStatusInstall];

//For an app update call following
[[MoEngage sharedInstance] appStatus:AppStatusUpdate];

For more info on this refer following link.

Using features provided in MoEngage SDK

Along with tracking your user's activities, MoEngage iOS SDK also provides additional features which can be used for more effective user engagement:

Push Notifications:

Push Notifications are a great way to keep your users engaged and informed about your app. You have following options while implementing push notifications in your app:

Segment Push Implementation:

1.Follow the directions to register for push using Segment SDK in this link.

2.In your application’s application:didReceiveRemoteNotification: method, add the following:

[[SEGAnalytics sharedAnalytics] receivedRemoteNotification:userInfo];

3.If you integrated the application:didReceiveRemoteNotification:fetchCompletionHandler: in your app, add the following to that method:

[[SEGAnalytics sharedAnalytics] receivedRemoteNotification:userInfo];

4.If you implemented handleActionWithIdentifier:forRemoteNotification:, add the following to that method:

[[SEGAnalytics sharedAnalytics] handleActionWithIdentifier:identifier forRemoteNotification:userInfo];

MoEngage Push Implementation:

Follow this link to implement Push Notification in your mobile app using MoEngage SDK : Push Notifications

In-App Messaging:

In-App Messaging are custom views which you can send to a segment of users to show custom messages or give new offers or take to some specific pages. Follow the link to know more about inApp Messaging and how to implement it in your application: InApp NATIV

Segment Docs:

For more info on using Segment for iOS refer to Developer Docs provided by Segment.

Change Log

See SDK Change Log for information on every released version.


For any issues you face with the SDK and for any help with the integration contact us at [email protected].