コンテンツにスキップ

ユーザー属性オブジェクト

属性オブジェクトにフィールドを含むAPIリクエストは、指定されたユーザープロファイルに指定された値で、その名前の属性を作成または更新します。

Brazeユーザープロファイルフィールド名(以下にリストされているもの、またはBrazeユーザープロファイルフィールドのセクションにリストされているもの)を使用して、ダッシュボードのユーザープロファイル上の特別な値を更新するか、独自のカスタム属性データをユーザーに追加します。

オブジェクトのボディ

{
  // One of "external_id" or "user_alias" or "braze_id" or "email" or "phone" is required
  "external_id" : (optional, string) see external user ID,
  "user_alias" : (optional, User alias object),
  "braze_id" : (optional, string) Braze user identifier,
  "email": (optional, string) User email address,
  "phone": (optional, string) User phone number,
  // Setting this flag to true puts the API in "Update Only" mode.
  // When using a "user_alias", "Update Only" defaults to true.
  "_update_existing_only" : (optional, boolean),
  // See note regarding anonymous push token imports
  "push_token_import" : (optional, boolean),
  // Braze User Profile Fields
  "first_name" : "Alex",
  "email" : "[email protected]",
  // Custom Attributes
  "my_custom_attribute" : value,
  "my_custom_attribute_2" : {"inc" : int_value},
  "my_array_custom_attribute":[ "Value1", "Value2" ],
  // Adding a new value to an array custom attribute
  "my_array_custom_attribute" : { "add" : ["Value3"] },
  // Removing a value from an array custom attribute
  "my_array_custom_attribute" : { "remove" : [ "Value1" ]},
  // Array of objects custom attribute
  "my_array_of_objects_attribute": [{"key": "value"}, {"key": "value"}],
  // Adding to an array of objects (nested custom attribute syntax)
  "my_array_of_objects_attribute": { "$add": [{"key": "value"}] },
  // Removing from an array of objects (nested custom attribute syntax)
  "my_array_of_objects_attribute": { "$remove": [{"$identifier_key": "key", "$identifier_value": "value"}] },
}

プロファイル属性を削除するには、null に設定します。external_id や user_alias などの一部のフィールドは、ユーザープロファイルに追加された後は削除できません。

識別子の解決

匿名プッシュトークンのインポートを実行する場合を除き、各ユーザー属性オブジェクトには少なくとも1つの識別子(external_id、user_alias、braze_id、email、または phone)を含める必要があります。可能であれば、どのユーザープロファイルが更新または作成されるかの曖昧さを避けるため、オブジェクトごとに1つの識別子のみを含めてください。

識別子を使用する際は、以下の点に注意してください。

  • external_id と user_alias は相互に排他的です。 同じユーザー属性オブジェクトに両方を含めるとエラーが返されます。すでに external_id を持つユーザーにエイリアスを追加するには、/users/alias/new エンドポイントを使用してください。
  • email は phone よりも優先されます。 同じオブジェクトに email と phone の両方が含まれている場合、Brazeは email を識別子として使用します。これは、電話番号が別のプロファイルに属していたとしても、そのメールアドレスに関連付けられたユーザープロファイルに属性が適用されることを意味します。

既存プロファイルのみの更新

Brazeで既存のユーザープロファイルのみを更新したい場合は、リクエストのボディ内で _update_existing_only キーに true の値を渡す必要があります。この値が省略された場合、external_id がまだ存在しなければ、Brazeは新しいユーザープロファイルを作成します。

プッシュトークンのインポート

プッシュトークンをBrazeにインポートする前に、インポートが必要かどうかを再確認してください。Braze SDKが導入されると、APIを通じてアップロードする必要なく、プッシュトークンが自動的に処理されます。

APIを通じてアップロードする必要がある場合、識別済みユーザーまたは匿名ユーザーのいずれかに対してアップロードできます。つまり、external_id が存在するか、匿名ユーザーの場合は push_token_import フラグを true に設定する必要があります。

