Skip to content

データ変換のユースケース

Braze データ変換と外部プラットフォーム例からのwebhookの組み合わせによる、以下のようなユースケースを検討してみましょう。

リード創出

自社のWebサイトで、リードを創出する Typeform フォームをホストしています。新規ユーザーがこのフォームに入力すると、次のことができます。

  • Brazeで新規ユーザーを作成する。
  • Brazeのメールリストに追加する。
  • 回答のいくつかをBrazeのカスタム属性として同期する。回答は、将来に向けてパーソナライズされたメッセージングエクスペリエンスを強化できる貴重なファーストパーティデータであるためです。

サービスチケットを開く

顧客が Zendesk などのプラットフォームでカスタマーサービスチケットを開く場合には、次のことができます。

  • Zendeskチケットが作成されたときに、Brazeにカスタムイベントを書き込む。
  • Zendeskに否定的なCSATレーティングが提供されたときに、イベントプロパティ付きのカスタムイベントをBrazeに書き込む。

Brazeとの連携

Brazeは、顧客インサイトおよびアンケートのプラットフォームである Iterate と連携しています。データ変換では、複数のカスタム属性を保存する既存の連携ではなく、1つの階層化カスタム属性の下にアンケートの回答を複数保存できます。

HubSpotの連絡先属性を同期する

HubSpotをCRMとして、Brazeをメッセージングに使用している場合、データ変換を使用してHubSpotのwebhookペイロードをBrazeの /users/track 更新に変換できます。

この例では、external_id の有無を確認し、受信したユーザーオブジェクトをコピーして、含まれるすべてのフィールドをカスタム属性としてBrazeに送信します。

1
2
3
4
5
6
7
8
9
10
11
12
function toBrazeTrackPayload(userObject) {
  if (!userObject.external_id) {
    throw new Error("Braze requires an 'external_id' field.");
  }

  return {
    attributes: [userObject]
  };
}

const brazePayload = toBrazeTrackPayload(payload);
return brazePayload;

変換コードの例

アンケートプラットフォームである Typeform から、アンケートの回答を受信するたびに送信される以下のサンプルペイロードを考えてみましょう。

変換コードの例に関連するスクリーンショット。

この例では、アンケートの回答を属性として取得し、アンケートが完了したことを示すイベントを書き込みます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
return {
  "attributes": [
    {
      "email": payload.form_response.hidden.email_address,
      "_update_existing_only": true,
      "home_city": payload.form_response.answers[0].text,
      "home_weather_rating": payload.form_response.answers[1].number
    }
  ],
  "events": [
    {
      "email": payload.form_response.hidden.email_address,
      "_update_existing_only": true,
      "name": "weather_survey_completed",
      "time": new Date(),
      "properties": {
        "form_id": payload.form_response.form_id
      }
    }
  ]
}

基本的な変換の例をさらに発展させ、if ステートメントを導入して、いずれかの回答に基づいてユーザーを分類します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
let nps_category;
let nps_number = payload.form_response.answers[1].number;
if (nps_number < 7) {
  nps_category = "Detractor";
} else if (nps_number == 7 || nps_number == 8) {
  nps_category = "Passive";
} else if (nps_number > 8) {
  nps_category = "Promoter";
}

return {
  "attributes": [
    {
      "email": payload.form_response.hidden.email_address,
      "_update_existing_only": true,
      "home_city": payload.form_response.answers[0].text,
      "home_weather_NPS_category": nps_category
    }
  ],
  "events": [
    {
      "email": payload.form_response.hidden.email_address,
      "_update_existing_only": true,
      "name": "weather_survey_completed",
      "time": new Date(),
      "properties": {
        "form_id": payload.form_response.form_id
      }
    }
  ]
};
New Stuff!