トラックイベントの設定

概要

この記事では、トラックイベントを設定するためのさまざまな方法について説明します。この機能に関する一般的な情報は、トラックイベントについての記事を参照してください。

トラックイベントでは、ユーザーが行ったアクションを、そのアクションを表すプロパティとともに記録できます。それぞれのアクションをイベントと呼びます。各イベントには、名前とプロパティがあります。たとえば、「Registered(登録済み)」イベントは、「plan」や「accountType」のようなプロパティを持つことができます。

トラックイベントをPendoに送信するには、Segment.comServer Side(サーバー側)Client Side(クライアント側)の3つの方法があります。

 

トラックイベントの制限

トラックイベントを導入する際には、いくつかのハード面およびソフト面での制限を考慮する必要があります。Pendoのプラットフォームによって固定で設定されているものもあれば、パフォーマンスを最適化するためにおすすめしているものもあります。

種類

Pendoは、Pendoアプリケーションあたり最大5,000種類のトラックイベントをサポートしています。

フィールド名

トラックイベントの名前に使われる値についてはサーバー側"event":にもクライアント側pendo.track("name"にも制限はありません。

プロパティ名は、アルファベット小文字、数字、アンダースコアのみを使用してください。名前の始まりと終わりには、アンダースコア __*__を使用できません。サポートされていない形式のプロパティは、Pendoでは表示されません。Pendoでデータを表示する際の混乱を避けるため、サブスクリプション全体で各プロパティに固有の名前を使用することをお勧めします。

512バイトを超える値は、Pendo UIにevent properties JSON too largeと表示されます。

データエクスプローラでグループ化を使用するには、プロパティの値を文字列またはブール値として分類する必要があります。データエクスプローラでグループ化できる値の数に制限はありません。

Pendoは、大量のインバウンドのトラックイベントに対応できます。唯一の制限は、訪問者ごとに1秒間に1つのトラックイベントとなることです。

1つのトラックイベントの種類に対して受け渡すことができるプロパティの数に制限はありませんが、プロパティのデータサイズによっては、数が多いとパフォーマンスが低下する場合があります。一般的なガイドラインとしては、文字列が大きい場合は20個のプロパティ、そうでなければ50個のプロパティでパフォーマンスの問題が発生する可能性が高くなります。文字列は500バイト未満である必要があります

 

Segment.com

PendoのSegmentとのインテグレーションについては、こちらの記事で詳しく紹介しています。

 

サーバー側

重要:インテグレーションを設定するには、トラックイベントの共有秘密鍵(Track Event Shared Secret Key)が必要です。この鍵は、Pendoのインストールスニペットやインテグレーションキーに記載されているサブスクリプションキーとは異なります。Pendo管理者は、アプリの設定でこのキーにアクセスできます([サブスクリプション設定(Subscription Settings)] > [アプリの選択(Choose your App)]>[アプリの詳細(App Details)])。

API要件

https://app.pendo.io/data/trackエンドポイントの技術的な説明やコード例については、追跡エンドポイントAPIの資料(Track endpoint API documentation)を参照してください。

  • アクセスレベル:トラックイベントの共有秘密鍵
  • 手法:POST
  • APIエンドポイント:https://app.pendo.io/data/track
  • パラメータ:該当なし

リクエスト本文

  • type:「track」にする必要があります(必須)
  • event:ユーザーが実行したアクションの名前(必須)
  • visitorId:訪問者の一意の文字列識別子(必須)
  • accountId:訪問者が属するアカウントの一意な文字列識別子(強く推奨)
  • timestamp:イベントが発生した時間(エポック変換後のミリ秒単位のint64)(必須)
  • properties:イベントのプロパティを示す自由形式の辞書(任意)
  • context:ブラウザのコンテキストは、イベントに関する有用なコンテキストを提供します。リクエストには必要ですが、空欄のままでも構いません("context":{}

 

ブラウザのコンテキスト

ブラウザのコンテキストは、イベントに関する有用なコンテキストを提供します。

  • ip:現在のユーザーのIPアドレス
  • userAgent:リクエストを行うデバイスのユーザーエージェント(推奨)
  • url:ブラウザの現在のページのURL(任意)
  • title:ブラウザの現在のページのタイトル(任意)

 

備考: Pendoのインストール時にリモートIPやタイトルをブロックしている場合は、ここで設定してもブラウザのコンテキストは収集されません。

 

レスポンス:

  • 200:トラックイベントがリクエストどおりに送信されました

サンプルペイロード

{
    "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"
    }
}
 

クライアント側/エージェント

この方法では、Pendoクライアント/エージェントを使ってイベントの追跡情報を受け渡すことができます。このフォーマットは、Visual Design Studioで作成されたガイドのコードブロックビルディングブロックでサポートされています。

備考:エージェント/クライアント側のトラックイベントは、エージェントのバージョンが2.14.3以降でのみ利用可能です。

 

入力フォーマット

pendo.track("NAME", {
  PROPERTY1: "PROPERTY1VALUE",
  PROPERTY2: "PROPERTY2VALUE",
  PROPERTYN: "PROPERTYNVALUE",
  ...
});
 

入力例

pendo.track("Registered", {
  plan: "Pro Annual",
  accountType: "Facebook"
});

 

モバイルトラックイベント

この方法では、Pendo SDKを使ってトラックイベント情報を受け渡すことができます。

備考:モバイルトラックイベントは、SDKバージョン2.1以降でのみ利用可能です。それ以前のバージョンについては、モバイルカスタムイベントの記事を参照してください。

 

iOS

Objective C

[[PendoManager sharedManager] track:@"event_name" properties:@{ @"key1" : @"val1" , @"key2" : @"val2"}];

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);

 

 

