What is a session?

FollowAnalytics considers a session of usage as starting when the user opens your app, and finishing when the app is placed in background for more than 2 minutes.

So if a user exits the app but comes back after 100 seconds, the SDK still considers the session as continuing. If the user only comes back after 121 seconds, then the SDK considers the user stopped what he was doing, and therefore starts another session.

You can modify this value by calling:


[FAFollowAnalytics setMaxBackgroundTimeWithinSession:YOUR_SESSION_TIMEOUT_IN_SECONDS];


FollowAnalytics.setMaximumBackgroundTimeWithinSession(int second);
Note: Larger values might affect the delay before logs arrive to our servers.

What is the definition of stickiness?

The stickiness is the ratio of Daily Active Users (DAU) over Monthly Active Users (MAU). It indicates the portion of users seen over 30 days that are present on a given day.

When average, it gives an estimate of how sticky your app is. If the ratio is 100%, it means that all users use the app daily. If it's close to 0%, it means that almost no one uses the app more than once a month.

What is an active user?

An active user is one device ID. Unless stated as "logged-in user", the notion of active users does not guarantee that the same person is not counted twice because they use 2 devices.

You can use Segments to create your own definition of what an active user is, analyze that group, and use it for campaigns.

What is the difference between Events and Attributes?

The two main datapoints collected through the mobile SDKs and Systems of Records (SOR) are events and attributes.

An event occurs one or more times, in a context. The analysis is based on the date and time of each occurrence.

An attribute qualifies a user or customer. It has one value that is valid until changed.

What is the difference between the debug and release configurations?

Make sure the SDK is in release mode before publication

Always ensure that you are not publishing an application in debug mode, as the data collected will not be considered as production data, and therefore not appear on the dashboards.


The Followanalytics SDK has 2 compilation modes, matching the debug and release modes defined by Apple, and the build types in the Gradle build system.

The SDK configuration your app runs in has an impact on where your data is sent.

Debug SDK configuration:

Release SDK configuration:

Debug mode on iOS

In Objective-C, the FollowAnalytics iOS SDK relies on the FADEBUG constant, which looks at the DEBUG compilation flag, that is present in all projects created through Xcode (available only in Objective-C).

If you use the Swift language, you set the debug mode yourself. See initialize the SDK.

Debug mode on Android

Your data is sent in debug mode when your app is debuggable. This happens if:

By default on gradle, the commands assembleDebug and installDebug build the application in debug mode. Android Studio signs your app in debug mode automatically when you run or debug your project from the IDE.

An APK built by commands assembleRelease and installRelease is by default in release mode. The release app is technically ready to be deployed on the store.

Checking if your APK is debuggable

You may be using other build types than debug and release, e.g. dev and prod. You can check whether your APK is debuggable or not using the following snippet code:

ApplicationInfo appInfo = ...;
boolean isDebuggable = appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE != 0;
    your environment is debug
