Skip to content

分析

Braze SDKの分析について学習し、Brazeが収集するデータ、カスタムイベントとカスタム属性の違い、分析を管理するためのベストプラクティスについて理解を深めましょう。

自動的に収集されるデータ

最初に使用したアプリ、最後に使用したアプリ、合計セッション数、デバイスOSなど、特定のユーザーデータはSDKで自動的に収集されます。統合ガイドに従ってSDKを実装すると、このデフォルトデータ収集を利用できるようになります。このリストを確認することで、ユーザーに関する同じ情報を複数回保存しなくて済みます。セッションの開始と終了を除き、その他の自動的にトラッキングされるデータは、データポイント使用量にはカウントされません。

特定のデータ項目のデフォルト収集をブロックするプロセスを許可リストに登録するには、SDKプライマーに関する記事を参照してください。

カスタムイベント

カスタムイベントは、ユーザーによって行われるアクションです。これらは、アプリケーションとの高価値なユーザーインタラクションをトラッキングするのに最適です。カスタムイベントをログに記録すると、構成可能な遅延を設定して任意の数のフォローアップキャンペーンをトリガーできます。また、そのイベントの最新性と頻度に基づいて次のセグメンテーションフィルターが有効になります。

セグメンテーションオプション ドロップダウンフィルター 入力オプション
カスタムイベントがX回以上発生したかどうかをチェックする MORE THAN NUMBER
カスタムイベントの発生回数がX回未満かどうかをチェックする LESS THAN NUMBER
カスタムイベントが正確にX回発生したかどうかをチェックする EXACTLY NUMBER
カスタムイベントが日付Xより後に発生したかどうかをチェックする AFTER TIME
カスタムイベントが日付Xより前に発生したかどうかをチェックする BEFORE TIME
カスタムイベントが最後に発生したのがX日以上前かどうかをチェックする MORE THAN NUMBER OF DAYS AGO(正の数)
カスタムイベントが最後に発生したのがX日未満かどうかをチェックする LESS THAN NUMBER OF DAYS AGO(正の数)
カスタムイベントがX(最大値 = 50)回以上発生したかどうかを確認する MORE THAN 過去Y日間 (Y = 1,3,7,14,21,30)
カスタムイベントがX(最大 = 50)回未満発生したかどうかを確認する LESS THAN 過去Y日間 (Y = 1,3,7,14,21,30)
カスタムイベントが正確にX(最大 = 50)回発生したかどうかを確認する EXACTLY 過去Y日間 (Y = 1,3,7,14,21,30)

Brazeはセグメンテーション用として、これらのイベントが発生した回数と、各ユーザーの最終実行時刻を記録します。カスタムイベントの分析ページで、各カスタムイベントが発生する頻度を集約して表示できます。また、より詳細な分析を行うために、経時的にセグメントごとに表示することもできます。これは、キャンペーンがカスタムイベントのアクティビティにどのように影響したかを確認するのに特に役立ちます。Brazeが時系列にオーバーレイする灰色の線を見て、最後にキャンペーンが送信された時を確認できます。

クレジットカードを追加して30日間にわたって検索を行ったユーザーに関する統計を示すカスタムイベント分析グラフ。

カスタムイベントの保存

すべてのユーザープロファイルデータ(カスタムイベント、カスタム属性、カスタムデータ)は、それらのプロファイルがアクティブである限り保存されます。

カスタムイベントプロパティ

カスタムイベントプロパティを使用すると、Brazeはカスタムイベントおよび購入にプロパティを設定できます。これらのプロパティを使用して、トリガー条件の絞り込み、メッセージングのパーソナライゼーションの強化、未加工データのエクスポートによるより高度な分析の生成を行えます。プロパティ値は文字列、数値、ブール値、または時間オブジェクトにすることができます。ただし、プロパティ値は配列オブジェクトにすることはできません。

