目次
- 1.基本仕様
- 2.JSONの概要
※こちらエンジニア向けの説明となります。予めご了承ください
Webhookノードを通過したカスタマーに関するデータは、通過のタイミングでJSON形式に変換されて、指定したAPIに向けてPOSTリクエストされます。 このため、Webhookノードを活用することで、例えば以下のような仕組みを実現できます。
- GENIEE MA(以下MA)のフォームキャンペーンによって MA内にカスタマーが登録されたタイミングで、別システムのAPIにwebhookリクエストを飛ばすことで、別システムでも MAカスタマーデータを蓄積する
- コンバージョンのように、カスタマーに対して特に重要度の高い情報が変更されるイベントと同時にwebhookリクエストを飛ばすことで、別システムに対して通知を行う
※処理の都合上、実際にはWebhookノードを通過した後、POSTリクエストまで数分程度のタイムラグを伴う可能性があります
※指定できるAPIエンドポイントは HTTPSスキームのみである点にご注意ください
1.基本仕様
リクエストヘッダー
- Content-Type
"application/json; charset=utf-8" で固定です - Authorization
「Bearer認証を使う」を選択した場合に設定されます。値は "Bearer {{設定したBearerトークン}}" のようになります
POSTリクエストに対するレスポンスについて
Webhookから送信されるHTTP POSTリクエストには、ステータスコード 200 を返す必要があります。 200 以外はすべて失敗とみなし、一定時間のスリープの後、リトライ(再リクエスト)を試みます。 HTTPステータスコード以外のレスポンス情報は、一切参照しません。
また、各POSTリクエストは3秒でタイムアウトし、その場合にもリトライを試みます。
リトライは、1つのWebhookからのPOSTリクエストに対し、リクエスト回数の合計が5回となるまで繰り返されます。 リクエストが失敗した場合は、初回は2秒スリープし、以降は以前の倍の時間スリープ するアルゴリズム(Exponential Backoff)に従って、リトライ上限までリトライを繰り返します。
2.JSONの概要
カスタマーのJSONデータの具体例を以下に示します。 トップレベルに data が存在し、直下に標準フィールド群を束ねる standard_fields 、カスタムフィールド群を束ねる custom_fields と続きます。
{
"data": {
"standard_fields": {
"account_id": {
"type": "number",
"value": 999
},
"customer_id": {
"type": "string",
"value": "7917ae89-6565-46a8-81d4-c1333c215c32"
},
"email": {
"type": "string",
"value": "sample@geniee.co.jp"
},
"first_name": {
"type": "string",
"value": "太郎"
},
"first_name_pronunciation": {
"type": "string",
"value": "たろう"
},
"last_name": {
"type": "string",
"value": "ジーニー"
},
"last_name_pronunciation": {
"type": "string",
"value": "じーにー"
},
"phone_number": {
"type": "string",
"value": "09012345678"
},
"score": {
"type": "number",
"value": 64
},
"registered_at": {
"type": "string",
"value": "2020-01-09 14:53:32"
},
"bounce_flag": {
"type": "boolean",
"value": false
}
},
"custom_fields": {
"original_member_id": {
"type": "string",
"value": "0190003"
},
"gpa": {
"type": "number",
"value": 3.2
},
"entered_date": {
"type": "date",
"value": "2019-04-01"
},
"final_visit_time": {
"type": "datetime",
"value": "2019-03-04 10:30:00"
},
"academic_background": {
"type": "s_choice",
"value": "専門学校"
},
"preferred_languages": {
"type": "m_choice",
"value": [
"Go",
"Ruby"
]
}
}
}
}
ラッパーオブジェクトの説明表
キー | バリュー |
---|---|
data |
standard_fields 、 custom_fields をキーとするオブジェクトです。これらのキーは必ず存在します。 |
standard_fields |
標準フィールドに関するデータを含むオブジェクトです。詳しくは後述します。 |
custom_fields |
カスタムフィールドに関するデータを含むオブジェクトです。詳しくは後述します。 |
標準・カスタムフィールドとキー名の対応
標準フィールド | キー名 |
---|---|
アカウントID | account_id |
カスタマーID | customer_id |
姓 | last_name |
姓(よみがな) | last_name_pronunciation |
名 | first_name |
名(よみがな) | first_name_pronunciation |
メールアドレス | email |
電話番号 | phone_number |
スコア | score |
登録日時 | registered_at |
メール配信可否(false : 配信可能、 true : 配信不可) |
bounce_flag |
※カスタムフィールドのキー名は、カスタムフィールドの DB上のフィールド名 と一致します
※標準フィールドに関するこれらのキーは必ず存在します( データが登録されていない場合、後述するフィールドオブジェクトの value に格納される値は空文字列となります)
※カスタムフィールドについては、カスタマーにデータが紐付いている場合のみJSONに含まれます
例)ある MAアカウントで optional_field というカスタムフィールドが存在しても、 Webhookノードを通過したカスタマーの optional_field が何も設定されていない場合は、 JSONには optional_field をキーとしたオブジェクトは含まれません。 よって、カスタムフィールドにデータが登録されていないカスタマーの custom_fields オブジェクトは、空のオブジェクト {} となります
フィールドオブジェクトについて
標準フィールド・カスタムフィールドを問わず、各フィールドのデータは以下の表で説明される type、 value という2つのキーからなるフィールドオブジェクトで表されます。
キー | バリュー |
---|---|
type |
フィールドの型に関する情報を 文字列型 で格納します。 |
value |
フィールドの型に応じた形式で、フィールドの値が格納されます。 |
typeは以下の6種です。
type |
フィールドの型 | 説明 |
---|---|---|
string |
文字列 | フィールドのデータが 文字列型 の値で格納されます。 |
number |
数値 | フィールドのデータが 数値型 の値で格納されます。 |
date |
日付 | フィールドのデータが YYYY-mm-dd 形式の文字列型 の値で格納されます。 |
datetime |
日時 | フィールドのデータが YYYY-mm-dd HH:MM:SS 形式の文字列型 の値で格納されます。 |
s_choice |
単一選択 | フィールドのデータが選択された単一の値について、 選択項目のラベルテキストの文字列型 の値で格納されます。 |
m_choice |
複数選択 | フィールドのデータが選択された複数の値について、 選択項目のラベルテキストの文字列型の値の配列型 の値で格納されます。 |
boolean |
論理型 |
true もしくは false の値をとります。 |
※標準フィールドの type は、 score は number で bounce_flag は boolean、そしてその他はすべて string です
※現在 type: boolean のフィールドは、標準フィールドの bounce_flag のみです