push_token_import を true に指定する場合:

  • external_id と braze_id は指定しないでください
  • 属性オブジェクトにはプッシュトークンが含まれている必要があります
  • トークンがすでにBrazeに存在する場合、リクエストは無視されます。存在しない場合、Brazeは各トークンに対して一時的な匿名ユーザープロファイルを作成し、これらの個人にメッセージを送り続けることを可能にします

インポート後、各ユーザーがBraze対応バージョンのアプリを起動すると、BrazeはインポートされたプッシュトークンをそのユーザーのBrazeユーザープロファイルに自動的に移動し、一時的なプロファイルをクリーンアップします。

Brazeは月に一度、push_token_import フラグが設定されているがプッシュトークンを持たない匿名プロファイルをチェックします。匿名プロファイルにプッシュトークンがなくなった場合、Brazeはそのプロファイルを削除します。ただし、匿名プロファイルにまだプッシュトークンがある場合(実際のユーザーがそのプッシュトークンを持つデバイスにまだログインしていないことを示唆)、Brazeは何も行いません。

詳細については、プッシュトークンの移行を参照してください。

カスタム属性のデータ型

以下のデータ型をカスタム属性として保存できます。

データ型 注意事項
配列 カスタム属性の配列がサポートされています。要素を追加すると、配列の末尾に追加されます。要素がすでに存在する場合は、現在の位置から末尾に移動されます。

一意の値のみが保存されます。たとえば、['hotdog','hotdog','hotdog','pizza'] をインポートすると、['hotdog', 'pizza'] になります。

配列を直接設定(たとえば "my_array_custom_attribute":[ "Value1", "Value2" ])したり、既存の配列に "my_array_custom_attribute" : { "add" : ["Value3"] } で追加したり、"my_array_custom_attribute" : { "remove" : [ "Value1" ]} で値を削除したりできます。

配列のデフォルトおよび最大要素数は500です。最大配列数はBrazeダッシュボードのデータ設定 > カスタム属性で更新できます。詳細については、配列を参照してください。
オブジェクト配列 オブジェクトの配列を使用して、各オブジェクトが属性のセットを含むオブジェクトのリストを定義します。この型を使用して、ホテルの宿泊、購入履歴、設定など、ユーザーに関連する複数の関連データセットを保存します。

たとえば、ユーザープロファイルに hotel_stays というカスタム属性を配列として定義し、各オブジェクトが個別の宿泊を表し、hotel_name、check_in_date、nights_stayed などの属性を持つようにします。

オブジェクト配列にはアイテム数の制限はありませんが、最大サイズは100 KBです。更新により配列がこの制限を超える場合、Brazeは更新を破棄し、属性は変更されません。

/users/track およびSDKペイロードでは、オブジェクト配列の操作に $add、$remove、$update を使用します。スカラー値を含む通常の配列カスタム属性には add と remove($ なし)を使用します。詳細については、オブジェクト配列のAPIの例、オブジェクト配列のSDKの例、およびオブジェクト配列の例を参照してください。
ブール値 true または false
日付 ISO 8601形式(推奨)または以下のいずれかの形式で日付を保存します。
- yyyy-MM-ddTHH:mm:ss:SSSZ
- yyyy-MM-ddTHH:mm:ss
- yyyy-MM-dd HH:mm:ss
- yyyy-MM-dd
- MM/dd/yyyy
- ddd MM dd HH:mm:ss.TZD YYYY

「T」は時間指定子であり、プレースホルダーではないため、変更または削除しないでください。

リストされたいずれの形式にも一致しない日付の値は、Timeデータ型ではなく文字列としてユーザープロファイルに保存されます。これは、時間ベースのセグメンテーションフィルター(「以前」、「以後」、「過去X日間」など)がそれらの属性で機能しないことを意味します。たとえば、Mar 26 2026 06:12 PM +00:00 はサポートされている形式に一致しないため、文字列として保存されます。これを避けるには、ISO 8601形式(2026-03-26T18:12:00Z など)を使用してください。