例えば、あるeコマースアプリケーションが、ユーザーがカートを放棄したときにメッセージを送りたい場合、ユーザーのカートのcart_valueのカスタムイベントプロパティを追加することで、ターゲットオーディエンスをさらに改善し、キャンペーンのパーソナライゼーションを高めることができます。

カスタムイベントの例では、カートを放棄し、カートの価値が100以上200未満のユーザーにキャンペーンを送信します。

カスタムイベントプロパティは、メッセージングテンプレート内でパーソナライゼーションのためにも使用できます。トリガーイベントを持つアクションベースの配信を使用するキャンペーンは、メッセージングパーソナライゼーションのために、そのイベントのカスタムイベントプロパティを使用できます。ゲームアプリケーションがレベルをクリアしたユーザーにメッセージを送信したい場合、そのレベルをクリアするのにかかった時間のプロパティを使用してメッセージをさらにパーソナライズできます。この例では、メッセージは条件付きロジックを使用して3つの異なるセグメントに対してパーソナライズされています。カスタムイベントプロパティtime_spentは、{{event_properties.${time_spent}}}を呼び出すことでメッセージに含めることができます。

1
2
3
4
5
6
7
{% if {{event_properties.${time_spent}}} < 600 %}
Congratulations on beating that level so fast! Check out our online portal where you can play against top players from around the world!
{% elsif {{event_properties.${time_spent}}} < 1800 %}
Don't forget to visit the town store between levels to upgrade your tools.
{% else %}
Talk to villagers for essential tips on how to beat levels!
{% endif %}

カスタムイベントプロパティは、メッセージングをパーソナライズしたり、アクションベースの詳細な配信キャンペーンを構築したりするのに役立ちます。イベントプロパティの直近性と頻度に基づいてセグメントを作成したい場合は、カスタマーサクセスマネージャーまたはサポートチームにお問い合わせください。

カスタム属性

カスタム属性は、標準属性項目を使用した場合よりも高い特異性でユーザーをターゲットにすることができる非常に柔軟性の高いツールです。カスタム属性は、ユーザーに関するブランド固有の情報を保存するのに最適です。カスタム属性の時系列情報は保存されないため、前のカスタムイベントの例のようには時系列情報に基づくグラフを取得できないことに注意してください。

カスタム属性の保存

すべてのユーザープロファイルデータ(カスタムイベント、カスタム属性、カスタムデータ)は、それらのプロファイルがアクティブである限り保存されます。

カスタム属性のデータタイプ

カスタム属性として格納できるデータタイプを以下に示します。

文字列(英数字)

文字列属性は、お気に入りのブランド、電話番号、アプリケーション内での最後の検索文字列など、ユーザー入力の保存に役立ちます。文字列属性はカスタムデータの長さ制約(479バイト。約479文字の半角文字、または日本語などの多バイト文字では約160文字)に従います。

次の表は、文字列属性に利用可能なセグメンテーションオプションについて説明しています。

セグメンテーションオプション ドロップダウンフィルター 入力オプション
文字列属性が入力された文字列と完全に一致するかどうかを確認します EQUALS STRING
文字列属性が入力された文字列に部分的に一致するかどうかまたは正規表現を確認します MATCHES REGEX STRING OR REGULAR EXPRESSION
文字列属性が、入力された文字列または正規表現と部分的に一致しないかどうかを確認します DOES NOT MATCH REGEX STRING OR REGULAR EXPRESSION
文字列属性が入力された文字列と一致しないかどうかを確認します DOES NOT EQUAL STRING
ユーザーのプロファイルに文字列属性が存在するかどうかを確認します IS BLANK N/A
ユーザーのプロファイルに文字列属性が存在しないかどうかを確認します IS NOT BLANK N/A

配列

配列属性は、ユーザーに関する情報の関連リストの保存に適しています。例えば、ユーザーが視聴した最後のコンテンツ100個を配列内に保存すると、特定の関心に基づくセグメンテーションができます。

