For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.
Webhooks ストリーミング
AmplitudeのWebhook連携により、AmplitudeのイベントとユーザーをカスタムWebhookに転送できます。これは、Amplitudeから選択したURLにイベントとユーザーデータのストリームを送信するための軽量な方法です。
ユースケース
- ワークフローの自動化: Webhookは、指定されたイベントや条件に基づいてアクションをトリガーすることにより、ワークフローを自動化し、異種システムを接続します。たとえば、ユーザーの同意の取得と記録を自動化するためにWebhookを作成します。ユーザーがサービス規約に同意すると、Webhookがトリガーされ、Amplitudeはイベントを記録します。
- 標準的なストリーミング統合を超える柔軟性: Webhookは標準的なストリーミング統合を超えるカスタマイズを提供し、リアルタイムのデータ交換やカスタマイズされた対話を実現します。たとえば、Webhookを使用してAmplitudeからBrazeに特定のイベントデータを送信できます。これは、ネイティブのAmplitude Brazeストリーミング連携ではサポートされていません。これには、
newslettersという名前の Amplitude ユーザープロパティ(marketとnewsletter_namesを含む配列)を、Braze に適した形式に変換する作業が含まれます。
連携を設定する
前提条件
AmplitudeからWebhookへのストリーミングを設定するには、以下の情報が必要です。
- **Webhook URL:**Amplitudeがイベントとユーザーを送信するために使用する送信先URLです。
- **ヘッダー情報:**Webhookリクエストに対して最大5つの追加ヘッダーを設定できます。
新しい同期を作成する
- Amplitudeデータで、**[カタログ]をクリックし、[宛先]**タブを選択します。
- 「Webhook」を検索し、「Webhook: イベント · ユーザープロパティ」を選択します。
- 同期名を入力し、[同期を作成] をクリックします。
Webhook URLを入力
Webhook の URL エンドポイントを入力します。 たとえば、https://mycompany.com/webhook。Amplitudeはイベントやユーザーを転送するための単一のIPアドレスを持っていないため、URLが任意のAmplitudeホストからペイロードを受信できることを確認してください。
Webhook コールが失敗した場合に何が起こるかについての詳細は、Amplitude のリトライメカニズムを参照してください。
ヘッダーを選択
各 Webhook 同期には、2 つのプリセットヘッダーがあります:
Content-Type:application/jsonUser-Agent:Amplitude/Webhook/1.0
これらのプリセットヘッダーの後で、さらに 5 つのヘッダーを定義できます。 新しいヘッダーを作成するには:
- 左側のテキストボックスにヘッダー名を入力します。
- 右側のテキストボックスにヘッダー値を入力します。
- 制限に達していない場合は、新しいヘッダー行が表示されます。
イベント転送の設定
[イベントの送信] の下でトグルを有効にすると(「イベントは Webhook に送信されます」)、イベントを Webhook にストリーミングできます。 有効にすると、Amplitudeはイベントを取り込む際に、そのイベントを自動的にWebhookへ転送します。この連携は、スケジュールに従った、またはオンデマンドでのイベント送信は行いません。
Webhookで受信したいイベントペイロードを定義します。次のことを選択できます。
- Amplitudeイベント形式に従ったデフォルトのAmplitudeペイロードを送信します。
- Apache FreeMarker テンプレートを使用してペイロードをカスタマイズします。 FreeMarker テンプレート言語のセクションを参照してください。
**[イベントの選択とフィルタリング]**で、送信するイベントを選択します。Webhook で必要なイベントのみを選択してください。 この連携は変換済みイベントをサポートしていません。
ユーザー転送の設定
**[ユーザーの送信]**の下で、トグルを有効にすると(「ユーザーはWebhookに送信されます」)、ユーザーとそのプロパティをWebhookにストリーミングできます。有効にされている場合、Amplitudeはイベントを受信したときにユーザーをWebhookに送信します。また、AmplitudeはAmplitude Identify API呼び出しをWebhookに転送します。 この連携は、ユーザーをスケジュール通りにまたはオンデマンドで送信することはありません。
- Webhook で受け取るユーザーペイロードを定義します。次のことを選択できます。
- Amplitudeユーザーフォーマットに従ったデフォルトのAmplitudeペイロードを送信します。
- Apache FreeMarker テンプレートを使用してペイロードをカスタマイズします。 FreeMarker テンプレート言語のセクションを参照してください。
同期を有効にする
設定に満足したら、ページ上部のステータスを「有効」に切り替え、[保存] をクリックします。
Amplitudeのリトライメカニズム
Amplitudeはまず各イベントまたはユーザーに対して配信を試みます。 失敗した場合、Amplitudeはエラーの有無に関係なく、4時間にわたってさらに9回試行します。 Amplitudeには、5xxエラーと429スロットリングに対する各試行時の再試行メカニズムもあります。 Amplitudeは以下のポリシーを使用して即座に再試行を試みます:
- 最大試行回数: 3。
- 初期待ち時間は 100 ミリ秒で指数関数的に再試行されます。待ち時間は毎回 2 倍になり、ジッタは 50% です。
- Amplitudeは4秒後に再度試行しません。
FreeMarkerテンプレート言語
AmplitudeはApache FreeMarkerテンプレートを使用して、Webhookに送信するイベントペイロードをカスタマイズします。
- FreeMarkerテンプレート言語(FTL)を使用して、Amplitudeのユーザーペイロードとイベントを、Webhookの送信先が期待する他のJSONスキーマに変換できます。
- Amplitudeのイベント形式。
- Amplitudeのユーザーフォーマット。 Identify API の使用方法によって一部のフィールドが異なる場合があります(たとえば、identify 呼び出しで
user_idの代わりにdevice_idを使用した場合、ペイロードにはuser_idが含まれません)。
FreeMarker に関するその他のヘルプ
詳細については、FreeMarker テンプレート作成ガイドを参照してください。
イベント送信用テンプレートの例
{
<#if input.user_id??>
"external_id" : "${input.user_id}",
</#if>
"name" : "${input.event_type}",
"time" : "${input.event_time}",
"properties" : {
"email" : "${input.user_properties.email!}"
}
}
このテンプレートを使用すると、次の JSON ペイロードが Webhook エンドポイントに送信されます。
{
"external_id" : "some user id", // if `input.user_id` exists
"name" : "click event",
"time" : "2022-10-24T20:07:32.123",
"properties" : {
"email" : "some@email.com"
}
}
ユーザーを送信するためのテンプレートの例
{
<#if input.user_id??>
"external_id" : "${input.user_id}",
</#if>
<#if input.device_id??>
"device_id" : "${input.device_id}",
</#if>
"time" : "${input.event_time}",
"properties" : {
"email" : "${input.user_properties.email!}"
}
}
このテンプレートを使用すると、次の JSON ペイロードが Webhook エンドポイントに送信されます。
{
"external_id" : "some user id", // if `input.user_id` exists
"device_id" : "some user id", // if `input.user_id` exists
"time" : "2022-10-24T20:07:32.123",
"properties" : {
"email" : "some@email.com"
}
}
イベント時刻形式の処理
Amplitude はデフォルトで時刻を "2022-02-28 20:07:01.795" などの UTC ISO-8601 形式の文字列として送信します。
これをさまざまな形式で変更するには:
- まず、日付時刻のフォーマットを設定します。
<#setting datetime_format="yyyy-MM-dd HH:mm:ss.S"> - 次の例を使用して、さまざまな時刻形式に変換します。
- カスタム文字列フォーマット:
"${input.event_time?datetime?string["dd.MM.yyyy, HH:mm"]}"- 結果として:
"28.02.2022, 20:07"
- 結果として:
- ミリ秒のタイムスタンプ:
"${input.event_time?datetime?long}"- 結果として:
"1646107621000"
- 結果として:
- カスタム文字列フォーマット:
テンプレートに関するその他の有用な情報
- FreeMarker は、
${ ... }構文を中括弧内の式の実際の値に置き換えます。 inputは、イベントをオブジェクトとして参照する予約済み変数です。これは、エクスポート API ドキュメントで定義されています。input.event_typeはイベントのevent_typeフィールドを指します。input.user_propertiesは、ユーザープロパティの辞書を参照します。input.user_properties.emailは、ユーザープロパティ内のemailフィールドを指します。- このディレクティブは、
ifフィールドが存在するかどうかをチェックします。 そうでない場合、FreeMarker は出力からこのフィールドを除外します。 input.user_properties.emailの後の式にある!マークは、inputにそのようなフィールドが存在しない場合のデフォルト値を指定します。デフォルト値を追加しない場合、出力には代わりに空の文字列が含まれます。
これは役に立ちましたか?