タイムゾーンのない時間属性はデフォルトで午前0時UTCになります(ダッシュボードでは会社のタイムゾーンにおける午前0時UTC相当として表示されます)。タイムゾーンを指定するには、タイムスタンプにUTCオフセットを追加します(たとえば、ESTの場合は 2024-11-10T18:00:00-05:00)。タイムゾーンオフセットが欠落しているか、形式が正しくない場合、値はデフォルトでUTCになります。

時間はダッシュボードで会社のタイムゾーンで表示されます。たとえば、2024-11-10T18:00:00-05:00(午後6時EST)は、会社の設定されたタイムゾーンの相当する時間として表示されます。

将来のタイムスタンプを持つイベントはデフォルトで現在の時間になります。

通常のカスタム属性の場合、年が0未満または3000を超える場合、Brazeは値を文字列としてユーザープロファイルに保存します。
浮動小数点数 浮動小数点数のカスタム属性は、小数点を含む正または負の数値です。たとえば、アカウント残高や製品・サービスに対するユーザー評価を保存するために浮動小数点数を使用できます。
整数 “inc” フィールドと追加する量を持つオブジェクトを割り当てることで、整数カスタム属性をインクリメントできます。

例:"my_custom_attribute_2" : {"inc" : int_value},
階層化カスタム属性 階層化カスタム属性は、別の属性のプロパティとして属性のセットを定義します。カスタム属性オブジェクトを定義する際に、そのオブジェクトに属性のセットを追加します。詳細については、階層化カスタム属性を参照してください。
文字列 文字列カスタム属性は、テキストデータを保存するために使用される文字のシーケンスです。たとえば、姓名、メールアドレス、設定を保存するために文字列を使用できます。
オブジェクト配列の例

このオブジェクト配列を使用すると、宿泊内の特定の条件に基づいてセグメントを作成し、Liquidテンプレートを使用して各宿泊のデータでメッセージをパーソナライズできます。

{"hotel_stays": [
  { "hotel_name": "Ocean View Resort", "check_in_date": "2023-06-15", "nights_stayed": 5 },
  { "hotel_name": "Mountain Lodge", "check_in_date": "2023-09-10", "nights_stayed": 3 }
]}

$add、$remove、$update を使用したオブジェクト配列の例については、オブジェクト配列のAPIの例およびオブジェクト配列のSDKの例を参照してください。

Brazeユーザープロファイルフィールド

ユーザープロファイルフィールド データ型の仕様
alias_name (string)
alias_label (string)
braze_id (string, optional) SDKによってユーザープロファイルが認識されると、関連付けられた braze_id を持つ匿名ユーザープロファイルが作成されます。braze_id はBrazeによって自動的に割り当てられ、編集できず、デバイス固有です。
country (string) 国コードは ISO-3166-1 alpha-2標準でBrazeに渡す必要があります。APIは異なる形式で受信した国のマッピングをベストエフォートで行います。たとえば、「Australia」は「AU」にマッピングされる場合があります。ただし、入力が指定の ISO-3166-1 alpha-2標準に一致しない場合、国の値は NULL に設定されます。

