adjustは業界最高水準の柔軟性を備えたアプリ内トラッキングを提供しています。アプリ内イベントをいくつでも好きなだけ定義、追跡でき、ニーズに沿ったイベント追跡設定が可能です。

しかし、パワフルなツールの使用には責任が伴います。アプリ開発やマーケティングを賢明に行うには、アプリ内イベントのトラッキングがアプリ・用途・ワークフローに適したものとなるよう、事前に入念な計画を立てたうえで実施する必要があります。

コードはプラットフォーム、フレームワークや実装方法によって変わるため、本ガイドでは方法や手順を中心に解説し、コードは例示していません。adjust SDKの詳細説明はGitHubの各readmeを参照してください。

「adjust入門」をお読みでない場合は、まずそちらをお読みいただくことを推奨します。このガイドは、読者がダッシュボードでのイベント設定について十分に理解していることを前提に書かれています。

1用語集

  • アプリ内イベント
    アプリでユーザーが発生させる一切のイベント。
  • 売上イベント
    関連付けられた売り上げ値と共に追跡される、一切のアプリ内イベント。
  • CPA (cost-per-action)
    一般用語。広告の価格設定を、購買を行ったユーザーが発生させたアプリ内イベント数に基づき行うこと。
  • コンバージョンチェーン
    ユーザーがアプリ内で発生させる、クリック、インストール、購入と連続する様々なコンバージョンイベント。
  • コールバック
    サーバーからサーバーへとデータを転送するために行われるHTTPリクエスト。
  • API
    データを送るためのインターフェース。

2イベントトラッキングを通じたコンバージョンの把握

イベントトラッキングの仕方によって、どの指標を重視し、どの様にコンバージョンチェーンを築き上げていくかが決まります。ユーザーがアプリを使用するにつれて、登録、実績の解除、コンテンツ解放、購入を行うことで、アプリの使用度合いに関する様々なデータが蓄積されていきます。

これらのコンバージョンポイントと呼ばれるユーザー行動には、広告の成果が端的に表されています。数多くのコンバージョンポイントに到達するユーザー、さらに言えばユーザーにより多くのコンバージョンを促す広告ソースは、登録したまま利用のないユーザーよりも上質であると言えます。一方で、利用度は高くてもコンバージョンを行わない、つまり長時間のセッションを多数発生させながら開発者の狙った行動を起こさないユーザーは、質が高いとは言えません。

口コミとアプリ内購入を軸としたモバイルゲームのマーケティングを行っていれば、ここまでに挙げたイベントの多くが「実用的」に思えることでしょう。adjustでは、トラッキングできるイベント数に上限はありません。アプリ内イベントの設定はコストをかけずに、柔軟に行うことができます。

売れ行きの良い商品やコンテンツの販売を意識すると、究極の成果である「購入」ばかりに気を取られがちになりますが、その前後の過程もまた重要です。カートへ商品を追加し始めたユーザー数をトラッキングすれば往々として、次の仕掛けやオファーをどの媒体で行えばコンバージョンに持ち込めるのかを知る手がかりとなります。また、購入後のレビューから、最も満足度の高いユーザーや再度アプリを使用したいと考えているユーザーを知ることもできます。

ゲームでは、あるレベルの実績やスター獲得数をすべてトラッキングしていると、すぐに収拾がつかなくなることがあります。その代わり、特定の重要な実績のみに絞ったトラッキングが多くの場合推奨されます。例えば、プレーヤーがゲームを気に入ったことを表すことの多い、冒頭3ステージのクリア実績や、やりこみ度の高い実績のうちの最初のものをトラッキングするのです。

口コミとアプリ内購入によるマネタイズを柱としたモバイルゲームのマーケティングを行っていれば、ここまでに挙げたイベントの多くが「使えそう」に思えることでしょう。adjustでは、トラッキングできるイベント数に上限はありません。アプリ内イベントの設定はコストをかけずに、非常に柔軟行うことができます。

しかしデータ分析を行っていると、ある時点で、あるポイントを重点的に分析することが必要となってきます。評価要因が多すぎると、様々なユーザーが様々な視点から高評価を受けてしまい、すべてのソースやユーザーが優れているという結論が導かれてしまいます。このような結論は聞こえは良くても、最適化にはつながりません。

最適化を行うには、有用に見えて決定的ではない数字を数多く追求するよりも、目標を捉えた数字を1つか2つ分析する方が得策です。そうすれば、マーケティングへの投資が生み出した成果を、一目で把握できるようになります。

3イベントを活用した機能分析

