.. _third_party_integrations: Integrations ============ :supported-text:`Supported on` |ios-logo| |android-logo| |rest-logo| .. _analytic_integrations: Analytic Integrations --------------------- .. toctree:: :hidden: third-party-integrations/adobe-analytics third-party-integrations/amplitude third-party-integrations/firebase third-party-integrations/flurry third-party-integrations/google-analytics third-party-integrations/localytics third-party-integrations/mixpanel Apptimize can automatically capture event and attribute data that you have already instrumented with analytic frameworks. When you enable one of our analytics integrations, our SDK makes a copy of the data you are sending to that provider and sends the copy to Apptimize. These integrations allow you to analyze the impact of A/B experiments without any additional analytic setup work. The analytic integrations will be off by default for all new customers. To enable these integrations for your app, go to Manage -> Integrations. Note: Remote management of these integrations is supported as of Android SDK 3.6.0 and iOS SDK 3.3.0. For previous SDK versions, they are controlled only by :ref:`SDK setup parameters`. If the integrations have been disabled at the SDK level, data will not be sent to Apptimize, regardless of your settings on the Manage Integrations page. .. image:: third-party-integrations/manage-integrations.png A summary of currently supported integrations is listed below. If you use another analytics provider that we don’t support right now, please `contact us `_. +----------------------+---------------+------------------+--------+----------------------------------+ | Integration | Import Events | Import User Info | Export | Detail | +======================+===============+==================+========+==================================+ | :ref:`Adobe | | | | | | Marketing | | | | | | Cloud | | | | - State & Action Events | | (Omniture) | Yes | Manual_ | Manual_| - User Identifiers | | ` | | | | | +----------------------+---------------+------------------+--------+----------------------------------+ | :ref:`Amplitude | Yes | Yes | Manual_| - Events | | ` | | | | - Revenue [1]_ | | | | | | - RevenueV2 [2]_ | | | | | | - User Properties | +----------------------+---------------+------------------+--------+----------------------------------+ | :ref:`Firebase | Yes | Yes | Manual_| - Events | | ` | | | | - User ID | | | | | | - User Properties | +----------------------+---------------+------------------+--------+----------------------------------+ | :ref:`Flurry | Yes | Yes | Manual_| - Events [3]_ | | ` | | | | - Gender/Age/UserId | +----------------------+---------------+------------------+--------+----------------------------------+ | :ref:`Google | Yes | Manual_ | Manual_| - Events | | Analytics | | | | | | ` | | | | | +----------------------+---------------+------------------+--------+----------------------------------+ | :ref:`Localytics | Yes | Yes | Yes | - Standard and Custom Events | | ` | | | | - customerValueIncrease [1]_ | | | | | | - Dimensions | +----------------------+---------------+------------------+--------+----------------------------------+ | :ref:`Mixpanel | Yes | Yes | Yes | - Events | | ` | | | | - Super Properties | +----------------------+---------------+------------------+--------+----------------------------------+ .. _Manual: **Manual Integration:** you can manually move the data between SDKs by: - programatically :ref:`sending Apptimize events ` and :ref:`values ` - programatically :ref:`setting Apptimize custom attributes ` - programatically :ref:`exporting participation data ` .. _integration_kits: Integration Kits ---------------- We also support using Apptimize through integration kits. These are packages that you install using CocoaPods or Maven to add support for a particular third party integration. When using an integration kit, the kit will handle import and initialization of the Apptimize SDK and will control whether the SDK should be exporting or importing data automatically from other third-party services. For example, mParticle disables all event exporting and importing within the Apptimize SDK to ensure that all data flows through mParticle and is not bypassed from the Apptimize SDK. Refer to the third-party integration kit documentation to determine exactly what the behavior of that kit is. +------------------+---------------+------------------+--------+-----------------------+ | Integration | Import Events | Import User Info | Export | Details | +==================+===============+==================+========+=======================+ | Segment.io | Yes | Yes | Yes | - Track, Screen | | | | | | - Identify | +------------------+---------------+------------------+--------+-----------------------+ | mParticle | Yes | Yes | Yes | - Log Events | | | | | | - UserAttributes | +------------------+---------------+------------------+--------+-----------------------+ - `Segment Apptimize Kit `_ - `mParticle Apptimize Kit `_ .. important:: mParticle custom attribute should only be strings The underlying mParticle events API only accepts three types of values: strings, lists, and the JSON null sentinel in the case of tags. The Android SDK provides several helper methods that let you pass in non-strings - but these values will always be converted to strings. For more information, see https://docs.mparticle.com/developers/sdk/android/users/#set-user-attributes Customer Engagement Integrations -------------------------------- .. toctree:: :hidden: third-party-integrations/airship third-party-integrations/braze Our integrations with customer engagement products allow Apptimize experiments to be coordinated with relevant messaging campaigns. These integrations send user-level data related to experiment participation to the provider which can then be used for audience targeting. +------------------------+------------------+------------------+--------+-----------------------------+ | Integration | Integration Type | Import User Info | Export | Details | +========================+==================+==================+========+=============================+ | :ref:`Airship | Opt-in | User ID Only | Yes | - Tags | | ` | | | | - Channels | | | | | | - User ID | +------------------------+------------------+------------------+--------+-----------------------------+ | :ref:`Braze | Sample Code | No | Yes | - Custom Attributes | | ` | | | | | +------------------------+------------------+------------------+--------+-----------------------------+ .. _disable_integrations: Disable Integrations -------------------- Importing and exporting integrations can be disabled at the SDK level. If the integrations have been disabled at the SDK level, data will not be sent to Apptimize, regardless of your settings on the Manage Integrations page. By default, both importing and exporting integrations are enabled at the SDK level. To turn off importing and exporting: .. tabs:: .. code-tab:: objectivec iOS (Objective-C) :caption: iOS (Objective-C) // If you're using the zero line setup (ApptimizeAppKey set in plist) // Set following Keys to false in Info.plist ApptimizeEnableThirdPartyEventExporting ApptimizeEnableThirdPartyEventImporting // If you're using the in code setup (Apptimize startApptimizeWithApplicationKey) // Add the following ApptimizeOptions to setup NSString *apptimizeAppKey = @"[YOUR_APP_KEY]"; NSDictionary *apptimizeOptions = @{ApptimizeEnableThirdPartyEventImportingOption : @NO, ApptimizeEnableThirdPartyEventExportingOption : @NO}; [Apptimize startApptimizeWithApplicationKey:apptimizeAppKey options:apptimizeOptions]; .. code-tab:: swift iOS (Swift) :caption: iOS (Swift) // If you're using the zero line setup (ApptimizeAppKey set in plist) // Set following Keys to false in Info.plist ApptimizeEnableThirdPartyEventExporting ApptimizeEnableThirdPartyEventImporting // If you're using the in code setup (Apptimize startApptimizeWithApplicationKey) // Add the following ApptimizeOptions to setup let apptimizeAppKey = "[YOUR_APP_KEY]" let apptimizeOptions = [ApptimizeEnableThirdPartyEventImportingOption : false, ApptimizeEnableThirdPartyEventExportingOption : false] Apptimize.start(withApplicationKey: apptimizeAppKey, options: apptimizeOptions) .. code-tab:: java Android (Java) :caption: Android (Java) String apptimizeAppKey = "YOUR_APP_KEY"; ApptimizeOptions apptimizeOptions = new ApptimizeOptions(); apptimizeOptions.setThirdPartyEventExportingEnabled(false); apptimizeOptions.setThirdPartyEventImportingEnabled(false); Apptimize.setup(context, apptimizeAppKey, apptimizeOptions); .. code-tab:: kotlin Android (Kotlin) :caption: Android (Kotlin) val apptimizeAppKey = "YOUR_APP_KEY" apptimizeOptions = ApptimizeOptions() apptimizeOptions.setThirdPartyEventExportingEnabled(false) apptimizeOptions.setThirdPartyEventImportingEnabled(false) Apptimize.setup(context, apptimizeAppKey, apptimizeOptions) ---- .. [1] Apptimize will import the corresponding double value included for Results calculations .. [2] Note that revenueV2 event names are tracked but the corresponding double value is not available within Apptimize .. [3] Note that if logError and logEvent are used in timing methods, they will not be automatically imported to Apptimize .. include:: _res/replace/icons.rsti