CSVインポートまたはAPIによってユーザーに country を設定すると、BrazeがSDKを通じてこの情報を自動的にキャプチャすることを防ぎます。
current_location (object) {“longitude”: -73.991443, “latitude”: 40.753824} の形式
date_of_first_session (ユーザーが初めてアプリを使用した日付) ISO 8601形式または以下のいずれかの形式の文字列:
- yyyy-MM-ddTHH:mm:ss:SSSZ
- yyyy-MM-ddTHH:mm:ss
- yyyy-MM-dd HH:mm:ss
- yyyy-MM-dd
- MM/dd/yyyy
- ddd MM dd HH:mm:ss.TZD YYYY
date_of_last_session (ユーザーが最後にアプリを使用した日付) ISO 8601形式または以下のいずれかの形式の文字列:
- yyyy-MM-ddTHH:mm:ss:SSSZ
- yyyy-MM-ddTHH:mm:ss
- yyyy-MM-dd HH:mm:ss
- yyyy-MM-dd
- MM/dd/yyyy
- ddd MM dd HH:mm:ss.TZD YYYY
dob (生年月日) 「YYYY-MM-DD」形式の文字列。たとえば、1980-12-21。
email (string)
email_subscribe (string) 利用可能な値は「opted_in」(メールメッセージの受信を明示的に登録)、「unsubscribed」(メールメッセージを明示的にオプトアウト)、「subscribed」(オプトインもオプトアウトもしていない)です。
email_open_tracking_disabled (boolean) true または false を受け付けます。true に設定すると、このユーザーに今後送信されるすべてのメールに開封トラッキングピクセルが追加されなくなります。
email_click_tracking_disabled (boolean) true または false を受け付けます。true に設定すると、このユーザーに送信される今後のメール内のすべてのリンクのクリックトラッキングが無効になります。
external_id (string) ユーザープロファイルの一意の識別子。external_id が割り当てられると、Brazeはユーザーのデバイス間でユーザープロファイルを識別します。未知のユーザープロファイルにexternal_idを初めて割り当てる際、Brazeは既存のすべてのユーザープロファイルデータを新しいユーザープロファイルに移行します。
facebook id(string)、likes(文字列の配列)、num_friends(integer)のいずれかを含むハッシュ。
first_name (string)
gender (string) 「M」、「F」、「O」(その他)、「N」(該当なし)、「P」(回答しない)、またはnull(不明)。
home_city (string)
language (string) 言語は ISO-639-1標準でBrazeに渡す必要があります。サポートされている言語については、受け入れ可能な言語のリストを参照してください。

CSVインポートまたはAPIによってユーザーに language を設定すると、BrazeがSDKを通じてこの情報を自動的にキャプチャすることを防ぎます。
last_name (string)
marked_email_as_spam_at (string) ユーザーのメールがスパムとしてマークされた日付。ISO 8601形式または以下のいずれかの形式で表示されます:
- yyyy-MM-ddTHH:mm:ss:SSSZ
- yyyy-MM-ddTHH:mm:ss
- yyyy-MM-dd HH:mm:ss
- yyyy-MM-dd
- MM/dd/yyyy
- ddd MM dd HH:mm:ss.TZD YYYY
phone (string) 電話番号は E.164 形式で提供することをお勧めします。詳細については、ユーザーの電話番号を参照してください。
push_subscribe (string) 利用可能な値は「opted_in」(プッシュメッセージの受信を明示的に登録)、「unsubscribed」(プッシュメッセージを明示的にオプトアウト)、「subscribed」(オプトインもオプトアウトもしていない)です。
push_tokens app_id と token 文字列を持つオブジェクトの配列。オプションで、このトークンが関連付けられているデバイスの device_id を指定できます。たとえば、[{"app_id": App Identifier, "token": "abcd", "device_id": "optional_field_value"}]。device_id が提供されない場合、ランダムに生成されます。
subscription_groups subscription_group_id と subscription_state 文字列を持つオブジェクトの配列。たとえば、[{"subscription_group_id" : "subscription_group_identifier", "subscription_state" : "subscribed"}]。subscription_state の利用可能な値は「subscribed」と「unsubscribed」です。
time_zone (string) IANAタイムゾーンデータベースのタイムゾーン名(たとえば、「America/New_York」または「Eastern Time (US & Canada)」)。有効なタイムゾーン値のみが設定されます。
twitter id(integer)、screen_name(string、X(旧Twitter)ハンドル)、followers_count(integer)、friends_count(integer)、statuses_count(integer)のいずれかを含むハッシュ。

このAPIを通じて明示的に設定された言語の値は、BrazeがデバイスからSDKを通じて自動的に受信するロケール情報よりも優先されます。

ユーザー属性のリクエスト例

この例には、APIコールごとに許可される75個の属性オブジェクトのうち、4つのユーザー属性オブジェクトが含まれています。