アプリ内イベントの柔軟なトラッキングは、マーケティングへの応用だけでなく、アプリのどの機能をユーザーが重視しているのかを見極めるためにも活用できます。マッピング機能を使用しているのか、それとも顔文字はあまり使わないのか、設定を大きく変えているか、デフォルトのままか、特徴となる機能を漏れなく使用しているかどうか等、このようなユーザー動向を簡単に的確に捉えることができます。

アプリの機能分析に有意義な指標を見つけるには、アプリ内の様々な要素の使用実態をどうすれば比較できるのかを考えることが大切です。インストール後間もなくあるボタンがクリックされていれば、その機能はユーザーの求めていたものだったと考えられますが、もしかしたらボタンの色が派手だっただけなのかもしれません。

ユーザーがただ何となく操作しているのではなく、機能を求めて使用している状況について考えてみてください。ユーザーはアプリに何かを求めており、その何かを実行する瞬間が存在します。もし、ユーザーが他の機能よりも高い満足度を示す機能が見つかれば、それが今後の開発のヒントとなります。

例えば、スマートフォンのストレージとFacebookのどちらからでも写真をアップロードできるアプリがあったとします。この場合、各アップロードボタンのクリック数をトラッキングするよりも、画像のアップロード後にどのようなイベントが発生したかを確認することで、各オプションの満足度や完了率を測定すべきでしょう。

4CPA型広告によるトラフィック獲得 で使用する共通イベント

トラフィックの獲得手段をCPA(アクション単価)型広告に切り替えると、ターゲット層や最適化範囲を、アプリ内の特定の目標に応じたものに絞り込むことができ、コンバージョン率の向上や、ビジネスリスクの軽減につながります。そのためには、トラフィック獲得を支えてくれるパートナー企業が十分に信頼して活用できる強力なイベントトラッキングが必要です。

通常、CPA型のトラフィック獲得広告は、登録や購入などの一部の主要なコンバージョンイベントをベースに単価が決まります。これらのイベントは通常、明確に定義されており、ユーザーのアプリの使用状況を迅速に把握することが可能です。

コンバージョンチェーンの下流のイベントを目標成果として設定したいと考えることは少なくありません。しかし、購入、口コミ発信といった下流側のコンバージョンデータは、即応的に最適化を行う上では数が少なく、時期的にも遅すぎます。最適化の対象の選定についてのフィードバックの規模が小さすぎると、統計的に正しい答えが得られるとは考えにくくなります。また、最適化を行ってから1~2週間が経過してやっとコンバージョンが発生するような場合も、フィードバックの提供速度が不十分だといえます。

そのため、当社のクライアントの多くはコンバージョンチェーンの上流側に位置するイベントを用いたり、他のイベントで代用したりしています。例えば、購入イベントをカートへの追加イベントで代用することができます。カートへの追加は購入よりも頻繁に発生するため、カートへの追加イベントを頻発させる広告は一般的に、収益性の高いユーザーの流入源でもあります。意思決定を行うためには、迅速かつ十分な量のフィードバックが求められるのです。

5購入と売り上げのトラッキング

売上のトラッキングは、アプリ内購入によりマネタイズを行うアプリのトラッキングにおいて中心的な役割を果たします。adjustはビジネスモデルに直接対応できる、柔軟で、簡素な売上トラッキングを提供します。

購入は trackEvent メソッドに売上パラメータを追加することでトラッキングできます。購入イベントには、それぞれ個別のイベントトークンを作成することを推奨します。普通は購入イベントは一種類のみで十分ですが、異なるタイプの購入イベントについて個別にイベントトークンを作成することももちろん可能です。しかし上のベストプラクティスのセクションで説明したように、使用するイベントの種類を増やし過ぎることはお勧めできません。それより、各事例で最も適切なイベントに絞ったほうが良い結果につながります。

売上にはどのようなイベントも結び付けることができますが、通常推奨されるのは、購入時にのみ起動する専用の購入イベントを作成することです。

また、購入金額そのものに加えて通貨もソースに記述する必要があります。詳細は、次のセクション異なる通貨による購入のトラッキングを参照してください。

全体の書式については、各SDKのreadmeを参照してください。

5.1重複する購入イベントの整理

一般的に購入処理は、支払の処理やユーザーによる実際の入金の管理を担当する個別のシステム上で行われています。iOSではこのような処理は多くの場合、Store Kitフレームワークによって行われます。AndroidではGoogle PlayストアやPaypalなどのサードパーティにひも付けられた既存機能を活用します。