カスタム属性の配列は一次元のセットです。多次元配列はサポートされていません。カスタム属性配列に要素を追加すると、その要素が配列の最後に追加されます。ただし、既に存在する場合は、現在の位置から配列の最後に移動されます。例えば、配列['hotdog','hotdog','hotdog','pizza']がインポートされた場合、一意の値のみがサポートされるため、配列属性には['hotdog', 'pizza']として表示されます。

配列が最大数の要素を含んでいる場合、最初の要素は破棄され、新しい要素が最後に追加されます。次に、Web SDKでの配列の動作を示すいくつかの例コードを示します:

var abUser = appboy.getUser();
// initialize array for this user, assuming max length of favorite_foods is set to 4.
abUser.setCustomUserAttribute('favorite_foods', ['pizza', 'wings', 'pasta']); // => ['pizza', 'wings', 'pasta']
abUser.addToCustomAttributeArray('favorite_foods', 'fries'); // => ['pizza', 'wings', 'pasta', 'fries']
abUser.addToCustomAttributeArray('favorite_foods', 'pizza'); // => ['wings', 'pasta', 'fries', 'pizza']
abUser.addToCustomAttributeArray('favorite_foods', 'ice cream'); // => ['pasta', 'fries', 'pizza', 'ice cream']

配列内の要素のデフォルトおよび最大数は500です。最大数は、Brazeダッシュボードのデータ設定 > カスタム属性で更新できます。要素数が最大値を超える配列は、最大要素数を含むように切り詰められます。

次の表は、配列属性の利用可能なセグメンテーションオプションについて説明しています。

セグメンテーションオプション ドロップダウンフィルター 入力オプション
配列属性に、入力された値と完全一致する値が含まれているかを確認します INCLUDES VALUE STRING
配列属性に、入力された値と完全一致する値が含まれていないかを確認します DOESN’T INCLUDE VALUE STRING
配列属性に、入力された値、または正規表現と部分一致する値が含まれているかを確認します MATCHES REGEX STRING OR REGULAR EXPRESSION
配列属性に値があるかどうかを確認します HAS A VALUE N/A
配列属性が空であるかどうかを確認します IS EMPTY N/A

日付

時刻属性は、特定のアクションが最後に実行された時刻の保存に役立ちます。そのため、コンテンツ固有の再エンゲージメントメッセージをユーザーに提供できます。

相対日付(1日超前、2日未満など)を使用した日付フィルターでは、1日を24時間として扱います。これらのフィルターを使用して実行するキャンペーンには、24時間単位ですべてのユーザーが含まれます。例えば、最後に使用したアプリが1日以上前の場合、キャンペーンが実行される正確な時刻から「最後にアプリを使用したのが24時間以上前」のすべてのユーザーをキャプチャします。同じことが、より長い日付範囲で設定されたキャンペーンにも当てはまります。つまり、アクティベーションから5日後は、過去120時間を意味します。

次の表は、時間属性に利用可能なセグメンテーションオプションについて説明しています。

セグメンテーションオプション ドロップダウンフィルター 入力オプション
時間属性が、選択した日付よりも前であるかを確認します BEFORE CALENDAR DATE SELECTOR
時間属性が、選択した日付よりも後であるかを確認します AFTER CALENDAR DATE SELECTOR
時間属性がX日以上前かどうかを確認します MORE THAN NUMBER OF DAYS AGO
時間属性がX日未満前かどうかを確認します LESS THAN NUMBER OF DAYS AGO
時間属性がX日以上先の未来であるかどうかを確認します IN MORE THAN NUMBER OF DAYS IN FUTURE
時間属性がX日未満先の未来であるかどうかを確認します IN LESS THAN NUMBER OF DAYS IN FUTURE
ユーザーのプロファイルに時間属性が存在するかどうかを確認します BLANK N/A
ユーザーのプロファイルに時間属性が存在しないかどうかを確認します IS NOT BLANK N/A

数値