POST https://YOUR_REST_API_URL/users/track
Content-Type: application/json
Authorization: Bearer YOUR-REST-API-KEY
{
  "attributes" : [
    {
      "external_id" : "user1",
      "first_name" : "Alex",
      "has_profile_picture" : true,
      "dob": "1988-02-14",
      "music_videos_favorited" : { "add" : [ "calvinharris-summer" ], "remove" : ["nickiminaj-anaconda"] }
    },
    {
      "external_id" : "user2",
      "first_name" : "Lee",
      "has_profile_picture" : false,
      "push_tokens": [{"app_id": "Your App Identifier", "token": "abcd", "device_id": "optional_field_value"}]

    },
    {
      "user_alias" : { "alias_name" : "device123", "alias_label" : "my_device_identifier"},
      "first_name" : "Yuri",
      "has_profile_picture" : false
    },
    {
      "external_id": "user3",
      "subscription_groups" : [{"subscription_group_id" : "subscription_group_identifier", "subscription_state" : "subscribed"}]
    }
  ]
}

プッシュトークンの移行

Braze を統合する前にプッシュ通知を送信していた場合(自社で送信していた場合でも、別のプロバイダーを通じて送信していた場合でも)、プッシュトークンの移行を行うことで、登録済みのプッシュトークンを持つユーザーに引き続きプッシュ通知を送信できます。

SDK による自動移行

Braze SDKを統合すると、オプトインしたユーザーのプッシュトークンは、次回アプリを開いたときに自動的に移行されます。それまでは、Braze を通じてそれらのユーザーにプッシュ通知を送信することはできません。

または、プッシュトークンを手動で移行することで、ユーザーにより迅速にリエンゲージすることもできます。

Web トークンに関する注意事項

Web プッシュトークンの性質上、Web でプッシュを実装する際は以下の点に注意してください。

注意事項 詳細
サービスワーカー デフォルトでは、Web SDKは ./service-worker でサービスワーカーを検索します(manageServiceWorkerExternally や serviceWorkerLocation などの別のオプションが指定されていない場合)。サービスワーカーが正しく設定されていない場合、ユーザーのプッシュトークンが期限切れになる可能性があります。
期限切れトークン ユーザーが60日以内に Web セッションを開始しなかった場合、プッシュトークンは期限切れになります。Braze は期限切れのプッシュトークンを移行できないため、リエンゲージするにはプッシュプライマーを送信する必要があります。

API による手動移行

手動プッシュトークン移行は、以前作成されたこれらのキーを API を通じて Braze プラットフォームにインポートするプロセスです。

users/track エンドポイントを使用して、iOS(APNs)および Android(FCM)トークンをプログラムでプラットフォームに移行します。識別済みユーザー(external ID が関連付けられているユーザー)と匿名ユーザー(external ID のないユーザー)の両方を移行できます。

プッシュトークンの移行時にアプリの app_id を指定して、適切なプッシュトークンを適切なアプリに関連付けます。各アプリ(iOS、Android など)にはそれぞれ固有の app_id があり、API キーページの識別セクションで確認できます。正しいプラットフォームの app_id を使用してください。

識別済みユーザーの場合、push_token_import フラグを false に設定(またはパラメーターを省略)し、ユーザーの attributes オブジェクトに external_id、app_id、token の値を指定します。

例:

curl --location --request POST 'https://rest.iad-01.braze.com/users/track' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-API-KEY-HERE' \
--data-raw '{
  "attributes" : [
    {
      "push_token_import" : false,
      "external_id": "example_external_id",
      "country": "US",
      "language": "en",
      "YOUR_CUSTOM_ATTRIBUTE": "YOUR_VALUE",
      "push_tokens": [
        {"app_id": "APP_ID_OF_OS", "token": "PUSH_TOKEN_STRING"}
      ]
    }
  ]
}'

他のシステムからプッシュトークンをインポートする場合、external_id が常に利用できるとは限りません。その場合は、push_token_import フラグを true に設定し、app_id と token の値を指定します。Braze は各トークンに対して一時的な匿名ユーザープロファイルを作成し、これらのユーザーに引き続きメッセージを送信できるようにします。トークンがすでに Braze に存在する場合、リクエストは無視されます。

例:

curl --location --request POST 'https://rest.iad-01.braze.com/users/track' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-API-KEY-HERE' \
--data-raw '{
  "attributes": [
    {
      "push_token_import" : true,
      "email": "[email protected]",
      "country": "US",
      "language": "en",
      "YOUR_CUSTOM_ATTRIBUTE": "YOUR_VALUE",
      "push_tokens": [
        {"app_id": "APP_ID_OF_OS", "token": "PUSH_TOKEN_STRING", "device_id": "DEVICE_ID"}
      ]
    },

    {
      "push_token_import" : true,
      "email": "[email protected]",
      "country": "US",
      "language": "en",
      "YOUR_CUSTOM_ATTRIBUTE_1": "YOUR_VALUE",
      "YOUR_CUSTOM_ATTRIBUTE_2": "YOUR_VALUE",
      "push_tokens": [
        {"app_id": "APP_ID_OF_OS", "token": "PUSH_TOKEN_STRING", "device_id": "DEVICE_ID"}
      ]
    }
  ]
}'

インポート後、匿名ユーザーが Braze 対応バージョンのアプリを起動すると、Braze はインポートされたプッシュトークンを自動的にそのユーザーの Braze ユーザープロファイルに移動し、一時プロファイルをクリーンアップします。

Braze は月に1回、push_token_import フラグが設定されていてプッシュトークンを持たない匿名プロファイルを確認します。匿名プロファイルにプッシュトークンがなくなった場合、Braze はそのプロファイルを削除します。ただし、匿名プロファイルにまだプッシュトークンがある場合(実際のユーザーがそのプッシュトークンのあるデバイスにまだログインしていないことを示唆します)、Braze は何も行いません。

iOS プッシュトークンのインポート

/users/track で iOS プッシュトークンを移行する場合、プッシュトークンに gateway フィールドは設定されません。Braze は API を通じてインポートされたトークンが有効なフォアグラウンドプッシュトークンであると見なしますが、そのトークンがどの APNs 環境に属するかは判別できません。

gateway フィールドがない場合、Braze はプッシュ通知の送信時にアプリの設定済みフォールバック環境設定を使用します。トークンの実際の環境が設定されたフォールバックと異なる場合、BadDeviceToken エラーが発生する可能性があります。たとえば、開発トークンが本番ゲートウェイを通じて送信された場合、失敗します。

配信の問題を回避するために:

  • Braze ダッシュボードのアプリの環境設定が、インポートするトークンと一致していることを確認してください。
  • 本番アプリの場合は、本番トークンのみをインポートしてください。
  • テスト環境の場合は、アプリの設定とインポートされたトークンの両方が開発環境を使用していることを確認してください。

Android プッシュトークンのインポート

Braze SDKの統合が完了する前にユーザーに Android プッシュ通知を送信する必要がある場合は、キーと値のペアを使用してプッシュ通知を検証してください。

プッシュペイロードを処理して表示するレシーバーが必要です。レシーバーにプッシュペイロードを通知するには、プッシュキャンペーンに必要なキーと値のペアを追加します。これらのペアの値は、Braze の前に使用していた特定のプッシュパートナーによって異なります。

よくある質問

スパムとして扱われたユーザーやメッセージングからブロックされたユーザーを見つけるにはどうすればよいですか?

Brazeはダッシュボードに専用のスパムリストを提供していません。Brazeは、500万を超えるセッション、20,000を超える異なるカスタムイベント名、または購入における20,000を超える異なる製品名を持つ個々のユーザープロファイル(「ダミーユーザー」)をブロックし、SDKとREST APIの両方からそのプロファイルに対するすべての受信データの取り込みを停止します。識別子がブロックされている場合、/users/trackはエラー"provided external_id is blacklisted and disallowed"を返すことがあります。この文言はAPIレスポンスからそのまま引用したものです。過剰なセッションによりブロックされたプロファイルを見つけるには、セッション数フィルターを5,000,000超に設定したセグメントを作成し、セグメントをCSVとしてエクスポートし、エンゲージメント > ユーザー検索またはエンドポイント/users/export/idsでプロファイルフィールドを照合してください。異なるカスタムイベント名や製品名に対する同等のフィルターはないため、それらの理由でブロックされたプロファイルを特定するにはBrazeアカウントマネージャーにお問い合わせください。詳細については、スパムブロックを参照してください。

New Stuff!