よくある質問

トラックイベントを送りましたが、トラックイベントページに表示されません。

イベントがイベント追跡ページに表示されるまで、最長で15分かかることがあります。また、イベントのタイムスタンプが、Pendoのサブスクリプションが作成された後の日付であることも確認してください。

 

pendo.trackがコンソールの関数ではなく、トラックイベントがトラックイベントページに表示されていません。

これは、Pendo Agentがロードされる前にイベントの追跡関数が実行されるためです。イベント追跡の関数を実行する前にエージェントがロードされたかどうかを確認するには、以下の例を参照してください。

function pendoTrack(name, data) {
 </wbr>  </wbr>if (pendo && pendo.isReady && pendo.isReady()){
       return pendo.track(name, data);
   }
 </wbr>  </wbr>setTimeout(function() {
     pendoTrack(name, data);
   }, 500);
}

pendoTrack("NAME", { PROPERTY1: "PROPERTY1VALUE", ... });

 

トラックイベントを送ったところ、トラックイベントのページに追跡種類は表示されていますが、実際のイベントが表示されていません。

Pendoでは、直前1時間のデータを次の正時(00時)から処理を開始します。データがUIに表示されるまでに最長15分かかることがあります。当日のデータを探している場合は、「今日」の日付範囲を使用しているか、日付範囲に当日が含まれていることを確認してください。

イベントのタイムスタンプは、追跡の種類が作成された後の時間である必要があります。

このような状況を引き起こす可能性のある、問題のあるタイムスタンプ例をいくつか紹介します。

  • サブスクリプションが作成される前に設定されたタイムスタンプ。
  • 追跡の種類を作成するために送られた最初のイベントの何時間も前に設定されたタイムスタンプ。
    • イベントの時刻は5時であるにもかかわらず、イベントが送信され追跡の種類が作成されたのは15時だった場合
  • 追跡の種類を作成するために送られた最初のイベントの前日に設定されたタイムスタンプ。
    • イベントの日付は7/18であるにもかかわらず、イベントが送信され追跡の種類が作成されたのは7/19だった場合