adjustのトラッキングでは普通、これらのライブラリから送られるコールバックや確認イベントを拾っています。ただし、ライブラリによって確認情報が送出される方法も考慮しなければなりません。例えばStore Kitフレームワークはしばしば、一回の購入に対して一つの取引IDにひも付けられた複数のレシートを送信します。この処理は、購入された商品の配信を確実に行うためのものですが、トラッキングには適していません。 重複したレシートにトラッキングをつけると、トラッキングも重複して生成していまい、レポートに誤差が生じてしまいます。Store KitのトランザクションIDをiOS SDKに送信すれば、イベントをトラッキングする前にSDK内でローカルで複製できます。詳しくは最新のreadmeをご確認ください。

このように重複したレシートに基づいてトラッキングを行ってしまうと、過剰な数値が報告されてしまいます。幸い、Store Kitの取引IDをiOS用SDKに引渡せば、イベントをトラッキングする前にローカルで重複情報を整理することができます。この詳細については、最新版のreadmeを参照してください。

6ユニークイベントのフラグ付け

SDKの統合と分析を容易にするために、特定のイベントを一度しかトラックされないように設定できます。ユニークとして設定されたイベントはデータベースからスキップされ、SDKは特定のユーザーに対してそのイベントを一度以上登録します。

ユニークイベントは、SDKがローカルである動作の前後関係を完全に把握できていない場合に特に便利です。例えば、あるメソッドではアプリはログインと新規登録の違いを認識していないかもしれません。どちらも結局はログインしたユーザーとして認識するからです。この場合、「登録」と「ログイン」の両方にトリガーをつけ、「登録」にのみユニークのフラグをつけます。

注意: この機能は慎重にご使用されることをお勧めします。** SDKから送信されるイベントをスキップすることは、正しい値との相違が生じる原因になり得ます。上述の例では、ユーザーが新しいアカウントを作成して二度目の新規登録をしたらどうなるでしょう?可能であれば、前後関係の把握できる状態で非ユニークイベントとしてトラックすることを優先してください。アプリがローカルで失っているデータがあれば、いつでもサーバー間イベントを使うことができます。

7固有イベントの指定

SDKの実装とデータ分析を簡略化するため、特定のイベントについてトラッキングを一回のみ行うよう指定することができます。ユニークイベントの設定を行うと、あるユーザーのユニークイベントがSDKにより重複登録されても、2回目以降はデータベースから削除されます。

この設定を行うには、イベント画面で一覧表示されているイベントの隣の「編集」をクリックし、「詳細設定」をから表示されるスライダーをONにドラッグします。

ユニークイベント設定は、SDKにアクションの文脈をすべてローカルでは伝えられない場合に便利です。例えばログインと新規登録では、最終的にいずれもユーザーがログイン済みになるため、ある種のメソッドを使っているアプリではこれらを区別できないことがあります。この場合は「新規登録」と「ログイン」イベントの両方を追跡し、前者を個別イベントに指定してください。

注意:この機能は慎重に使うことをお勧めします。SDKから送られるイベントを破棄すると、正しい値から誤差を生じてしまうことがあります。もしも上の例で、ユーザーがアカウントの新規作成のために2回サインアップするとどうなってしまうでしょうか。できるだけ個別イベント設定は使わず、文脈に応じた条件をイベントに設定して追跡するようにしてください。また、ローカルでアプリ情報の一部を取得できなくても、サーバー間イベントはいつでも利用可能です。

8様々な通貨での購入のトラッキング

顧客層が海外に広がっていると、様々な通貨で取引された購入を処理することがあります。トラッキングや分析を行うには、複数のソースにまたがって発生する売上を集計する仕組みについて知っておく必要があります。

adjustでは為替計算機能を提供しており、SDKを介して複数の通貨ベースの売上イベント情報を送信することができます。adjustはデータを受信すると、お客様の希望するレポート通貨へ自動的に換算します。

  1. 購入が発生すると、換算前の購入額とオリジナル通貨がadjustに送信されます。
  2. adjustはこの金額を基本通貨である米ドル建ての金額に換算します。
  3. ダッシュボード、レポートおよびその他の報告で使用されるレポート通貨をダッシュボードで選択できます。レポート通貨設定はアプリのセットアップ時に行い、設定は永続します。

ダッシュボードとレポートではレポート通貨を使用しますが、コールバックでは基本通貨やオリジナル通貨での金額も受け取ることができます。ネットワークパートナーでも同様に希望する売上/通貨を選択できます。この機能で使用するすべてのプレースホルダをプレースホルダのリストのページで紹介しています。

