Twilio Segment(以下、Segment)で宛先を設定することで、Twilio SegmentのデータをPendoに送信できます。Pendoでは、Segment内に2つの送信先があります。Pendoウェブ(アクション)とWebhooks(アクション)です。Pendoウェブ(アクション)の宛先は、Segmentにデータを送信するための標準的な宛先であり、Segmentを通じてPendoをインストールすることができます。
この記事では、Webhooks(アクション)の宛先を設定する方法について説明します。この宛先は、Pendoウェブ(アクション)の宛先の代替として、または追加として設定することができます。Pendoウェブ(アクション)の宛先がサポートしているのは、ウェブアプリケーションからのクライアント側データのみです。そのため、次のいずれかに当てはまる場合は、両方の宛先を設定することがあります。
- モバイルアプリケーションからデータ(サーバー側のデータのみ)を受信したい場合。
- ウェブアプリケーションから、訪問者やアカウントのメタデータに加えて、サーバー側およびクライアント側のトラックイベントを受信したい場合。
設定の概要
Segmentには、宛先アクション(Destination Actions)フレームワークを使用する2つのPendoの宛先があります。このフレームワークを使用すると、SegmentがイベントデータをPendoウェブ(アクション)の宛先に送信する方法を制御できます。Pendoでは、1つまたは両方の宛先を設定できます。
ウェブアプリケーションのクライアント側データに加えてサーバー側のトラックイベントを受信したい場合は、Pendoウェブ(アクション)の宛先を設定し、さらに次の手順を実行する必要があります。
- SegmentでWebhooks(アクション)の宛先を作成、設定、およびオンにします。これはPendoの標準的なPendoウェブ(アクション)の宛先とは異なる宛先です。
- Pendoウェブ(アクション)の宛先で[トラックイベントを送信(Send Track Events)]をオフにします。これは、2つの宛先があることによって生じる重複を避けるためです。
-
クライアント側のトラックイベントを設定して、
groupId
をリクエスト本文のproperties
に送信します。これは、[トラックイベントを送信(Send Track Event)]をオフにすると、クライアント側のトラックイベントにgroupId
を追加する自動プロセスが中断されるためです。
必要に応じて、以下のようにどちらか一方の宛先だけを設定することもできます。
- ウェブアプリケーションからのクライアント側データ(訪問者メタデータ、アカウントメタデータ、クライアント側のトラックイベントを含む)に対するPendoウェブ(アクション)の宛先を設定します。この宛先の詳細については、「Twilio SegmentデータをPendoに送信する」をご覧ください。
- サーバー側のトラックイベントに対するWebhook(アクション)の宛先を設定します。この場合、ウェブアプリケーションおよびモバイルアプリケーションのどちらのデータも対象です。Segmentをウェブアプリケーションとインテグレーションしている場合、この宛先はクライアント側のイベントも送信します。
両方の宛先を設定する場合は、この記事のすべての手順を実行してください。
Webhooks(アクション)の宛先のみを設定する場合は、この記事の「データの重複を避ける」セクションに記載されている手順を実行する必要はありません。ただし、「トラックイベントを準備する」に記載されている手順はすべて実行する必要があります。これには、クライアント側とサーバー側の両方のトラックイベントに関する手順が含まれています。
ウェブアプリケーションではなくモバイルアプリケーション用のWebhooks(アクション)の宛先のみを設定する場合、Webhooks(アクション)を介してサーバー側のトラックイベントを送信するように設定する手順に沿って行うだけで済みます。
SegmentにおけるWebhooks(アクション)の宛先
SegmentにおけるWebhooks(アクション)の宛先は、Pendoウェブ(アクション)の宛先とは異なります。Pendoウェブ(アクション)の宛先は、ウェブアプリケーションからのクライアント側のデータのみをサポートします。Webhooks(アクション)の宛先を設定することで、サーバー側のデータを送信することができます。多くの場合、これはSegmentで「クラウドモード」と呼ばれることが一般的です。この設定により、指定したサーバー側のイベントが発生するたびに、外部URLにデータを送信できるようになります。
Webhooks(アクション)の宛先は、次のいずれかのエンドポイントを通じてサーバー側のトラックイベントを送信します。
- US環境(デフォルト):
https://data.pendo.io/data/segmentio/YOUR PENDO_API_KEY
- US1環境:
https://us1.data.pendo.io/data/segmentio/YOUR PENDO_API_KEY
- EU環境:
https://data.eu.pendo.io/data/segmentio/YOUR PENDO_API_KEY
- 日本環境:
https://data.jpnpendo.io/data/segmentio/YOUR PENDO_API_KEY
PendoのAPIキーは、Pendoが収集したデータをPendoサブスクリプションのアプリケーションにマッピングする32桁の文字列のことです。アプリケーション設定の[アプリの詳細(App Details)]タブでPendo APIキーを探してください。
ステップ1. Webhooks(アクション)の宛先を作成する
- [Workspace(ワークスペース)]>[Destinations(宛先)]>[My destinations(自分の宛先)]の順に進みます。
- [+ 宛先を追加(+ Add destination)]を選択します。これにより、[カタログ(Catalog)]が開きます。
- Webhooks(アクション)を検索して選択します。
- ページの右上にある[宛先を追加(Add destination)]を選択します。これにより、[データソースを選択(Select data source)]ページが開きます。
- 宛先を接続するJavaScriptデータソースを選択します。これは、Pendoに渡すサーバー側のトラックイベントを送信する任意のアプリケーションです。
- [次へ(Next)]を選択します。これにより、[セットアップ(設定)]ページが開きます。
- [宛先名(Destination name)]を追加します。
- ドロップダウンメニューから[設定を手動で入力(Fill in settings manually)]を選択します。
- 画面の右下で[宛先を作成(Create destination)]を選択します。これで、Segmentで新しく作成した宛先が表示されます。
ステップ2. Webhook(アクション)の宛先を設定する
- 新しい宛先で、ページの上部にある[マッピング(Mappings)]タブを開きます。
- [+ 新しいマッピング(+ New Mapping)]を選択します。
- [送信(Send)]アクションを検索して選択します。これにより、[送信]フォームが開きます。
- [マッピングして送信するイベントを選択(Select events to map and send)]で、
Event Type
、is
、Track
を選択します。これにより、一致するイベントを宛先に送信するトリガーが定義されます。</code"> - [テストイベントを追加(Add test event)]で、[ソースからテストイベントを読み込む(Load Test Event from Source)]を選択します。これにより、宛先にマッピング可能なフィールドをプレビューできます。
-
[マッピングを選択(Select mappings)]で、データソースのイベントフィールドの宛先へのマッピングを定義します。手順は以下のとおりです。
- データソースの最初のフィールドに、URLの1つを入力します。入力するURLは、Pendoをホストするデータ環境によって異なります。URLの末尾にある
YOUR_PENDO_API_KEY
を、実際のアプリケーションキーに置き換えます。このキーは[アプリケーション設定(application settings)]で見つけることができます。 - データソースの2番目のフィールドで、Webhooks(アクション)の[メソッド(Method)]として[POST]を選択します。
- データソースの次のフィールドで、Webhooks(アクション)の[バッチサイズ(Batch size)]として0(ゼロ)を選択します。
- ヘッダーは空白のままにします。
- [オブジェクトを選択(Select Object)]を選択し、次に[イベント変数(Event Variables)]で[イベント全体(The entire event)]を検索して選択します。これにより、
$event
がドロップダウンメニューに追加されます。 - データソースの最後のフィールドで[バッチ処理を有効にしますか?(Enable Batching?)]に対する回答として[いいえ(No)]を選択します。
- データソースの最初のフィールドに、URLの1つを入力します。入力するURLは、Pendoをホストするデータ環境によって異なります。URLの末尾にある
- [テストイベントを送信(Send test event)]で[テストイベントを宛先に送信(Send test event to destination)]を選択します。これにより、新しいマッピングを使用してイベントが送信され、Webhooks(アクション)のマッピングが正しいかを確認できます。「200 OK」というメッセージは、宛先がテストイベントを正常に処理したことを示しています。
- [保存(Save)]を選択します。これにより、宛先のページが開きます。
- [マッピング(Mappings)]タブで、[ステータス(Status)]列のトグルを使用してマッピングを有効にします。この操作により、Segmentは、トリガー条件に一致するイベントを、アプリケーションのデータソースからWebhooks(アクション)の宛先に送信し始めます。
ステップ3. Webhooks(アクション)の宛先を有効にする
- Webhooks(アクション)の宛先で、ページの上部にある[設定(Settings)]タブを開きます。
- [宛先を有効化(Enable Destination)]のトグルを使用して、ステップ2の[マッピング(Mappings)]タブの設定に基づいてSegmentにデータ送信を開始させます。
- ページの下部で[変更を保存(Save Changes)]を選択します。
データの重複を避ける
同じJavaScriptデータソースを使用してWebhook(アクション)とPendoウェブ(アクション)の両方を設定して有効にし、クライアント側とサーバー側のデータをPendoに送信できるようにした場合は、Pendoウェブ(アクション)で[トラックイベントを送信(Send Track Events)]をオフにする必要があります。これは、クライアント側の同じトラックイベントが2回送信されるのを防ぐためです。
- [Workspace(ワークスペース)]>[Destinations(宛先)]>[My destinations(自分の宛先)]の順に進みます。
- Pendoウェブ(アクション)の宛先を開きます。
- [マッピング]タブを開きます。
- [ステータス(Status)]列のトグルを使って[トラックイベントを送信(Send Track Events)]のマッピングをオフにします。
groupId
をプロパティとして渡すためにクライアント側のトラックイベントも編集する必要があります。これは、Pendoウェブ(アクション)の宛先がクライアント側のトラックイベントを送信しなくなるため、groupId
が自動的に含まれることがなくなるためです。したがって、groupId
をanalytics.track()
呼び出しの中で渡す必要があります。詳細と手順については、この記事の「クライアント側のトラックイベントをWebhook(アクション)を介して送信するように設定する」を参照してください。
トラックイベントを準備する
ウェブアプリケーションでWebhook(アクション)を設定して有効にした場合、SegmentからPendoにデータを送信する前に、Webhook(アクション)を通じてクライアント側とサーバー側のデータを送信するためのトラックイベントを準備する必要があります。モバイルアプリケーションの場合は、サーバー側のトラックイベントのみを準備する必要があります。
トラックイベントの準備においては、データがサポートされている形式でPendoに流れるようにする必要があります。[接続(Connections)]>[ソース(Sources)]>[デバッガー(Debugger)]にあるSegmentのソースデバッガーを使用して、イベントが宛先に到達する前にSegmentがどのようにイベントを送信するかを調査できます。このデバッガーはペイロード情報を表示します。
- クライアント側のトラックイベントは
track
呼び出しを通じて送信され、Segmentのソースデバッガーでanalytics.track()
として表示されます。 - サーバー側のトラックイベントはAPIを通じて送信されるため、SegmentのソースデバッガーでURLとして表示されます。
Webhook(アクション)を通じて送信されるクライアント側のトラックイベントを設定する
データの重複を避けるためにPendoウェブ(アクション)の宛先で[トラックイベントを送信(Send Track Event)]をオフにしている場合は、クライアント側のトラックイベントを設定する必要があります。この設定を行うと、アカウントIDをgroupId
に自動的に関連付けることができなくなります。そのため、ユーザーがgroupId
をクライアント側のトラックイベントのリクエスト本文内のproperties
に含める必要があります。そうすることで、トラックイベントのプロパティがSegmentのproperties
オブジェクトに送信されます。Segmentのcontext
オブジェクトにデータを渡しても、Pendoのデータには関連付けられません。
アプリケーションコード内のanalytics.track()
呼び出しを更新して、properties
オブジェクト内のgroupId
を渡し、イベントをアカウントに関連付けます。以下はその例です。
analytics.track('Track Event Name', {
exampleKeyName: "exampleValue",
groupId: "segmentaccountid"
})
Webhook(アクション)を通じて送信されるサーバー側のトラックイベントを設定する
Webhooks(アクション)の宛先を単独で使用しているか、Pendoウェブ(アクション)の宛先と一緒に使用しているかに関係なく、またはモバイルアプリケーション向け、もしくはウェブアプリケーション向けであるかに関係なく、サーバー側のトラックイベントをWebhooks(アクション)を通じて送信するように設定する必要があります。
- 訪問者IDの場合、サーバー側の
track
呼び出しを更新し、userId
を最上位のイベントペイロードに渡します。このIDがPendoの訪問者IDになります。 - アカウントIDの場合、
groupId
を最上位またはproperties
オブジェクト内にネストされた場所のいずれかに渡すことができます。このgroupId
がPendoのアカウントIDになります。
次のコードブロックは、訪問者IDとアカウントIDをPendoの最上位レベルのイベントに関連付けるtrack
呼び出しの例です。
curl --location 'https://api.segment.io/v1/track' \
--header 'Content-Type: application/json' \
--data-raw '{
"event": "Example Event Name",
"userId": "123",
"groupId": "account",
"properties": {
"exampleKeyName": "exampleValue"
},
"writeKey": “<YOUR-WRITE-KEY>”
}'
次のコードブロックは、アカウントIDをproperties
オブジェクト内にネストされているPendoのイベントに関連付けるtrack
呼び出しの例です。
curl --location 'https://api.segment.io/v1/track' \
--header 'Content-Type: application/json' \
--data-raw '{
"event": "Example Event Name",
"userId": "123",
"properties": {
"groupId": "account",
"exampleKeyName": "exampleValue"
},
"writeKey": “<YOUR-WRITE-KEY>”
}'