数値属性にはさまざまなユースケースがあります。数値のカスタム属性を増分すると、特定のアクションやイベントが発生した回数を保存する場合に便利です。標準的な数値には、靴のサイズ、ウエストのサイズ、ユーザーが特定の製品の特徴やカテゴリーを見た回数の記録など、あらゆる種類の用途があります。

次の表は、数値属性に利用可能なセグメンテーションオプションについて説明しています。

セグメンテーションオプション ドロップダウンフィルター 入力オプション
数値属性が数値より大きいかどうかを確認します MORE THAN NUMBER
数値属性が数値より小さいかどうかを確認します LESS THAN NUMBER
数値属性が正確に数値であるかどうかを確認します EXACTLY NUMBER
数値属性が数値等しくないかどうかを確認します DOES NOT EQUAL NUMBER
ユーザーのプロファイルに数値属性が存在するかどうかを確認します EXISTS N/A
ユーザーのプロファイルに数値属性が存在しないかどうかを確認します DOES NOT EXIST N/A

ブール値(true/false)

ブール属性は、サブスクリプションステータスやユーザーに関するその他の単純なバイナリデータを保存するのに役立ちます。提供される入力オプションを使用すると、変数がブール値に明示的に設定されているユーザーと、その属性がまだ記録されていないユーザーを見つけることができます。

次の表は、ブール属性の利用可能なセグメンテーションオプションについて説明しています。

セグメンテーションオプション ドロップダウンフィルター 入力オプション
ブール値であるかを確認します IS TRUEFALSETRUE OR NOT SET、またはFALSE OR NOT SET
ユーザーのプロファイルにブール値が存在するかどうかを確認します EXISTS N/A
ユーザーのプロファイルにブール値が存在しないかどうかを確認します DOES NOT EXIST N/A

購入イベントと収益トラッキング

アプリ内購入の記録に購入メソッドを使用すると、個々のユーザープロファイルに生涯価値(LTV)が設定されます。このデータは、時系列グラフで収益ページ内で表示できます。

次の表は、購入イベントのために利用可能なセグメンテーションオプションを説明しています。

セグメンテーションオプション ドロップダウンフィルター 入力オプション
合計支出額が数値より大きいかどうかを確認します GREATER THAN NUMBER
合計支出額が数値未満であるかを確認します LESS THAN NUMBER
合計支出額が正確に数値であるか確認します EXACTLY NUMBER
購入の最終発生時期が日付Xより後かを確認します AFTER TIME
購入の最終発生時期が日付Xより前かを確認します BEFORE TIME
前回の購入がX日以上前かどうか確認します MORE THAN TIME
購入が最後に発生したのがX日未満かどうか確認します LESS THAN TIME
購入がX(最大=50)回以上発生したかどうかを確認します MORE THAN 過去Y日間 (Y = 1,3,7,14,21,30)
購入がX(最大50)回未満で発生したかどうかを確認します LESS THAN 過去Y日間 (Y = 1,3,7,14,21,30)
購入が正確にX(最大50)回発生したかどうかを確認します EXACTLY 過去Y日間 (Y = 1,3,7,14,21,30)

タクシー/ライドシェアアプリのユースケース

この例では、どのユーザーデータを収集するかを決定したいライドシェアアプリを考えてみましょう。以下の質問とブレインストーミングのプロセスは、マーケティングチームと開発チームが参考にできる優れたモデルです。この演習を終了すると、両方のチームは、目標を達成するためにどのカスタムイベントと属性を収集するとよいかが明確にわかるでしょう。

ケースの質問 No.1: 目標は何ですか?

目標は明確で、ユーザーにアプリ経由でタクシーを呼んでもらうことです。

ケースの質問 No.2: アプリをインストールしてからその目標に至るまで、どのような中間ステップがありますか?

  1. ユーザーは登録プロセスを開始して、個人情報を入力する必要があります。
  2. ユーザーは登録プロセスを完了し、SMS経由で受け取ったコードをアプリに入力して確認する必要があります。
  3. ユーザーはタクシーを呼ぶ必要があります。
  4. タクシーを呼ぶには、ユーザーが検索したときにタクシーが利用できなければなりません。