else {
    your environment is release

How are download reports fetched?

FollowAnalytics can connect to your Apple and Google store accounts to automatically fetch your list of apps, comments, and download figures.

iOS apps

The FollowAnalytics platform processes the daily reports emitted by Apple and made available in the iTunes Connect interface at (Sales and Trends > Reports).

To double-check the daily figures displayed by FollowAnalytics with what Apple gives you in ITC, you need to go to the Sales and Trends section (Sales and Trends > Sales), and select your app in the table below the chart.

The figures found in the report files we process can sometimes slightly differ from the charts you see in your graphical reports in iTunes Connect. Apple states that the figures they provide in 3 different places can be different, and that the only fully reliable count appears in the monthly financial reports (But these reports are only released once a month).

From the reports we fetch from Apple, we take into account all "first-time" downloads done from the mobile device or from a desktop version of iTunes. These downloads are identified by the product type identifiers starting with a 1.

Daily downloads reports are fetched again during the week following their release because they tend to evolve when issues are detected by Apple. Some download figures can therefore sometimes change a bit over the course of a week.

Android apps

The download figures are fetched from the installs reports you can download at

These reports are zip files holding various stats. The one we chose to use are the daily device installs, which represent the number of unique installs made on devices over the previous 24 hours.

Sometimes, Google doesn't provide up-to-date exports, whereas the charts you can see in their UI has up-to-date download figures. This can lead to delays in getting your figures in FollowAnalytics. There is no explanation for this on their side.

How are attributions counted?

Attributions are received through callbacks from our attribution partners.

The installs listed in our Attribution Analytics section are the reported installs for which we have never seen any session before with the provided device ID. If our partner reports an install but we already know the device, it means that they missed that device the first time it used the app, probably because the tracking code was put in place after the FollowAnalytics SDK.

Possible discrepancies in numbers

If a device was launched in background, or if the session was not properly closed and data didn't reach our servers on time, the number of attributions can be higher than one of devices we actually track.

This can lead to more attributions than new users over the same period.


How do I get my device ID?

FollowAnalytics allows you to send push messages to a specific device in order to test your campaigns, before broadcasting the message to your targeted audience.

To do so, you therefore need to be able to retrieve the device identifier associated to your app, on your device.

There are 3 ways to get it.

1. From your code

If you want to make it available from your app (for instance through a long press on some part of a view), you can get it in your code through:


[FAFollowAnalytics deviceUUID]



2. URL scheme

However, if you want non-developer users to retrieve their device ID, declare a URL Scheme as explained at step 5 of the Define the URL Scheme section of the iOS or Android documentation.

You will then be able to retrieve it through the campaign creation form (Test push feature) or using the Session checking page.

3. If you know your user identifier

The Logged-in users page, in the User Analytics section of the product, lists all logged-in users seen over a selected period. This page allows to export the list.

In the export, you get additional fields that are not listed in the page, including the last device ID seen for each user identifier.

How do I check that FollowAnalytics receives my data?

Once your app has been configured with the right API Key, you can start logging immediately.

Logs sent as Debug (when the app is configured as such, or when the app is run from a simulator) can be checked at

If you run your application with the SDK configured in Release mode, on a device, the logs will end up on the platform. You can check the data received for a given device at

Attributes received in either configuration can be checked at

To know more about debug and release modes, see What is the difference between the debug and release configurations?

Logging best practices

The FollowAnalytics SDK allows to save events, using a name, and attach details to it.

Dealing with Attributes should follow roughly the same rules:

How to configure my iOS app for push notifications?

Generate and import a push certificate

To be able to send and receive push notifications, you first need a push certificate. To do so:

  1. Connect to your developer portal, and go to the App IDs,

  2. Select your app, ensure the ID doesn't use a wildcard (*), and click Edit at the bottom of the service list,

  3. Check the Push Notifications box, and generate your production certificate by following the wizard,

  4. Import the .cer file into your Keychain by double clicking it, open the Keychain Assistant app and locate that certificate,

  5. Click the certificate line and export the .p12 file. Enter a password for your certificate (you'll need it later).

  6. Go to the Administration page, upload the .p12 file and enter the password you've entered on the previous step.

Do not forget to ensure your provisioning profile has the Push Notifications service enabled by expanding it from the list in your developer portal.

Uploading certificates as .pem

If you want to convert the certificate and key files to a .pem, follow these steps:

  1. Expand the certificate line and export both the certificate and the associated key listed under it (right click > export). Name them apns-cert.p12 and apns-key.p12,

  2. Convert these files into .pem files and combine them, by running the following command line instructions, one by one:

openssl pkcs12 -clcerts -nokeys -in apns-cert.p12 -out apns-cert.pem
openssl pkcs12 -nocerts -in apns-key.p12 -out apns-key.pem
openssl rsa -in apns-key.pem -out apns-key-noenc.pem
cat apns-cert.pem apns-key-noenc.pem > apns-final.pem

This apn-final.pem file should be uploaded in the Administration section.

How and why can I connect my app store accounts?

By including a specific FollowAnalytics e-mail address in the member list of your Google or Apple account, you can benefit with automatic configuration of your FollowAnalytics entreprise account.

Your apps will be automatically listed, and your download figures and comments will be fetched. No further action is required.

To get started, please contact your Customer Success Manager or e-mail FollowAnalytics Support at

Requirements and limitations

Minimum OS versions for the SDK

The iOS SDK requires at least iOS 6 or later.

To benefit from all SDK capabilities on Android, you will need at least Android API 9 for your app's minSdkVersion.

The SDK can run in apps using API 7, but without GCM, contextual campaigns and geolocation. On API 8, you can create contextual campaigns without geofencing triggers.

The PhoneGap / Cordova SDK requires Cordova version 6.0 or higher.

Compatibility with other SDKs

The FollowAnalytics SDK is regularly tested alongside most major SDKs on the market, and we don't know of any conflict preventing any SDK to perform properly. If you suspect a conflict, please contact us.

Prerequisites for integrating the SDK

Register your app on the FollowAnalytics platform:

  1. In the Administration homepage of the platform Click on the "+ Add App" Button at the top right-hand corner. A dialog called Add New App will be displayed.

  2. Write your app information and click "+ Add New App" to approve (see below).

About your Application details

  • Chose your app name wisely: While most of your application details are editable, your app name is Read-Only once the app is created. Be sure to use a sustainable app name. You may add a display name and update the package name.
  • Similarly, you cannot change your "Platform" (Web, Android, or iOS). If your app is coded with a framework such as Xamarin, Cordova, REACT native, you will need to add an app and API Key for each platform you wish to be published on.

Now that your application is registered, you can generate your API key:

  1. Access the application page and click on the "Manage API keys" tab

  2. Click the "+ Generate new API key" button to generate your API key. Add API key

    The API key is now active. You may use it now for your application.

  3. FollowAnalytics requires a valid p12 certificate in order to communicate with Apple Push Notification Services (APNS). Reminder: p12 certificates are only valid for a year.

Registration at startup

The SDK automatically registers the early during the startup of the application. This happens as the SDK calls this method: [[UIApplication sharedApplication] registerForRemoteNotifications.

Logging limitations

SDK size and impact on app performance

The FollowAnalytics SDK has been developed to have no visible impact on the app. The battery won't be impacted, and the network will only be used to send light JSON files to the servers.

The impact on the app size is also very limited.

Is FollowAnalytics real-time?

The SDK sends its data as soon as possible. The server proceeds the sessions when the whole of it has been received. If a session is incomplete more than 3 days, it is discarded to avoid ever-changing reports (data is sometimes received up to months later).

When the full session is received as soon as it's over, it usually becomes available in the UI in less than 10 minutes.

Attributes are sent through a separate stream, and are appended to profiles as soon as they are received. This usually takes only a few seconds if the attribute is already defined on the System of Records.

What is the device ID used by FollowAnalytics?

The FollowAnalytics SDK generates its own private device ID on iOS, and uses the Android Identifier on Android.

The identifier is the same on all Android apps on the same device, but unless your iOS apps are declared in an app group, the device ID won't be shared.

You can get your device ID in your code or through the FollowAnalytics product. Please refer to the related section.

FollowAnalytics conforms to best practices

The FollowAnalytics SDK will not get your app rejected. Common causes of rejections following the addition of an SDK to an app are related to the use of advertising identifiers, which the FollowAnalytics SDK never collects.

Does FollowAnalytics collect the IDFA and IFA?

The FollowAnalytics SDK never fetches any advertisement identifier, because it is not intended for analytics.

It can however be collected and attached to profiles when connecting an attribution analytics provider. This allows export of usage data associated to an IDFA or IFA for looping back with a DMP.

How do campaigns work?

The targeted audience of a scheduled campaign is computed when it starts. Campaigns based on Mobile Moments have their eligible audience computed every 10 minutes server-side, and the triggering of the message is handled by the SDK, on eligible devices.

Scheduled push messages are sent by our servers on the given date and time, to whomever is opted-in at the time. In-app scheduled campaigns are handled by the SDKs, which will fetch only its active ongoing campaigns from the server. Campaigns are updated SDK-side whenever the app gets to foreground, or when receiving a push notification. If the campaign is no longer valid, it will be discarded.

Can I use deep-linking to open a mail or phone app?

FollowAnalytics allows to provide an App Link as the action on a push notification. This App Link can be used to direct users in a part of your app that is accessible through a deep-link, but can also be used to link to other apps, including the phone and mail apps.

Can deep-linking work when the app has a login page?

Deep-linking is about passing to an app information about the section that should be displayed. It is then up to the app to treat this information and ensure it is not lost if the app has to go through various states before being able to display the expected section.

Deep-linking can therefore lead to any page of the app, no matter what steps the users might have to go through before being allowed to see it. It however requires the mobile app developer to keep track of the context so that once the steps are validated, the right page can then be displayed.

How does the SDK handle geofencing?


A geofence is a virtual perimeter for a real-world geographic area. It can be a radius around a location or a pre-defined set of boundaries.

The process of using a geofence is called geofencing. Geofencing allows you to send notifications, campaign or sms to your app users when they enter or exit the geofence, which can for instance be your store, city or area. This allows you to provide users with information that is highly relevant to them, which helps you to activate your users, drive revenue and leverage customer insights.

Apps can also collect geolocations, which can be used to create segments on data collected in past sessions.

What the FollowAnalytics SDK does

To handle geofencing campaigns, the SDK will rely on the operating system (OS) capabilities. Both Android and iOS allow to register geofences that should be watched on behalf of an app, and wake this app up when the devices enters or leaves the area.

Leveraging this dedicated OS feature allows to limit the impact on battery.

The collection of geolocations is done seamlessly when the app itself requests access to location data in the context of the service it is providing.