現在対応しているオリジナル通貨(SDKから送ることのできるもの)の一覧はこちらにまとめています。受信した通貨を選択されたレポート通貨に変換するため、adjustではopenexchangerates.org APIを使用しています。

8.1為替計算の設定手順

アプリの作成時に、レポート通貨は選択されています。いったん選択すると、レポート通貨は変更できません。SDKはadjustのサーバーに送信される一切の通貨を処理することができ、サーバーでは受信した通貨をダッシュボードのレポート通貨に換算します。

  • アプリをadjustに設定する際に、レポート通貨を選択します。
  • 売上イベントで用いられたローカルの通貨を送信するよう、SDKを設定します。
  • adjustは受信した通貨を、選択されたレポート通貨に換算します。

9参考:サーバーサイドのイベントトラッキング

場合によっては、サーバーサイドで実行されるイベントをアプリが完全に把握できないことがあります。その場合、アプリは状態が変化した経緯ではなく変化後の状態のみを把握していたり、購入や新規登録の処理がサーバーサイドで完了していたりします。このような事例に対応するため、adjustはサーバー間APIを提供しており、ポストコールバックを通じてイベントや売上をpingコマンドでアプリのサーバーから送信することができます。

サーバー間イベントを発生させるには、対象デバイスの広告識別子(IDFA)と、サーバー間イベントが発生した時点でのローカルのタイムスタンプをサーバーが取得する必要があります。また、正しいアプリトークンとイベントトークンの引き渡しも必要です。

S2Sイベントは、ユーザーのリクエストをお持ちのサーバーで受信するのと同時にadjustのサーバーに送信する必要があります。未だ計測されていないユーザーに関してこのインターフェースは動作しません。

エンドポイントには、イベント用と売上用の2種類があります。

http://s2s.adjust.com/revenue  (売上イベント)
http://s2s.adjust.com/event    (売上イベント以外のイベント)

これらのエンドポイントに対する、ポストリクエストでの必須パラメータは以下の通りです。

パラメータ名 内容
app_token 4w565xzmb54d ダッシュボードで取得できるadjustのアプリ トークン
event_token f0ob4r ダッシュボードで取得できるadjustのイベントトークン
s2s 1 必ず1に設定
created_at 2006-01-02T15:04:05Z-0700 タイムゾーンを含むデバイスのローカル時間
device_id See Below Device Identifyer(s)
iOSとAndroidのS2SイベントへのデバイスID送信

Android端末にS2Sイベントを送信する場合、Google Playストア広告主ID(gps_adid)の送信は必須で、加えてAndroid ID(android_id)も送信することを推奨します。

iOSのS2Sイベントについては、Google、Twitter、FacebookなどのトラッキングパートナーではIDFAの送信は必須です。さらに、IDFAに加えてIDFVの送信も推奨されています。追跡型広告を制限(Limit Ad Tracking)」の設定のためIDFAが利用できない場合は、IDFVが受理されます。
これらの情報を送信すると、イベントはインストールに正しくアトリビュートされ、データが一貫して分かりやすく表示されます。

その他のデバイスID

iOSとAndroidでidfagps_adidがそれぞれ必須ですが、Adjustがサポートしている他の様々なプラットフォーム向けに、以下に挙げるデバイスIDを追加で送信することもできます。

パラメータ 内容 形式
adid 44ae297a759365ca4f8828a616764579 AdjustID  
idfa D2CADB5F-410F-4963-AC0C-2A78534BDF1E 広告主用のiOS ID ”-“含む
idfv EF76726C-D952-451C-8E1A-4E86938BDC20 ベンダー用のiOS ID ”-“含む
mac 15118fdce61d デバイスのMACアドレス(Androidのみ) 短い形式、”:”なし
mac_md5 e3f5536a141811db40efd6400f1d0a4e MACアドレスのMD5(Androidのみ) 大文字、”:”なし
mac_sha1 c1976429369bfe063ed8b3409db7c7e7d87196d9 MACアドレスのSHA1(Androidのみ) 大文字、”:”を使用
android_id e1cbfb61613b4f50 Android ID  
gps_adid 660e1d86-6796-463a-be86-897993136018 Google Play広告主ID ”-“含む
win_adid 107e8ea14329d4a2194ebbb6dc0c0fd7 Windows広告ID  
win_naid 5978aed4-82e5-28cf-8364-dfc64cb1fb84 Windows端末ID ”-“含む
win_hwid JKJbFwIArpGAGDmcBTAvlAUMKJkHAMoSCADlJQkDHWG Windows端末ID  
fire_adid df07c7dc-cea7-4a89-b328-810ff5acb15d Amazon Fire広告ID ”-“含む

