この連携は、すでにAppsFlyerをご利用のお客様が対象になります。

連携をご希望の際は、アプリストアからご利用ください。

なお、下記事項に同意の上インストールをお願いします。

- 連携するデータについては、テンプレート上でカスタマイズが可能です。
- エンドユーザーの個人情報を含むデータを連携する場合には、お客さまにて自社のポリシー等に準拠するかどうかのご判断をお願いいたします。
- 連携データを後からKARTE側で削除することはできないため、個人情報を含むデータの連携にはご注意ください。

またリージョン固定プランで外部サービス連携を行う場合には、以下をご留意ください。
- KARTEと連携して利用する外部サービスについては、データの処理・保管場所を国内に限定することを弊社で保証することはできません。
- 外部サービスがお客様のポリシーに準拠しているかどうかは、お客さまにて判断してご利用いただくようお願い致します。

連携概要

KARTEとAppsFlyerを連携させることにより、KARTEとAppsFlyerで相互にデータ連携をすることが可能です。
AppsFlyer → KARTEへのデータ連携により、アプリへの流入元データに応じて、アプリ起動後の接客をパーソナライズしたり、KARTE → AppsFlyerへのデータ連携により、プッシュ通知やアプリ内メッセージへの反応を含む、より細かなアプリ内の行動データをAppsFlyerの管理画面でレポートとしてみることができるほか、広告配信リスト作成の条件としてご利用いただくことも可能です。

AppsFlyer → KARTEへの連携

できること

  • AppsFlyerで発生したイベント(以降、AppsFlyerイベント)には、インストール/アプリ起動時の流入元の情報が付与されています。これらの情報を使ってセグメントを定義することで、起動前と起動後のコミュニケーションの両方を顧客軸で最適化することができます。
  • KARTE上のユーザー(メンバー / ビジター両方)に対して、 AppsFlyerイベントを紐付けることができます。
  • AppsFlyerイベントを使ったセグメントの作成、接客サービスの配信トリガーの設定が可能になります。

想定される利用シナリオ

  • アプリインストール / アプリの起動のきっかけとなった流入元(Webサイト内の導線や広告キャンペーン等)に応じて、アプリ起動時に表示するアプリ内メッセージを出し分ける
  • アプリインストール / アプリの起動のきっかけとなった流入元(Webサイト内の導線や広告キャンペーン等)に応じて、それ以降に送信するプッシュ通知の内容をパーソナライズする

【注意】
現在(2023年5月29日時点)、iOS 14.5以降を利用のユーザーについてはATT同意された場合限り、Android 12以降を利用のユーザーについては広告のカスタマイズをオプトアウトされていない場合に限り確定的なアトリビューションが取得可能となります。ご注意下さい。

KARTE → AppsFlyerへの連携

できること

  • KARTEで計測しているウェブまたはアプリでのユーザー行動を、Webhookテンプレートを使ってリアルタイムにAppsFlyerに連携します(後述)
  • 連携されたデータは、AppsFlyerのダッシュボード上でレポートとして見ることができ、また広告配信リストの条件として指定することも可能です。
  • 連携には、KARTEのカスタムイベント(任意名称で構いません)を通じて、appsflyer_device_idをKARTEにお送り頂く必要がございます。appsflyer_device_id の取得方法については、サーバー間 (S2S) イベントAPI for モバイルを参照してアプリに実装ください

想定される利用シナリオ

  • KARTEで計測している、ウェブ/アプリの行動データをリアルタイムにAppsflyerに連携し、広告配信リスト作成の条件として利用する

AppsFlyer → KARTEへの連携に必要な準備、実装

すでに、KARTE for App および AppsFlyer のセットアップは完了していることを前提とします。

AppsFlyer ダッシュボードでの事前準備

  1. 設定>連携済みパートナー>「KARTE」で検索
  2. インテグレーション設定で、KARTEのプロジェクトの「api_key」を入力
  3. Default Postbacks>オプション送信を「Off」にします。(「All media sources, including organic」に設定した場合でもKARTEへのデフォルトポストバックは発生しません。)
  4. In-App Events Settingで、KARTEのプロジェクトの「api_key」を入力
  5. In-App Events PostbackをONにする
  6. KARTEに連携するイベントを指定する

nullIn-App Events Postback で、KARTEに連携するイベントを指定可能です。やりたいシナリオで必要なイベントのみをホワイトリストで指定してください。(KARTEにIn-Appイベントを連携するには、Appsflyer側での指定とあわせ、後述するKARTE側でも受信するIn-Appイベントの指定が必要となります。)