これらのアクションには、以下のカスタムイベントとしてタグを付けることができます。

  • 登録開始
  • 登録完了
  • タクシーの呼び出し成功
  • タクシーの呼び出し失敗

イベントを実装した後、次のキャンペーンを実行できます。

  1. 登録を開始したが、一定期間内に登録完了イベントをトリガーしなかったユーザーにメッセージを送信する。
  2. 登録を完了したユーザーにお祝いのメッセージを送信します。
  3. タクシーの呼び出しに失敗し、一定時間内に成功したタクシーの呼び出しがなかったユーザーに謝罪とプロモーションクレジットを送信します。
  4. タクシーの呼び出し成功数が多いパワーユーザーに、ロイヤルティへの感謝の気持ちを示すプロモーションを送信します。

そして他にもたくさんあります!

ケースの質問 No.3: メッセージングに役立つ、ユーザーに関する他のどのような情報が必要でしょうか?

  • プロモーションクレジットを持っているかどうか?
  • ユーザーによるドライバーの平均評価は?
  • ユーザー固有のプロモーションコードがあるか?

これらの特性には、以下のカスタム属性のタグを付けることができます。

  • プロモーションクレジット残高(10進数型)
  • ドライバーの平均評価(数値型)
  • 固有のプロモーションコード(文字列型)

これらの属性を追加することで、次のようなキャンペーンをユーザーに送信できるようになります。

  1. 7日間ログインしていないがプロモーションクレジットを持っているユーザーに、そのクレジットが存在することと、アプリに戻って使用するよう通知する。
  2. 低いドライバー評価を与えたユーザーにメッセージを送り、なぜ乗車を楽しめなかったのかを確認するために直接フィードバックを得る。
  3. メッセージテンプレートとパーソナライゼーション機能を使用して、固有のプロモーションコード属性をユーザー向けのメッセージングに付け加えます。

ベストプラクティス

一般的なベストプラクティス

イベントプロパティを使用する

  • ユーザーが行うアクションを説明するカスタムイベントに名前を付けます。
  • カスタムイベントプロパティを十分に活用して、イベントに関する重要なデータを表現してください。
  • 例えば、50本の異なる映画のそれぞれを視聴するために別々のカスタムイベントをキャプチャするのではなく、映画を視聴することをイベントとしてキャプチャし、イベントプロパティに映画の名前を含める方が効果的です。

開発のベストプラクティス

すべてのユーザーにユーザーIDを設定する

ユーザーIDは、各ユーザーに設定する必要があります。これらは変更されず、ユーザーがアプリを開いたときにアクセスできるようにする必要があります。この識別子を提供することを強くお勧めします。これにより、次のことが可能になります:

  • デバイスやプラットフォームを超えてユーザーをトラッキングし、行動データや人口統計データの質を向上させます。
  • ユーザーデータAPIを使用して、ユーザーに関するデータをインポートします。
  • メッセージングAPIを使用して、一般的なメッセージとトランザクションメッセージの両方で特定のユーザーをターゲットにします。

ユーザーIDは512文字未満でなければならず、プライベートで簡単に取得できないものであるべきです(例えば、単純なメールアドレスやユーザー名ではない)。そのような識別子が利用できない場合、Brazeはユーザーに一意の識別子を割り当てますが、ユーザーIDに対してリストされている機能が欠けることになります。個人として紐づけられた固有の識別子を持たないユーザーに対して、ユーザーIDの設定は避けるべきです。デバイス識別子を渡すことは、Brazeがデフォルトで提供する自動匿名ユーザートラッキングに対して何の利益も提供しません。以下は、適切および不適切なユーザーIDの例です。

適切なユーザーIDの例:

  • ハッシュ化されたメールアドレスまたは一意のユーザー名
  • 一意のデータベース識別子