売上イベントについては、売上パラメータも送信する必要があります。また、オプションとして環境を指定することもできます(例えば、テストのためにサンドボックス環境を設定)。

パラメータ名 内容
revenue 売上イベントの金額。整数単位(150 = $ 150)。
currency 売上イベントの通貨コード、以下の注記も要参照。ISO 4217準拠。例えばUSDEUR
environment データが送られる環境。”sandbox”または”production”。

注記:売上の単位は1000分の1単位から整数単位へと変更されています。既存設定のアップグレードは慎重に行い、単位を必ず正しく更新してください。以前のamountパラメータは1000分の1単位で送信されていました(990=$0.99)。

売上イベントをトラッキングするには必ず通貨パラメータを指定する必要があります。

環境が指定されていない場合は、製品版環境のイベントとみなされます。

トラッキングに成功したイベントは、ユーザーのアトリビューションデータを含むJSON文字列のHTTPレスポンスを返します。

{"tracker_token":"fo0ba5","tracker_name":"Organic","network":"Organic","country":"us"}

エラーは多くの場合、adjustでデバイスが識別されていないか、送信されたデバイスIDでデバイスを識別できなかったことが原因で発生します。

9.1サーバー間でのカスタム パラメータの送信

アプリ内イベントと同様に、サーバー間イベントAPIでも追加のカスタム パラメータを送信することができます。これらのカスタム パラメータはコールバックを通して送信され、それにより社内のBIシステムで情報を循環させたり、すべてのイベントで一貫性あるコールバックの出力を得ることができます。

これらのパラメータは(適切にエスケープ処理された)JSONオブジェクトとしてcallback_paramsパラメータを通して送信できます。以下の例では、2つのカスタム パラメータ({"f0o":"bar", "bar":"baz"})を含むJSONオブジェクトを付加しています。

http://s2s.adjust.com/event?s2s=1&event_token=f0ob4r&app_token=4w565xzmb54d&idfa=...&callback_params=%7B%22f0o%22%3A%22bar%22%2C%20%22bar%22%3A%22baz%22%7D

同じように、partner_paramsパラメータを使ってパートナー パラメータを送ることができます。

JSONオブジェクトに含められるのは文字列だけで、文字列を入れ子にはできません。パラメータの形式が正しくない場合は、エンドポイントはエラーを返します。

サーバー間APIとSDKのいずれからのカスタム パラメータも、ダッシュボードには反映されません。

10参考:カスタム パラメータによる追加データの送信

adjustを使用して特定のイベントに関する任意のデータを、トラッキングに用いるか他の処理に用いるかにかかわらず、自分のサーバーに送ることができます。adjust SDKを使えば、それぞれのイベント呼び出し時に、ユーザーID、購入チケット、製品カテゴリーなどといった追加パラメータを送信できます。各SDKのreadmeでは、イベントの呼び出しに追加できるパラメータについて詳細に説明しています。

これらの追加パラメータは、コールバックを通じてご使用のサーバーへデータを送リ返すよう作成されており、ダッシュボードやadjustのレポートには表示されません。またadjustサーバーは追加パラメーターの処理にあたり、コールバックをお客様に返すため以上の時間をかけません。adjustのサーバーはパラメータを受け取り、受け取った配列に設定されたキーを使用して、お客様へのコールバックのパラメータとしてパッケージ化します。

コールバックを利用して追加データを送信する方法の詳細、その使用例やベストプラクティスについては、「コールバックの利用ガイド」を参照してください。

11Googleタグマネージャのトラッキング

adjustはGoogleタグマネージャとの統合ができます。定義したタグはアプリ内イベントとしてadjustダッシュボード内で柔軟に表示できます。

adjustにデータを送信する手順:

  1. Googleタグマネージャにログインし、「コンテナ」タブに移動してください。「新しいタグを追加」をクリックしてください。

    Full setup

  2. adjustをプロダクトとして選択し、アプリとイベントトークンを指定してください。これらは双方ともadjustダッシュボードのアプリ設定で確認できます。収益データを送信したい場合、またはサンドボックス環境で送信したい場合は、該当のオプションを選んでください。カスタムパラメータやパートナーパラメータを追加することもできます。

  3. タグの設定後、トリガーにするアプリ内イベントを指定してください。すべてのイベントを指定するか、ルールや例外を設けて選択するイベントを定義することができます。

  4. 「保存」をクリックして完了です!