Branch統合プラン
サードパーティデータ統合によって生成されたデータは、クラスターの消費データ量に含まれますのでご注意ください
概要
インターフェースの概要
| インターフェース名 | タイプ | 粒度 | アトリビューション | コスト | 収益 | 表示 | クリック | コンバージョン |
|---|---|---|---|---|---|---|---|---|
| Webhooks | コールバック | ユーザーレベル | ✅ | ✅ |
BranchはWebhooksでユーザー粒度のデータをコールバックします。その中のチャンネルのアトリビューションなどの情報をAEのユーザープロパティに渡すことも、コールバックデータをイベントとして書き込むこともできます
Branchデータの統合を始める前に、AEシステムのユーザー識別ルールを読み、AEが#distinct_idと#account_idによってユーザーを識別する仕組みを理解しておいてください
統合の流れ
- Branch SDKとAE SDKを導入し、Branch SDKでAEシステムのゲストIDとアカウントIDを設定します
- AE管理画面にログインし、サードパーティ統合モジュールでBranch Webhookのコールバックプランを追加して、関連する設定を完了します
- Branchの管理画面でWebhooksを設定し、AEのコールバックリンクを渡します
- AEシステムがデータを正常に受信しているかを確認し、レポートを作成します
1. クライアントSDKによるデータ送信
クライアントSDKでデータを送信する場合は、まずアプリにBranch SDKとAE SDKを統合してください。次に、Branch SDKのinitialization metadataパラメータを設定する方法を使い、Branch SDKでAEシステムのユーザー識別ID(アカウントIDとゲストID)を設定します。BranchのコールバックデータにはこれらのIDフィールドが含まれるため、BranchのデータとAEのデータを関連付けることができます。
1.1 方法1(自動統合)
-
統合しているAndroid、iOS SDKについて
- SDKのバージョンが2.8.0~2.8.1の場合は、この方法をそのまま使用できます
- SDKのバージョンが2.8.2以上の場合は、サードパーティデータプラグインもインストールする必要があります。詳しくはAndroid SDKのサードパーティデータとiOS SDKのサードパーティデータを参照してください
-
統合しているUnity SDKのバージョンが2.4.0以上、Unreal SDKのバージョンが1.5.0以上の場合は、この方法をそのまま使用できます
AEのSDKの初期化はBranchのSDKの初期化より前に完了する必要があり、自動統合コードの有効化はBranchのSDKの初期化後すぐに呼び出す必要があります。次の手順に従って操作してください:
- AE SDKを初期化します。
- Branch SDKを初期化します。
enableThirdPartySharingを呼び出して、ゲストIDを自動設定します。
各プラットフォームのSDKのコードサンプルは次のとおりです:
- Android
- iOS
- Unity
- Unreal
// 1. Android SDKを初期化
TDConfig config = TDConfig.getInstance(this, APPID, TE_SERVER_URL);
TDAnalytics.init(config);
// 2. Branch SDKを初期化
// 。。。
// 3. enableThirdPartySharingインターフェースを呼び出し、ta_distinct_idをBranchイベントに設定
TDAnalytics.enableThirdPartySharing(TDThirdPartyType.BRANCH);
// 4. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
TDAnalytics.login("account_id");
TDAnalytics.enableThirdPartySharing(TDThirdPartyType.BRANCH);
// 1. iOS SDKを初期化
TDConfig *config = [[TDConfig alloc] init];
config.appid = appid;
config.serverUrl = url;
[TDAnalytics startAnalyticsWithConfig:config];
// 2. Branch SDKを初期化
// 。。。
// 3. enableThirdPartySharingインターフェースを呼び出し、ta_distinct_idをBranchイベントに設定
[TDAnalytics enableThirdPartySharing:TDThirdPartyTypeBranch];
// 4. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
[TDAnalytics login:@"account_id"];
[TDAnalytics enableThirdPartySharing:TDThirdPartyTypeBranch];
// 1. Unity SDKを初期化
TDConfig config = new TDConfig("APPID","SERVER");
TDAnalytics.Init(config);
// 2. Branch SDKを初期化
// 。。。
// 3. enableThirdPartySharingを呼び出し、ta_distinct_idをBranchイベントに設定
TDAnalytics.EnableThirdPartySharing(TDThirdPartyType.BRANCH);
// 4. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
TDAnalytics.Login("account_id");
TDAnalytics.EnableThirdPartySharing(TDThirdPartyType.BRANCH);
// 1. Unreal SDKを初期化
UTDAnalytics::Initialize();
// 2. Branch SDKを初期化
// 。。。
// 3. enableThirdPartySharingを呼び出し、ta_distinct_idをBranchイベントに設定
TArray<FString> EventTypeList;
EventTypeList.Emplace(TEXT("TAThirdPartyShareTypeBRANCH"));
UTDAnalytics::EnableThirdPartySharing(EventTypeList, AppID);
// 4. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
UTDAnalytics::Login("account_id", AppID);
TArray<FString> EventTypeList;
EventTypeList.Emplace(TEXT("TAThirdPartyShareTypeBRANCH"));
UTDAnalytics::EnableThirdPartySharing(EventTypeList, AppID);
このプランの仕組みは、内部でBranchのsetRequestMetadataメソッドを自動的に呼び出し、ta_distinct_idとta_account_idを渡すというものです。
1.2 方法2(手動統合)
手動統合の方法では、Branch SDKでsetRequestMetadata()インターフェースを使用して、AEプロジェクトのゲストIDとアカウントIDを設定する必要があります。
AE SDKの初期化はBranch SDKの初期化より前に完了する必要があります。次の手順に従って操作してください:
- AE SDKを初期化します。
- Branch SDKを初期化します。
setRequestMetadataを呼び出してゲストIDを設定します。
- Android
- iOS
- Unity
// 1. Android SDKを初期化
TDConfig config = TDConfig.getInstance(this, APPID, TE_SERVER_URL);
TDAnalytics.init(config);
// 2. AEのゲストIDを取得(AEの#distinct_idに対応)
String distinctId = TDAnalytics.getDistinctId();
// 3. Branch SDKを初期化
// 。。。
// 4. ゲストIDをBranchの収集イベントに設定
Branch.getInstance().setRequestMetadata("ta_distinct_id", distinctId);
// 5. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
String accountId = "account_id";
TDAnalytics.login(accountId);
Branch.getInstance().setRequestMetadata("ta_account_id", accountId);
// 1. iOS SDKを初期化
TDConfig *config = [[TDConfig alloc] init];
config.appid = appid;
config.serverUrl = url;
[TDAnalytics startAnalyticsWithConfig:config];
// 2. AEのゲストIDを取得(AEの#distinct_idに対応)
NSString *distinctId = [TDAnalytics getDistinctId];
// 3. Branch SDKを初期化
// 。。。
// 4. ゲストIDをBranchの収集イベントに設定
[[Branch getInstance] setRequestMetadataKey:@"ta_distinct_id" value: distinctId];
// 5. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
NSString *accountId = @"account_id";
[TDAnalytics login:accountId];
[[Branch getInstance] setRequestMetadataKey:@"ta_account_id" value: accountId];
// 1. Unity SDKを初期化
TDConfig config = new TDConfig("APPID","SERVER");
TDAnalytics.Init(config);
// 2. AEのゲストIDを取得(AEの#distinct_idに対応)
var distinctId = TDAnalytics.GetDistinctId();
// 3. Branch SDKを初期化
// 。。。
// 4. ゲストIDをBranchの収集イベントに設定
Branch.setRequestMetadata("ta_distinct_id" , distinctId);
// 5. 登録またはキャラクター作成後、loginを呼び出してアカウントIDを設定したら、再度データを同期する必要があります(任意)
var accountId = "account_id";
TDAnalytics.Login(accountId);
Branch.setRequestMetadata("ta_account_id" , accountId);
BranchのWebhookコールバックデータでは、ta_distinct_idとta_account_idがそれぞれAEシステムのゲストIDとアカウントIDに対応します。
metadataパラメータが欠けたBranchデータが発生しないよう、Branch SDKの初期化が完了したらすぐにsetRequestMetadata()を呼び出してmetadataパラメータを設定してください。それでもデータにmetadataパラメータが含まれない場合や、初期化直後にユーザー識別フィールドを取得できない場合は、Branchが提供するDelay Session Initializationメソッドでsessionの初期化を遅らせ、その間にmetadataを設定することで、すべてのデータにユーザー識別フィールドが含まれるようにできます。
2. プランの設定
SDKの設定が完了したら、次にAEシステムの管理画面にログインし、「サードパーティ統合」モジュールでBranchの設定を行います。下図はBranchの設定画面です:
2.1 ユーザー識別フィールド
Branch Webhookのデータはユーザーレベルのデータであるため、ユーザー識別ルール、つまりBranch SDKで設定したAEシステムのユーザー識別IDを設定する必要があります。AEシステムはこの設定に基づき、コールバックデータを変換する際に、これらのフィールドをデータ内のユーザー識別フィールドとして設定します。
本ドキュメントの前のステップに従ってクライアントSDKを設定した場合は、次の設定を使用してください:
- アカウントID関連フィールド:ta_account_id
- ゲストID関連フィールド:ta_distinct_id
2.2 イベントデータの格納設定
「イベントデータの格納設定」スイッチをオンにすると、Branchからコールバックされたデータはすべてイベントテーブルに書き込まれます。イベントデータの格納を有効にすることをお勧めします。
2.3 ユーザープロパティの格納設定
デフォルトでは、AEシステムはBranchのコールバックデータ内のアトリビューションフィールドを、標準化処理後のユーザープロパティに自動的に書き込みます。ユーザープロパティに書き込まれるフィールドとその意味は次のとおりです:
| Branchフィールド | AEに格納後のユーザープロパティ名 | 説明 |
|---|---|---|
| query.channel | te_ads_object.media_source | チャネル |
| query.campaign | te_ads_object.campaign_name | 広告キャンペーン |
| query.ad_set_name | te_ads_object.ad_group_name | 広告グループ |
| query.creative_name | te_ads_object.ad_name | 広告クリエイティブ |
変更が必要な場合は、「設定ルール」をクリックして、下図のような格納ルールの設定ページに移動します
ユーザープロパティの格納の方法を変更できます。デフォルトはuser_setOnceで、最初に送信された情報のみが保持されます。
ソースプロパティ名には、格納フィールド名の前にquery.プレフィックスを付けてください
「プロパティのマッピング」ボタンをクリックして、ユーザープロパティに書き込むフィールドを追加できます。また、左側の「ルール」ボタンをクリックして新しいルールを追加することもできます。
ユーザープロパティの格納を無効にしたい場合は、すべてのルールを停止します:
2.4 統合構成
統合構成モジュールでは、データ取得の詳細な設定を制御できます。たとえば、格納後のイベント名などです
統合構成の内容はJSONです。次の内容に従ってカスタム設定できます:
| モジュール | 名前 | 意味 |
|---|---|---|
| sink_event | event_mapping | 格納後のイベント名。カスタマイズ可能です。KeyはBranchのコールバックデータのイベント名、Valueはそのイベントの格納後のイベント名です |
2.5 ターミナルアドレス
システムレベルおよびプロジェクトレベルのデータ受信URLを設定している場合は、次のリンクが表示されます
ここにアドレスが表示されない場合は、右上のメニュー「プロジェクト管理 → プロジェクト設定 → プロジェクト構成」でパブリックネットワークURLを設定してください。設定ページのヒントバーにある「データアクセスアドレス」リンクから移動することもできます。このアドレスは、AE SDKで設定するデータ受信URLです。設定後、Branch Webhook設定ページの「ターミナルアドレス」に戻ってターミナルアドレスをコピーしてください。
2.5.1 カスタムマクロ
Branch WebhookのコールバックURLには、マクロと呼ばれる構造が含まれており、${(macro_name)!}の形式で表されます。マクロはプレースホルダーの一種と考えることができ、Branchがコールバックするデータにマクロに対応するフィールドが含まれる場合、そのフィールドの値がマクロの位置に埋め込まれます。${(last_attributed_touch_data.~campaign)!}を例にすると、Branchはデータをコールバックする際に、Campaignの値をコールバックURL内のマクロの位置に埋め込みます。
先ほど取得したターミナルアドレスで、以下のアドレスの先頭部分を置き換えてください。置き換えたコールバックURLはコピーしておいてください。後でBranchの管理画面でこのアドレスを入力する必要があります:
https://{ターミナルアドレス}?branch_id=${(id)!}&campaign=${(last_attributed_touch_data.~campaign)!}&campaign_id=${(last_attributed_touch_data.~campaign_id)!}&campaign_type=${(last_attributed_touch_data.~campaign_type)!}&customer_campaign=${(last_attributed_touch_data.~customer_campaign)!}&channel=${(last_attributed_touch_data.~channel)!}&feature=${(last_attributed_touch_data.~feature)!}&stage=${(last_attributed_touch_data.~stage)!}&tags=${(last_attributed_touch_data.~tags)!}&advertising_partner_name=${(last_attributed_touch_data.~advertising_partner_name)!}&advertising_partner_id=${(last_attributed_touch_data.~advertising_partner_id)!}&secondary_publisher=${(last_attributed_touch_data.~secondary_publisher)!}&secondary_publisher_id=${(last_attributed_touch_data.~secondary_publisher_id)!}&customer_secondary_publisher=${(last_attributed_touch_data.~customer_secondary_publisher)!}&creative_name=${(last_attributed_touch_data.~creative_name)!}&creative_id=${(last_attributed_touch_data.~creative_id)!}&ad_set_name=${(last_attributed_touch_data.~ad_set_name)!}&ad_set_id=${(last_attributed_touch_data.~ad_set_id)!}&customer_ad_set_name=${(last_attributed_touch_data.~customer_ad_set_name)!}&ad_name=${(last_attributed_touch_data.~ad_name)!}&ad_id=${(last_attributed_touch_data.~ad_id)!}&customer_ad_name=${(last_attributed_touch_data.~customer_ad_name)!}&keyword=${(last_attributed_touch_data.~keyword)!}&keyword_id=${(last_attributed_touch_data.~keyword_id)!}&customer_keyword=${(last_attributed_touch_data.~customer_keyword)!}&branch_ad_format=${(last_attributed_touch_data.~branch_ad_format)!}&technology_partner=${(last_attributed_touch_data.~technology_partner)!}&banner_dimensions=${(last_attributed_touch_data.~banner_dimensions)!}&placement=${(last_attributed_touch_data.~placement)!}&placement_id=${(last_attributed_touch_data.~placement_id)!}&customer_placement=${(last_attributed_touch_data.~customer_placement)!}&sub_site_name=${(last_attributed_touch_data.~sub_site_name)!}&customer_sub_site_name=${(last_attributed_touch_data.~customer_sub_site_name)!}&agency=${(last_attributed_touch_data.~agency)!}&agency_id=${(last_attributed_touch_data.~agency_id)!}&ta_distinct_id=${(custom_data.ta_distinct_id)!}&ta_account_id=${(custom_data.ta_account_id)!}
2.6 プランの保存
設定が完了したら、右上の保存ボタンをクリックしてプランを保存してください。
3. Branch Webhookコールバックの設定
プランを保存したら、Branchの管理画面にログインし、「Data Feeds」ページの「WEBHOOKS」タブで新しいWebhookを追加します:
Webhookのリンクと詳細を設定します。上から下、左から右に、合計3つの項目を入力する必要があります:
- 「Send a webhook to」:AE管理画面で取得したターミナルアドレスに必要なカスタムマクロを加えて、ここに入力します
- 「using a ...」:POSTメソッドを選択します
- 「every time users trigger the event ...」:クライアントSDKでデータを送信する場合は、INSTALLイベントを選択できます
「Save Rule」をクリックしてルールを保存すると、Branchのコールバック設定は完了です
iOS 14.5以降のinstall(アクティベーション)イベントについて:
アクティベーションが有料広告にアトリビューションされた場合、ユーザーがATTでopt-inを選択した後に、2回目のinstall(アクティベーション)イベントがトリガーされます
opt-inの選択は、最終的なアクティベーション数の集計に影響します。異なる識別子(IDFVなど)を使用して、社内システム上で重複したアクティベーションイベントを削除することをお勧めします(AEシステム内の二次開発ツールで行えます)。
4. データの格納
4.1 イベントの格納ルール
-
データ内のevent_timestampフィールドを、イベントの#event_timeとして使用します
-
データのイベント名には統合構成のsink_event.event_mappingを使用します。デフォルトは次のとおりです:
- インストール:branch_install
- sink_event.event_mappingに記述されていないその他のイベント:nameフィールドの前に
branch_プレフィックスを付けます
-
その他、コールバックURL内のマクロに対応するプロパティはすべて格納されます
本ドキュメントで提供しているコールバックURLを使用した場合に、Branchがコールバックするプロパティの一覧は次のとおりです:
| 格納名 | 意味 |
|---|---|
| name | Branchのイベント名 |
| event_timestamp | データ時間 |
| campaign | アトリビューションされたCampaign名 |
| campaign_id | アトリビューションされたCampaign ID |
| campaign_type | アトリビューションされたCampaignのタイプ(Google AAPのアトリビューションから取得) |
| customer_campaign | カスタムのアトリビューションCampaign名 |
| channel | アトリビューションされたChannel名 |
| feature | アトリビューションされたFeature。値の例:"paid advertising" |
| stage | Stage |
| tags | アトリビューションのタグ |
| advertising_partner_name | 読みやすい形式のAdvertising Partner名 |
| advertising_partner_id | Advertising Partner ID |
| secondary_publisher | Secondary Publisher名 |
| secondary_publisher_id | Secondary Publisher ID |
| customer_secondary_publisher | カスタムのSecondary Publisher ID |
| creative_name | アトリビューションされたCreative名 |
| creative_id | アトリビューションされたCreative ID |
| ad_set_name | アトリビューションされたAd Set名 |
| ad_set_id | アトリビューションされたAd Set ID |
| customer_ad_set_name | カスタムのAd Set名 |
| ad_name | アトリビューションされたAd名 |
| ad_id | アトリビューションされたAd ID |
| customer_ad_name | カスタムのAd名 |
| keyword | アトリビューションされたKeyword |
| keyword_id | アトリビューションされたKeyword ID |
| customer_keyword | カスタムのKeyword |
| branch_ad_format | 広告タイプ。値の例:Search, Display, Product Ad, App only |
| technology_partner | サードパーティのTechnology Partner |
| banner_dimensions | Bannerのサイズ |
| placement | アトリビューションされたPlacement |
| placement_id | アトリビューションされたPlacement ID |
| customer_placement | カスタムのPlacement |
| sub_site_name | Sub Site名 |
| customer_sub_site_name | カスタムのSub Site名 |
| agency | Agency名 |
| agency_id | Agency ID |
| ta_distinct_id | AEシステムのゲストID |
| ta_account_id | AEシステムのアカウントID |
4.2 標準化フィールド
Branch Webhookのコールバックデータレポートの一部のフィールドは、AEシステムによって標準化処理されます
| 元フィールド | 標準化フィールド | 意味 |
|---|---|---|
| campaign | te_ads_object.campaign_name | 広告キャンペーン名 |
| campaign_id | te_ads_object.campaign_id | 広告キャンペーンID |
| ad_set_name | te_ads_object.ad_group_name | 広告グループ名、マネタイズ広告のUnit名 |
| ad_set_id | te_ads_object.ad_group_id | 広告グループID、マネタイズ広告のUnit ID |
| ad_name | te_ads_object.ad_name | 広告名 |
| ad_id | te_ads_object.ad_id | 広告ID |
| placement | te_ads_object.placement | 広告の配置 |
| channel | te_ads_object.media_source | メディアチャンネル |