これらはユーザーIDとして使用しないでください:

  • デバイスID
  • ランダムな数値またはセッションID
  • 一意でないID
  • メールアドレス
  • 別のサードパーティベンダーのユーザーID

カスタムイベントと属性に読みやすい名前を付ける

マーケターが導入から1〜2年後にBrazeを使い始めるとしましょう。文脈もなしに「usr_no_acct」のような名前がずらりと並んだドロップダウンリストを読むのは、気が重くなるかもしれません。イベントと属性に識別可能で読みやすい名前を付けることで、プラットフォームのすべてのユーザーにとって物事が容易になります。次のベストプラクティスを考慮してください:

  • カスタムイベントは数字で始めないでください。ドロップダウンリストはアルファベット順に並べられ、数字で始まると、選択したフィルターでセグメンテーションするのが難しくなります。
  • 可能な限り難解な略語や専門用語を使用しないようにしてください。
    • 例: usr_ctryはコード内のユーザーの国を示す変数名としては問題ないかもしれませんが、カスタム属性はBrazeにuser_countryのように送信して、後でダッシュボードを使用するマーケターに明確さを提供する必要があります。

属性が変更されたときにのみログに記録する

Brazeに渡されたすべての属性は、たとえ渡された属性が以前に保存されたものと同じ値を含んでいても、データポイントとしてカウントされます。変更時にのみデータを記録することで、冗長なデータポイントの使用を回避し、不必要なAPI呼び出しを避けることでスムーズな体験をサポートします。

プログラムでイベント名を生成するのを避ける

新しいイベント名を常に作成している場合、ユーザーを意味のあるセグメントに分割することは不可能になります。一般的なイベント(「動画を見た」や「記事を読んだ」)をキャプチャするべきであり、「江南スタイルを見た」や「記事を読んだ: ミッドタウンマンハッタンのベスト10ランチスポット」のような非常に具体的なイベントではありません。イベントに関する具体的なデータは、イベント名の一部ではなく、イベントプロパティとして含める必要があります。

技術的な制限と制約

カスタムイベントを実装する際の次の制限と制約に注意してください:

長さの制約

Brazeはカスタムイベント名、カスタム属性名(キー)、およびカスタムイベントの文字列値に対して、バイト単位の長さ制限(479バイト)を設けています。この制限を超える値は切り詰められます。文字数で表すと、これは約479の半角文字(例: ASCII)に相当します。あるいは日本語などの多バイト文字では約160文字となります(UTF-8で1文字あたり約3バイトと仮定した場合)。理想的には、アプリにおけるネットワークとバッテリーのパフォーマンスを向上させるため、名前と値は可能な限り短く保ってください。可能であれば、50文字以内に制限してください。

コンテンツの制約

次のコンテンツは、属性とイベントからプログラムによってトリミングされます。次のものを使用しないように注意してください:

  • 先頭と末尾の空白
  • 改行
  • 電話番号内のすべての数字以外の文字
    • 例: “(732) 178-1038” は “7321781038” に凝縮されます
  • 空白以外の文字はスペースに変換する必要があります
  • $は、カスタムイベントのプレフィックスとして使用しないでください
  • 無効なUTF-8エンコーディング値
    • “My \x80 Field” は “My Field” に凝縮されます

予約済みのキー

以下のキーは予約されているため、カスタムイベントプロパティとして使用できません。

  • time
  • product_id
  • quantity
  • event_name
  • price
  • currency

値の定義

  • 整数値は64ビットです
  • デフォルトで小数は15桁の小数桁数を持っています

一般名フィールドの解析

ユーザーに対して1つの汎用名フィールドしか存在しない場合(例:「JohnDoe」)、このタイトル全体をユーザーの名属性に割り当てることができます。さらに、スペースを使用してユーザーの名と姓の両方を解析しようとすることもできますが、この後者の方法には一部のユーザーの名前を誤って認識するリスクがあります。

New Stuff!