KARTE 管理画面での事前準備

AppsFlyer連携の有効化設定をプレイド側で行います。

KARTE プラグイン設定画面にて 連携するIn-App Eventの指定

Appsflyer側のIn-Appイベントの連携が必要な場合に限り、本手順で KARTEに連携するIn-App Eventの指定を行います。

  • KARTEログイン後、左カラムメニューの「インサイト > ストア > アプリ設定 > Appsflyer」を選択します
  • Appsflyerに関する詳細設定を開きます
  • プロジェクト別設定にて、連携するIn-Appイベントをカンマで指定し設定下さい

null

ネイティブアプリでの実装

AppsFlyer SDKで取得可能な、流入経路情報をKARTE SDKを使って送信する必要があります。

以下にサンプルコードを記載します。

iOSの場合
• インストールイベント

import KarteCore
import AppsFlyerLib

class AppDelegate: UIResponder, UIApplicationDelegate {
  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    KarteApp.setup()

    // AppsFlyer SDK の最新の初期化実装に関しては公式ドキュメントも併せてご覧ください
    // see: https://dev.appsflyer.com/hc/docs/integrate-ios-sdk
    AppsFlyerLib.shared().appsFlyerDevKey = "<AF_DEV_KEY>"
    AppsFlyerLib.shared().appleAppID = "<APPLE_APP_ID>"
    AppsFlyerLib.shared().delegate = self
    AppsFlyerLib.shared().start()
    return true
  }
}

extension AppDelegate: AppsFlyerTrackerDelegate {
  func onConversionDataSuccess(_ conversionInfo: [AnyHashable : Any]) {
    let isFirstLaunch = (conversionInfo["is_first_launch"] as? Bool) ?? false
    if (isFirstLaunch) {
      Tracker.track("_appsflyer_install", values: conversionInfo as! [String: JSONConvertible])
    }
  }

  func onConversionDataFail(_ error: Error) {
  }
}

• In-App イベント

AppsFlyerLib.shared().logEvent("EVENT_NAME", withValues: ["visitor_id": KarteApp.visitorId])

Androidの場合
• インストールイベント

import android.app.Application
import com.appsflyer.AppsFlyerConversionListener
import com.appsflyer.AppsFlyerLib
import io.karte.android.KarteApp
import io.karte.android.tracking.Tracker

class MainApplication: Application() {
  override fun onCreate() {
    super.onCreate()

    KarteApp.setup(this)

    // AppsFlyer SDK の最新の初期化実装に関しては公式ドキュメントも併せてご覧ください
    // see: https://dev.appsflyer.com/hc/docs/integrate-android-sdk
    AppsFlyerLib.getInstance().init("<AF_DEV_KEY>", object: AppsFlyerConversionListener {
      override fun onConversionDataSuccess(map: MutableMap<String, Any>?) {
        val isFirstLaunch = map?.get("is_first_launch") as? Boolean ?: false
        if (isFirstLaunch) {
          Tracker.track("_appsflyer_install", map)
        }
      }

      override fun onConversionDataFail(p0: String?) {
      }

      override fun onAppOpenAttribution(p0: MutableMap<String, String>?) {
      }

      override fun onAttributionFailure(p0: String?) {
      }
    }, this)
    AppsFlyerLib.getInstance().start(this)
  }
}

• In-App イベント

AppsFlyerLib.getInstance().logEvent(context, "EVENT_NAME", mapOf("visitor_id" to KarteApp.visitorId))

以上で、初期に必要な設定は完了です。

KARTE → AppsFlyerのイベント連携の設定方法

KARTEで計測しているウェブまたはアプリでのユーザー行動をリアルタイムにAppsFlyerに連携するための設定方法について紹介します。

2023年10月以前は、「Webhook」タイプの接客アクションを利用した方式を採用していました。2023年10月以降、「Webhook」タイプの接客アクションは新規提供を停止しています。新規に利用開始される場合は、ここで紹介するKARTE Craftを利用した連携方式をご利用ください。

ユーザー情報変数の作成

次のユーザー情報変数を作成します。

変数名 設定
appsflyer_device_id すべての期間 xxx appsflyer_device_id の 最新の値

※ appsflyer_device_idを取得しているKARTEのイベント名やフィールド名を指定してください
※ その他、AppsFlyerに連携したいユーザーデータがある場合は、対応するユーザー情報変数を追加してください

dataの設定方法

Webhook用Craft Functions連携接客サービスでは、アクション編集画面のdataを次のように設定します。

