この記事では、トラックイベントを設定するためのさまざまな方法について、特にこれらの設定の実装を担当する開発者向けに説明します。トラックイベントに関する一般的な情報は、トラックイベントを参照してください。
トラックイベントは、クリックイベントでは収集されない可能性のある特定の訪問者アクションを記録できる、ウェブサイトに追加されるコードスニペットです。各アクションはイベントを生成し、各イベントにはプロパティが関連付けられています。たとえば、「Registered(登録済み)」イベントには「plan」や「accountType」などのプロパティがあります。
トラックイベントをPendoに送信するには、次の3つの方法があります。
- Twilio Segmentとのインテグレーションを通じて。このメソッドは、Webhookを使用してSegmentによって実装されます。
- サーバー側のインテグレーションとして。これは、サイト上でのユーザーインタラクションとは別に、バックエンドで発生したアクションに対してPendoへのAPI呼び出しを設定するものです。
- クライアント側のインテグレーションとして。これは、ウェブアプリケーションやモバイルアプリケーションに実装して、アプリ内でフィーチャーのクリック数とは見なされないイベントを取得するものです。
トラックイベントの構造とデータを理解する
トラックイベントを設定する前に、Pendoに送信する予定のデータの構造と制限を理解することが重要です。これには、Pendoプラットフォームによって固定で設定されているものと、パフォーマンスを最適化するためのベストプラクティスとしておすすめしているものが含まれます。
名前
Pendoは、Pendoアプリあたり最大5,000種類の、名前の付けられたトラックイベントをサポートしています。
タイムスタンプ
タイムスタンプには可能な限り現在の時刻が反映されているはずです。過去のタイムスタンプを持つイベントは、通常の時間間隔では処理されず、Pendoの日次および週次のイベント再処理後にのみUIに表示されます。
以下の場合、Pendoはトラックイベントに関連付けられたデータを処理できません。
- タイムスタンプが7日を超えている
- タイムスタンプが、名前が定義される前に発生したものである
- タイムスタンプが、サブスクリプションが作成される前に発生したものである
イベントのプロパティ
複数のデータを、トラックイベントに添付されたイベントプロパティとしてキャプチャできます。これには、ウィンドウのサイズ、ページ上のテキスト、ウェブサイトに存在しないサーバー側の情報などが含まれます。
イベントプロパティは、フィールド名をキー、イベントプロパティ値を値として定義するキーと値のペアで構成されます。サブスクリプションでは、クリックイベントプロパティを含む、最大10,000個の個別のカスタムイベントプロパティ値を持つことができます。
イベントプロパティが512バイトを超えると、Pendo UIにevent properties JSON too large
が表示されます。"properties"
、引用符、JSONオブジェクト、括弧と値を含む"properties": {}
行全体は、512バイトを超えることはできません。
イベントプロパティ名
イベントプロパティに名前を付ける場合は、以下の要件に従ってください。
- 文字、数字、アンダースコアのみを使用する。
- 名前の始まりと終わりに2つのアンダースコアを使用しない。
- 名前は32文字未満にする。
- 数字から始めない。
サポートされていない形式のプロパティは、Pendoでは表示されません。Pendoでデータを表示する際の混乱を避けるため、サブスクリプション全体のプロパティごとに一意の名前を使用することをおすすめします。
イベントプロパティ値
データエクスプローラとファネルで[グループ化(Group By)]を使用するには、プロパティの値を文字列またはブール値として分類する必要があります。
トラックイベントのプロパティは、固有の値の総数が10,000を超える可能性がある場合の使用を意図していません。厳密な制限はありませんが、プロパティの濃度が非常に高いと、トラックイベントと集計でパフォーマンスの問題が発生する可能性があります。
ボリュームとスループット
Pendoは、大量のインバウンドのトラックイベントに対応できます。1つのトラックイベントタイプで渡すことができるプロパティの数に厳密な制限はありません。ただし、大量のデータがあるとパフォーマンスが低下する可能性があります。
基本的なガイドラインとしては、文字列が大きい場合は20個のプロパティ、そうでなければ50個のプロパティでパフォーマンスの問題が発生する可能性が高くなります。文字列は500バイト未満である必要があります。
訪問者とアカウントのレコード
トラックイベントの訪問者IDまたはアカウントIDがPendoにまだ存在しない場合、その訪問者とアカウントについて最初にイベントを受信した時点で新しいレコードが作成されます。このイベントが訪問者のアクティビティにカウントされるかどうかは、アプリケーション設定の[トラックイベントをアプリ滞在時間としてカウント(Count Track Events as time in app)]によって制御されます。管理者は、[設定(Settings)]>[サブスクリプション設定(Subscription Settings)]>[アプリケーション(Applications)]に移動して関連するアプリを開くと、この設定を確認できます。
- [トラックイベントをアプリ滞在時間としてカウント]がオンになっている場合、新しく作成された訪問者またはアカウントは、アプリケーションでの滞在時間としてカウントされ、テーブル、レポート、ダッシュボード、およびトラックイベントに反映されます。この設定は遡及的ではなく、Pendoがすでに受信しているトラックイベントには影響しません。
- [トラックイベントをアプリ滞在時間としてカウント]の設定がオフになっている場合、新しく作成された訪問者またはアカウントはアプリケーションの使用時間としてカウントされず、テーブル、レポート、ダッシュボード、トラックイベントにも反映されません。
[トラックイベントをアプリ滞在時間としてカウント]の設定の詳細については、ページおよびアプリ滞在時間の計算の記事のトラックイベントを参照してください。
Twilio Segmentによる設定
Twilio Segmentインテグレーションがある場合、トラックイベントの設定はサーバー側のWebhookを介して処理されます。手順については、Twilio Segmentとのインテグレーションの概要を参照してください。
サーバー側の設定
サーバー側でトラックイベントを設定するには、Pendoのインストールキーやインテグレーションキーにあるサブスクリプションキーとは異なる、トラックイベントの共有秘密鍵が必要です。
Pendo管理者は、[設定]>[サブスクリプション設定]>[アプリケーション]に移動し、関連するアプリを選択してから、[トラックイベントの共有秘密(Track Event shared secret)]の横にある[表示(Show)]を選択することで、共有秘密鍵にアクセスできます。
共有秘密鍵を取得したら、追跡エンドポイントAPIの資料で、APIリクエストのフォーマット方法とコード例に関する技術的な詳細を参照してください。
以下は、サーバー側のトラックイベントのペイロードの例です。
{
"type": "track",
"event": "Registered",
"visitorId": "unique-string-id",
"accountId": "account-id-of-visitor",
"timestamp": 1524069206000,
"properties": {
"plan": "Pro Annual",
"accountType": "Facebook"
},
"context": {
"ip": "76.253.187.23",
"userAgent": "Chrome/65.0.3325.181",
"url": "https://mypage.com/admin",
"title": "My Page - Admin"
}
}
クライアント側での設定
クライアント側のトラックイベントは通常のイベントと同じ方法で収集され、イベントが生成された時刻とURLが自動的に記録されます。
クライアント側の設定により、PendoウェブエージェントまたはモバイルSDKを介してトラックイベントデータを渡すことができます。
注:クライアント側のトラックイベントは、エージェントバージョン2.14.3以降、およびSDKバージョン2.1以降でのみ使用できます。
ウェブエージェント
クライアント側のトラックイベントでは、ブラウザからアクセスできる変数を文字列として渡すことができます。このフォーマットは、ビジュアルデザインスタジオ(Visual Design Studio)で構築されたガイドのコードブロックでもサポートされています。
トラックイベントの入力形式は次のとおりです。
pendo.track("NAME", {
PROPERTY1: "PROPERTY1VALUE",
PROPERTY2: "PROPERTY2VALUE",
PROPERTYN: "PROPERTYNVALUE",
BROWSERPROPERTY: "BROWSER.VARIABLE",
...
});
入力例は次のとおりです。
pendo.track("Registered", {
plan: "Pro Annual",
accountType: "Facebook",
activeGuide: pendo.getActiveGuide().guide.name,
width: JSON.stringify(window.innerWidth),
height: JSON.stringify(window.innerHeight)
});
入力に基づく出力例は次のとおりです。
"props": {
“plan”: "Pro Annual",
“accountType”: "Facebook",
"activeGuide": "Resource Center Targeted Guide",
"width": "776",
"height": "1009"
},
モバイルSDK
この方法では、Pendo SDKを使ってトラックイベント情報を受け渡すことができます。トラックイベントの送信に使用する形式は、モバイルアプリが使用するオペレーティングシステムとプログラミング言語によって異なります。それぞれについて、以下で詳しく説明します。
iOS:Objective-C
[[PendoManager sharedManager] track:@"event_name" properties:@{ @"key1" : @"val1" , @"key2" : @"val2"}];
iOS:Swift
PendoManager.shared().track("event_name",properties: ["key1":"val1", "key2":"val2"])
Android
HashMap<String, String> properties = new HashMap<>();
properties.put("item",view.toString());
properties.put("index",String.valueOf(i));
Pendo.track("item_selected",properties);
その他の例については、モバイルトラックイベントの例を参照してください。
トラックイベントに関する問題のトラブルシューティング
トラックイベントデータがPendoに期待どおりに入力されない場合は、 トラックイベントのデータがUIに表示されないで解決策のリストを確認してください。