APP_IDDEV_KEYには、AppsFlyer側で取得した値を指定してください
eventNameeventValueの値には、AppsFlyer側のイベント名と連携したい値を任意に設定してください

{
    "url": "https://api2.appsflyer.com/inappevent/APP_ID",
    "hookData": {
        "appsflyer_id": "#{appsflyer_device_id}",
        "eventName": "your_event",
        "eventValue": "{\"your_custom_attribute\": \"456.123\"}",
        "af_events_api": "true"
    },
    "method": "POST",
    "headers": {
        "Content-Type": "application/json; charset=UTF-8",
        "authentication": "DEV_KEY"
    },
    "campaignId": "#{campaign_id}"
}

AppsFlyerイベント KARTEイベントの対応

イベント名とパラメータの対応表

AppsFlyerプラグインによって KARTE に連携される AppsFlyer イベントと、KARTEで発生するイベント名 および パラメータの対応表を以下に記載します。

AppsFlyerイベント KARTEイベント 備考
install _appsflyer_install iOS 14.5以降ではATT同意ユーザーに限り、アトリビューション情報が取得可能です。(パラメータ詳細は※別紙を参照)また、onConversionDataSuccessなどをフックしてSDKからインストールイベントを送る方式のみのご提供となり、AppsFlyerからKARTEへのデフォルトのinstallポストバックは行われません。
In-app event _appsflyer_{event_name} ※別紙記載のパラメータ + AppsFlyer SDK でイベント送信時に設定した Event Value
・{event_name} には AppsFlyer ダッシュボードで設定したKARTEに送信するイベント名が入ります
・In-app Event の種類に応じて異なる {event_name} が入ります。

※ 別紙: KARTE に送信される AppsFlyer イベントのパラメータ一覧

パラメータについての補足

AppsFlyer イベントで定義されている一部のパラメータは、 KARTE イベントでは異なる名前で連携されます。(KARTE 上で日付型のパラメータとして利用できるようにするため)

AppsFlyer イベント KARTEイベント
click_ts click_date
install_unix_ts install_unix_date
timestamp timestamp_date

注意点

広告ID(IDFA/AAID)の連携について

Appsfyer連携で、広告ID(IDFA/AAID)はKARTEに連携されません。広告IDをKARTEに連携したい場合には、広告ID(IDFA/AAID)の送信について をご確認ください。

iOS 14.5以降のユーザーのデータについて

AppsFlyerとKARTEの連携に際しては、IDFAを用いておりませんが、AppsFlyerでのインストール経路判定の際、iOS 14の端末ではIDFAが収集できないケースが増え、probabilistic(確率的)計測による経路判定のデータの増加が見込まれます。その場合、IDFAによる手法と比較すると精度が落ちるため、その精度低下を踏まえた施策のご検討をお願い致します。
また、IDFAの取得に同意した場合、しなかった場合で付与される情報が異なります。詳細は、iOS14 advanced privacy postback guide for ad networksをご参考ください。

AppsFlyerの高プライバシー一括設定のフレームワーク

AppsFlyerには、エンドユーザーのトラッキングへの同意状況に基づき、データをサードパーティに共有するかどうかをコントロールする「高プライバシー一括設定のフレームワーク」が存在します。デフォルトでは、『高プライバシー一括設定(AAP)』がONとなっており、ユーザーのATT同意に限り、該当データがKARTEに連携される仕様です。
ATTに同意しないユーザーに関するデータをKARTEに連携する際には、以下の2つの手順をご確認下さいませ

(1)AppsFlyer管理画面の設定>アプリ設定ページの高プライバシー一括設定(AAPセントラルスイッチ)をオフに切替え、保存します
(2)設定>連携済みパートナーでKARTEを選択ののち、連携タブにて高プライバシーポストバックをオフにします

なお、ATT非同意ユーザーについては、IDFAを収集する設定にした際も、KARTEへの送信データには含まれませんのでご留意下さい。

※ 最新の仕様については、AppsFlyerのドキュメントをご参照下さい。

Googleのキャンペーンタイプの名称変更に伴う注意

  • 2021年2月16日(予定)より、Google広告のキャンペーンに関するAppsFlyerの仕様変更に伴い、関連するフィールドについて、パラメータ値が変更される見込みです。
  • 変更されるのは、フィールド名 af_channel となります。変更内容の詳細は、AppsFlyerのGoogle広告のパラメーターマッピングを参照下さい
  • イベント画面などにて、上記フィールドのパラメータのご確認を頂いたのち、適時 セグメント設定などの変更をお願い致します。