eコマースイベントの記録
Braze Android、Swift、Web SDKで型付きイベントクラスと
logEcommerceEventを使用して、eコマース推奨イベントを記録する方法を説明します。イベントプロパティスキーマ、プラットフォーム機能、取り込みバリデーションについては、推奨イベントおよびイベントのバリデーションとトラブルシューティングを参照してください。

一覧にないラッパーSDKの場合は、代わりに該当するネイティブAndroidまたはSwiftメソッドを使用してください。
イベントスキーマ
6つのe コマース推奨イベントは、すべてのプラットフォームで共通の注文レベルのスキーマを使用します。各イベントのペイロードを作成する際は、以下のプロパティテーブルを参照してください。検証動作の詳細とREST APIの例を含む正式なスキーマについては、推奨イベントを参照してください。セグメンテーション、キャンバステンプレート、レポートなどのプラットフォーム機能については、e コマースイベントの使用方法を参照してください。
ユーザーが商品詳細ページを閲覧したときにトリガーします。
イベントプロパティ
| プロパティ名 | データタイプ | 必須 | 説明 |
|---|---|---|---|
product_id |
文字列 | はい | 一意の商品識別子 (SKUやアイテムIDなど)。 |
product_name |
文字列 | はい | 商品の表示名。 |
variant_id |
文字列 | はい | 商品バリアントの識別子 (shirt_medium_blue など)。 |
image_url |
文字列 | いいえ | 商品画像のURL。 |
product_url |
文字列 | いいえ | 詳細情報を確認できる商品ページのURL。 |
price |
浮動小数点数 | はい | 閲覧時点でのバリアントの単価。 |
currency |
文字列 | はい | 3文字のISO 4217コード (USD や EUR など)。 |
source |
文字列 | はい | イベントの発生元 (web、ios、android など)。 |
type |
文字列の配列 | いいえ | 再入荷アラートや値下げアラートでBrazeのカタログトリガー機能を使用する場合に必須です。使用可能な値: "price_drop"、"back_in_stock"。 |
catalog_name |
文字列 | いいえ | このイベントから作成された再入荷または値下げの購読が属するカタログ。省略した場合は、ワークスペースのフォールバックカタログが使用されます。トップレベルのプロパティである必要があり、metadata 内にネストされた catalog_name は無視されます。 |
metadata |
オブジェクト | いいえ | 柔軟なキーと値のペア (category や brand など)。 |
ユーザーのカートの内容が変更されるたびにトリガーします。カート全体の置き換え (action を省略するか replace に設定) または増分更新 (add または remove) を使用します。
イベントプロパティ
| プロパティ | データタイプ | 必須 | 説明 |
|---|---|---|---|
cart_id |
文字列 | はい | カートの一意の識別子。ユーザーのカートのマッピングのため、カート、チェックアウト、注文の各イベントで共有されます。チェックアウトまたは注文確定後の再利用ルールについては、チェックアウトまたは注文後のカートIDを参照してください。 |
action |
文字列 | いいえ | add (数量を増やすか明細を追加)、remove (数量を減らす。0 になると明細を削除)、または replace (カート全体の置き換え。action を省略した場合と同じ)。 |
total_value |
浮動小数点数 | 条件付き | action を省略した場合または replace の場合は必須で、カートの合計として保存されます。action が add または remove の場合は任意です。action が add または remove の場合、この値はカートに保存されず、以前に保存された合計もクリアされません。カートが add または remove のみで更新された場合、total_value は保存されず、{% shopping_cart %} タグは各商品の price に quantity を掛けた値を合計します。 |
subtotal_value |
浮動小数点数 | いいえ | カートの小計 (割引後、税金・送料前)。カートには保存されず、{% shopping_cart %} Liquidタグからは利用できません。 |
tax |
浮動小数点数 | いいえ | カートに適用される税金の合計。カートには保存されず、{% shopping_cart %} Liquidタグからは利用できません。 |
shipping |
浮動小数点数 | いいえ | カートの送料の合計。カートには保存されず、{% shopping_cart %} Liquidタグからは利用できません。 |
currency |
文字列 | はい | 3文字のISO 4217コード。 |
products |
配列 | はい | この更新の明細項目。商品プロパティのテーブルを参照してください。 |
source |
文字列 | はい | イベントの発生元。 |
metadata |
オブジェクト | いいえ | イベントレベルの追加データ用の柔軟なキーと値のペア。 |
商品プロパティ (products[])
| プロパティ | データタイプ | 必須 | 説明 |
|---|---|---|---|
product_id |
文字列 | はい | 一意の商品識別子。 |
product_name |
文字列 | はい | 商品の表示名。 |
variant_id |
文字列 | はい | バリアントの識別子。 |
image_url |
文字列 | いいえ | 商品画像のURL。 |
product_url |
文字列 | いいえ | 商品ページのURL。 |
quantity |
整数 | はい | 全体置き換えの場合は、この明細のカート内の数量。add または remove の場合は、追加または削除する数量。 |
price |
浮動小数点数 | はい | バリアントの単価。 |
metadata |
オブジェクト | いいえ | 柔軟なキーと値のペア (color や size など)。 |
ユーザーがチェックアウトフローを開始したときにトリガーします。
イベントプロパティ
| プロパティ | データタイプ | 必須 | 説明 |
|---|---|---|---|
checkout_id |
文字列 | はい | チェックアウトセッションの一意の識別子。 |
cart_id |
文字列 | いいえ | カートの識別子。ユーザーのカートのマッピングのため、カート、チェックアウト、注文の各イベントで共有されます。 |
total_value |
浮動小数点数 | はい | チェックアウトの合計金額。 |
subtotal_value |
浮動小数点数 | いいえ | 小計 (割引後、税金・送料前)。 |
tax |
浮動小数点数 | いいえ | チェックアウトに適用される税金の合計。 |
shipping |
浮動小数点数 | いいえ | 送料の合計。 |
currency |
文字列 | はい | 3文字のISO 4217コード。 |
products |
配列 | はい | チェックアウト対象のアイテム。商品プロパティのテーブルを参照してください。 |
source |
文字列 | はい | イベントの発生元。 |
metadata |
オブジェクト | いいえ | 柔軟なキーと値のペア。認識されるサブプロパティ: checkout_url (文字列)。 |
商品プロパティ (products[])
| プロパティ | データタイプ | 必須 | 説明 |
|---|---|---|---|
product_id |
文字列 | はい | 一意の商品識別子。 |
product_name |
文字列 | はい | 商品の表示名。 |
variant_id |
文字列 | はい | バリアントの識別子。 |
image_url |
文字列 | いいえ | 商品画像のURL。 |
product_url |
文字列 | いいえ | 商品ページのURL。 |
quantity |
整数 | はい | カート内の数量。 |
price |
浮動小数点数 | はい | バリアントの単価。 |
metadata |
オブジェクト | いいえ | 柔軟なキーと値のペア (color や size など)。 |
注文が正常に完了したとき、または支払いが確認されたときにトリガーします。
イベントプロパティ
| プロパティ | データタイプ | 必須 | 説明 |
|---|---|---|---|
order_id |
文字列 | はい | 注文の一意の識別子。 |
cart_id |
文字列 | いいえ | カートの識別子。ユーザーのカートのマッピングのため、カート、チェックアウト、注文の各イベントで共有されます。 |
total_value |
浮動小数点数 | はい | 注文の合計金額。 |
subtotal_value |
浮動小数点数 | いいえ | 小計 (割引後、税金・送料前)。 |
tax |
浮動小数点数 | いいえ | 注文に適用される税金の合計。 |
shipping |
浮動小数点数 | いいえ | 送料の合計。 |
currency |
文字列 | はい | 3文字のISO 4217コード。 |
total_discounts |
浮動小数点数 | いいえ | 注文に適用された割引の合計額。 |
discounts |
配列 | いいえ | 適用された割引の詳細リスト。各割引オブジェクトは code (文字列)、amount (浮動小数点数)、type (文字列) をサポートします。 |
products |
配列 | はい | 注文内のアイテム。商品プロパティのテーブルを参照してください。 |
source |
文字列 | はい | イベントの発生元。 |
metadata |
オブジェクト | いいえ | 柔軟なキーと値のペア。認識されるサブプロパティ: order_status_url (文字列)。 |
商品プロパティ (products[])
| プロパティ | データタイプ | 必須 | 説明 |
|---|---|---|---|
product_id |
文字列 | はい | 一意の商品識別子。 |
product_name |
文字列 | はい | 商品の表示名。 |
variant_id |
文字列 | はい | バリアントの識別子。 |
image_url |
文字列 | いいえ | 商品画像のURL。 |
product_url |
文字列 | いいえ | 商品ページのURL。 |
quantity |
整数 | はい | 注文内の数量。 |
price |
浮動小数点数 | はい | バリアントの単価。 |
metadata |
オブジェクト | いいえ | 柔軟なキーと値のペア (color や size など)。 |
注文がキャンセルされたときにトリガーします。
イベントプロパティ
| プロパティ | データタイプ | 必須 | 説明 |
|---|---|---|---|
order_id |
文字列 | はい | 注文の一意の識別子。 |
total_value |
浮動小数点数 | はい | キャンセルされる注文の合計金額。絶対値 (0 以上) を送信してください。減算はBrazeが処理します。 |
subtotal_value |
浮動小数点数 | いいえ | 小計 (割引後、税金・送料前)。 |
tax |
浮動小数点数 | いいえ | 注文に適用される税金の合計。 |
shipping |
浮動小数点数 | いいえ | 送料の合計。 |
currency |
文字列 | はい | 3文字のISO 4217コード。 |
total_discounts |
浮動小数点数 | いいえ | 注文に適用された割引の合計額。 |
discounts |
配列 | いいえ | 適用された割引の詳細リスト。 |
cancel_reason |
文字列 | はい | 注文がキャンセルされた理由。 |
products |
配列 | はい | キャンセルされた注文内のアイテム。商品プロパティのテーブルを参照してください。 |
source |
文字列 | はい | イベントの発生元。 |
metadata |
オブジェクト | いいえ | 柔軟なキーと値のペア。認識されるサブプロパティ: order_status_url (文字列)。 |
商品プロパティ (products[])
| プロパティ | データタイプ | 必須 | 説明 |
|---|---|---|---|
product_id |
文字列 | はい | 一意の商品識別子。 |
product_name |
文字列 | はい | 商品の表示名。 |
variant_id |
文字列 | はい | バリアントの識別子。 |
image_url |
文字列 | いいえ | 商品画像のURL。 |
product_url |
文字列 | いいえ | 商品ページのURL。 |
quantity |
整数 | はい | 注文内の数量。 |
price |
浮動小数点数 | はい | バリアントの単価。 |
metadata |
オブジェクト | いいえ | 柔軟なキーと値のペア (color や size など)。 |
全額または一部の返金が行われたときにトリガーします。一部返金の場合は、total_value に元の注文合計ではなく、返金額のみを設定してください。
イベントプロパティ
| プロパティ | データタイプ | 必須 | 説明 |
|---|---|---|---|
order_id |
文字列 | はい | 元の注文の一意の識別子。 |
total_value |
浮動小数点数 | はい | 返金の合計金額。絶対値 (0 以上) を送信してください。収益の調整はBrazeが処理します。 |
currency |
文字列 | はい | 3文字のISO 4217コード。 |
total_discounts |
浮動小数点数 | いいえ | 当初適用された割引の合計額。 |
discounts |
配列 | いいえ | 割引の詳細リスト。 |
products |
配列 | はい | 返金対象のアイテム。商品プロパティのテーブルを参照してください。 |
source |
文字列 | はい | イベントの発生元。 |
metadata |
オブジェクト | いいえ | 柔軟なキーと値のペア。認識されるサブプロパティ: order_status_url (文字列)。 |
商品プロパティ (products[])
| プロパティ | データタイプ | 必須 | 説明 |
|---|---|---|---|
product_id |
文字列 | はい | 一意の商品識別子。 |
product_name |
文字列 | はい | 商品の表示名。 |
variant_id |
文字列 | はい | バリアントの識別子。 |
image_url |
文字列 | いいえ | 商品画像のURL。 |
product_url |
文字列 | いいえ | 商品ページのURL。 |
quantity |
整数 | はい | 返金された数量。 |
price |
浮動小数点数 | はい | バリアントの単価。 |
metadata |
オブジェクト | いいえ | 柔軟なキーと値のペア (color や size など)。 |
Android
Android SDK 42.3.0以降では、型付きのe コマースイベントクラスが提供されています。これらのクラスは構築時にクライアントサイドでバリデーションを行い、Braze.logEcommerceEventを呼び出すと自動的にsnake_caseへシリアライズします。
| Androidクラス | イベント名 | 備考 |
|---|---|---|
ProductViewedEvent |
ecommerce.product_viewed |
製品フィールドをpropertiesのトップレベルにフラット化します(products配列なし)。カタログの在庫復活トリガーと値下げトリガー用に、オプションのtype(43.0.0以降)およびcatalogNameパラメーターをサポートしています。それより前のバージョンでは、logCustomEventまたはREST APIを使用してこれらのプロパティを送信してください。 |
CartUpdatedEvent |
ecommerce.cart_updated |
actionプロパティにはCartUpdatedAction(ADD、REMOVE、REPLACE)を使用します。 |
CheckoutStartedEvent |
ecommerce.checkout_started |
|
OrderPlacedEvent |
ecommerce.order_placed |
オプションのcartId、totalDiscounts、discountsをサポートしています。 |

ecommerce.order_cancelledとecommerce.order_refundedは、型付きAndroid SDKクラスとして利用できません。logCustomEventまたはREST APIを使用して記録してください。
共通のビルディングブロック
EcommerceProduct: カート、チェックアウト、注文イベントのラインアイテムです。- 必須:
productId、productName、variantId、price、quantity(非負のLong) - オプション:
imageUrl、productUrl、metadata
- 必須:
BrazeProperties: イベントレベルまたは製品レベルのmetadataです。キーは、先頭にドル記号($)がなく、255文字以上の空でない文字列である必要があります。
クライアントサイドバリデーション
無効なペイロードは、イベントクラスの構築時にIllegalArgumentExceptionをスローするため、イベントがキューに入ることはありません。一般的なルールは次のとおりです。
| フィールドまたはルール | バリデーション |
|---|---|
文字列IDおよび名前(product_id、product_name、variant_id、cart_id、checkout_id、order_id、source、オプションのURL) |
空白でないこと、最大255文字 |
price、total_value、total_discounts |
0以上であること |
currency |
有効なISO 4217コード(SDKによりトリムされ、大文字に変換されます) |
products(カート、チェックアウト、注文イベント) |
1つ以上のEcommerceProduct |
quantity(製品ごと) |
非負の整数 |
ディスパッチ時に、シリアライズされたプロパティがSDKのサイズ制限を超えた場合、logEcommerceEventはエラーをログに記録し、イベントを送信しません。
コード例
import com.braze.Braze
import com.braze.models.outgoing.BrazeProperties
import com.braze.models.recommended.ecommerce.ProductViewedEvent
val metadata = BrazeProperties()
.addProperty("category", "Apparel")
val productViewedEvent = ProductViewedEvent(
productId = "PROD101",
productName = "Silk Scarf",
variantId = "SCARF_RED_SILK",
price = 150.00,
currency = "EUR",
source = "https://braze-fashion.eu",
imageUrl = "https://braze-fashion.eu/images/scarf_red.jpg",
productUrl = "https://braze-fashion.eu/products/scarf",
metadata = metadata,
type = listOf("price_drop", "back_in_stock"),
catalogName = "scarves",
)
Braze.getInstance(context).logEcommerceEvent(productViewedEvent)
CartUpdatedActionを使用してactionを設定します。
| 値 | ワイヤー値 | 説明 |
|---|---|---|
CartUpdatedAction.ADD |
add |
数量を増やすか、ラインを追加します。 |
CartUpdatedAction.REMOVE |
remove |
数量を減らします。0になるとラインを削除します。 |
CartUpdatedAction.REPLACE |
replace |
カート全体を置き換えます(デフォルト)。 |
import com.braze.Braze
import com.braze.models.recommended.ecommerce.CartUpdatedAction
import com.braze.models.recommended.ecommerce.CartUpdatedEvent
import com.braze.models.recommended.ecommerce.EcommerceProduct
val product = EcommerceProduct(
productId = "SKU-RUN-4821",
productName = "Ultraboost Running Shoe",
variantId = "UB-BLK-11",
price = 189.99,
quantity = 1,
)
val cartUpdatedEvent = CartUpdatedEvent(
cartId = "cart_abc123",
currency = "USD",
source = "android",
totalValue = 189.99,
products = listOf(product),
action = CartUpdatedAction.ADD,
)
Braze.getInstance(context).logEcommerceEvent(cartUpdatedEvent)
import com.braze.Braze
import com.braze.models.outgoing.BrazeProperties
import com.braze.models.recommended.ecommerce.CheckoutStartedEvent
import com.braze.models.recommended.ecommerce.EcommerceProduct
val products = listOf(
EcommerceProduct(
productId = "SKU-RUN-4821",
productName = "Ultraboost Running Shoe",
variantId = "UB-BLK-11",
price = 189.99,
quantity = 1,
),
)
val checkoutStartedEvent = CheckoutStartedEvent(
checkoutId = "chk_88291",
currency = "USD",
source = "android",
totalValue = 234.96,
products = products,
cartId = "cart_abc123",
metadata = BrazeProperties().addProperty("checkout_url", "https://www.example.com/checkout/chk_88291"),
)
Braze.getInstance(context).logEcommerceEvent(checkoutStartedEvent)
import com.braze.Braze
import com.braze.models.outgoing.BrazeProperties
import com.braze.models.recommended.ecommerce.EcommerceProduct
import com.braze.models.recommended.ecommerce.OrderPlacedEvent
val products = listOf(
EcommerceProduct(
productId = "SKU-RUN-4821",
productName = "Ultraboost Running Shoe",
variantId = "UB-BLK-11",
price = 189.99,
quantity = 1,
),
)
val orderPlacedEvent = OrderPlacedEvent(
orderId = "ord_77821",
currency = "USD",
source = "android",
totalValue = 224.96,
products = products,
cartId = "cart_abc123",
totalDiscounts = 10.0,
discounts = listOf(
mapOf("code" to "SPRING10", "amount" to 10.0, "type" to "percentage"),
),
metadata = BrazeProperties().addProperty("order_status_url", "https://www.example.com/orders/ord_77821/status"),
)
Braze.getInstance(context).logEcommerceEvent(orderPlacedEvent)
Brazeはこのイベント用の型付きSDKクラスを提供していません。ecommerce.order_cancelledイベントスキーマに一致するペイロードでlogCustomEventを使用してください。
import com.braze.Braze
import com.braze.models.outgoing.BrazeProperties
import org.json.JSONArray
import org.json.JSONObject
val properties = BrazeProperties(
JSONObject()
.put("order_id", "ord_77821")
.put("total_value", 224.96)
.put("currency", "USD")
.put("cancel_reason", "customer_request")
.put("source", "android")
.put(
"products",
JSONArray().put(
JSONObject()
.put("product_id", "SKU-RUN-4821")
.put("product_name", "Ultraboost Running Shoe")
.put("variant_id", "UB-BLK-11")
.put("quantity", 1)
.put("price", 189.99),
),
),
)
Braze.getInstance(context).logCustomEvent("ecommerce.order_cancelled", properties)
Brazeはこのイベント用の型付きSDKクラスを提供していません。ecommerce.order_refundedイベントスキーマに一致するペイロードでlogCustomEventを使用してください。
import com.braze.Braze
import com.braze.models.outgoing.BrazeProperties
import org.json.JSONArray
import org.json.JSONObject
val properties = BrazeProperties(
JSONObject()
.put("order_id", "ord_77821")
.put("total_value", 189.99)
.put("currency", "USD")
.put("source", "android")
.put(
"products",
JSONArray().put(
JSONObject()
.put("product_id", "SKU-RUN-4821")
.put("product_name", "Ultraboost Running Shoe")
.put("variant_id", "UB-BLK-11")
.put("quantity", 1)
.put("price", 189.99),
),
),
)
Braze.getInstance(context).logCustomEvent("ecommerce.order_refunded", properties)
import com.braze.Braze;
import com.braze.models.outgoing.BrazeProperties;
import com.braze.models.recommended.ecommerce.ProductViewedEvent;
BrazeProperties metadata = new BrazeProperties()
.addProperty("category", "Apparel");
ProductViewedEvent productViewedEvent = new ProductViewedEvent(
/* productId */ "PROD101",
/* productName */ "Silk Scarf",
/* variantId */ "SCARF_RED_SILK",
/* price */ 150.00,
/* currency */ "EUR",
/* source */ "https://braze-fashion.eu",
/* imageUrl */ "https://braze-fashion.eu/images/scarf_red.jpg",
/* productUrl */ "https://braze-fashion.eu/products/scarf",
/* metadata */ metadata,
/* type */ Arrays.asList("price_drop", "back_in_stock"),
/* catalogName */ "scarves"
);
Braze.getInstance(context).logEcommerceEvent(productViewedEvent);
CartUpdatedActionを使用してactionを設定します。
| 値 | ワイヤー値 | 説明 |
|---|---|---|
CartUpdatedAction.ADD |
add |
数量を増やすか、ラインを追加します。 |
CartUpdatedAction.REMOVE |
remove |
数量を減らします。0になるとラインを削除します。 |
CartUpdatedAction.REPLACE |
replace |
カート全体を置き換えます(デフォルト)。 |
import com.braze.Braze;
import com.braze.models.recommended.ecommerce.CartUpdatedAction;
import com.braze.models.recommended.ecommerce.CartUpdatedEvent;
import com.braze.models.recommended.ecommerce.EcommerceProduct;
import java.util.Collections;
EcommerceProduct product = new EcommerceProduct(
/* productId */ "SKU-RUN-4821",
/* productName */ "Ultraboost Running Shoe",
/* variantId */ "UB-BLK-11",
/* price */ 189.99,
/* quantity */ 1
);
CartUpdatedEvent cartUpdatedEvent = new CartUpdatedEvent(
/* cartId */ "cart_abc123",
/* currency */ "USD",
/* source */ "android",
/* totalValue */ 189.99,
/* products */ Collections.singletonList(product),
/* metadata */ null,
/* action */ CartUpdatedAction.ADD
);
Braze.getInstance(context).logEcommerceEvent(cartUpdatedEvent);
import com.braze.Braze;
import com.braze.models.outgoing.BrazeProperties;
import com.braze.models.recommended.ecommerce.CheckoutStartedEvent;
import com.braze.models.recommended.ecommerce.EcommerceProduct;
import java.util.Collections;
EcommerceProduct product = new EcommerceProduct(
/* productId */ "SKU-RUN-4821",
/* productName */ "Ultraboost Running Shoe",
/* variantId */ "UB-BLK-11",
/* price */ 189.99,
/* quantity */ 1
);
BrazeProperties metadata = new BrazeProperties()
.addProperty("checkout_url", "https://www.example.com/checkout/chk_88291");
CheckoutStartedEvent checkoutStartedEvent = new CheckoutStartedEvent(
/* checkoutId */ "chk_88291",
/* currency */ "USD",
/* source */ "android",
/* totalValue */ 234.96,
/* products */ Collections.singletonList(product),
/* cartId */ "cart_abc123",
/* metadata */ metadata
);
Braze.getInstance(context).logEcommerceEvent(checkoutStartedEvent);
import com.braze.Braze;
import com.braze.models.outgoing.BrazeProperties;
import com.braze.models.recommended.ecommerce.EcommerceProduct;
import com.braze.models.recommended.ecommerce.OrderPlacedEvent;
import java.util.Collections;
EcommerceProduct product = new EcommerceProduct(
/* productId */ "SKU-RUN-4821",
/* productName */ "Ultraboost Running Shoe",
/* variantId */ "UB-BLK-11",
/* price */ 189.99,
/* quantity */ 1
);
BrazeProperties metadata = new BrazeProperties()
.addProperty("order_status_url", "https://www.example.com/orders/ord_77821/status");
OrderPlacedEvent orderPlacedEvent = new OrderPlacedEvent(
/* orderId */ "ord_77821",
/* currency */ "USD",
/* source */ "android",
/* totalValue */ 224.96,
/* products */ Collections.singletonList(product),
/* cartId */ "cart_abc123",
/* totalDiscounts */ 10.0,
/* discounts */ null,
/* metadata */ metadata
);
Braze.getInstance(context).logEcommerceEvent(orderPlacedEvent);
Brazeはこのイベント用の型付きSDKクラスを提供していません。ecommerce.order_cancelledイベントスキーマに一致するペイロードでlogCustomEventを使用してください。
import com.braze.Braze;
import com.braze.models.outgoing.BrazeProperties;
import org.json.JSONArray;
import org.json.JSONObject;
Braze.getInstance(context).logCustomEvent(
"ecommerce.order_cancelled",
new BrazeProperties(new JSONObject()
.put("order_id", "ord_77821")
.put("total_value", 224.96)
.put("currency", "USD")
.put("cancel_reason", "customer_request")
.put("source", "android")
.put("products", new JSONArray()
.put(new JSONObject()
.put("product_id", "SKU-RUN-4821")
.put("product_name", "Ultraboost Running Shoe")
.put("variant_id", "UB-BLK-11")
.put("quantity", 1)
.put("price", 189.99)))));
Brazeはこのイベント用の型付きSDKクラスを提供していません。ecommerce.order_refundedイベントスキーマに一致するペイロードでlogCustomEventを使用してください。
import com.braze.Braze;
import com.braze.models.outgoing.BrazeProperties;
import org.json.JSONArray;
import org.json.JSONObject;
Braze.getInstance(context).logCustomEvent(
"ecommerce.order_refunded",
new BrazeProperties(new JSONObject()
.put("order_id", "ord_77821")
.put("total_value", 189.99)
.put("currency", "USD")
.put("source", "android")
.put("products", new JSONArray()
.put(new JSONObject()
.put("product_id", "SKU-RUN-4821")
.put("product_name", "Ultraboost Running Shoe")
.put("variant_id", "UB-BLK-11")
.put("quantity", 1)
.put("price", 189.99)))));
iOS
Swift SDKは型付きeコマースイベントクラス(ProductViewedEvent、CartUpdatedEvent、CheckoutStartedEvent、OrderPlacedEvent)を提供しており、これらを構築してlogEcommerceEventに渡します。カート、チェックアウト、注文イベントの製品にはProductLineItemを使用します。各イニシャライザはスロー可能なため、try?でラップし、構築が成功した場合にのみイベントを記録してください。
これはSwift SDKバージョン15.0.0以降で利用可能です。
ecommerce.order_cancelledとecommerce.order_refundedは、型付きSwift SDKクラスとして利用できません。logCustomEventを使用して記録してください。
コード例
if let productViewedEvent = try? Braze.Ecommerce.ProductViewedEvent(
productId: "4111176",
productName: "Torchie runners",
variantId: "4111176700",
imageUrl: "https://braze-apparel.com/images/products/large/torchie-runners.jpg",
productUrl: "https://braze-apparel.com/footwear-categories/sneakers/braze-orange-torchie-runners/",
price: 85,
currency: "GBP",
source: "https://braze-apparel.com/",
metadata: [
"color": "ORANGE",
"size": "6",
"brand": "Braze"
],
type: ["price_drop", "back_in_stock"],
catalogName: "footwear"
) {
AppDelegate.braze?.logEcommerceEvent(productViewedEvent)
}
if let productLine = try? Braze.Ecommerce.ProductLineItem(
productId: "8266836345064",
productName: "Classic T-Shirt",
variantId: "44610569208040",
imageUrl: "https://braze-apparel.com/images/tshirt-blue-medium.jpg",
productUrl: "https://braze-apparel.com/products/classic-tshirt?variant=44610569208040",
quantity: 2,
price: 99.99,
metadata: [
"sku": "TSH-BLU-M",
"color": "BLUE",
"size": "Medium",
"brand": "Braze"
]
), let cartUpdatedEvent = try? Braze.Ecommerce.CartUpdatedEvent(
cartId: "cart_12345",
totalValue: 199.98,
currency: "USD",
products: [productLine],
source: "https://braze-apparel.com",
metadata: [:]
) {
AppDelegate.braze?.logEcommerceEvent(cartUpdatedEvent)
}
if let productLine = try? Braze.Ecommerce.ProductLineItem(
productId: "632910392",
productName: "Wireless Headphones",
variantId: "808950810",
quantity: 1,
price: 199.98,
metadata: [
"sku": "WH-BLK-PRO",
"color": "Black",
"brand": "BrazeAudio"
]
), let checkoutStartedEvent = try? Braze.Ecommerce.CheckoutStartedEvent(
checkoutId: "checkout_abc123",
cartId: "cart_12345",
totalValue: 199.98,
currency: "USD",
products: [productLine],
source: "https://braze-audio.com",
metadata: [
"checkout_url": "https://checkout.braze-audio.com/abc123"
]
) {
AppDelegate.braze?.logEcommerceEvent(checkoutStartedEvent)
}
if let productLine = try? Braze.Ecommerce.ProductLineItem(
productId: "632910392",
productName: "Wireless Headphones",
variantId: "808950810",
quantity: 1,
price: 199.98,
metadata: [
"sku": "WH-BLK-PRO",
"color": "Black",
"brand": "BrazeAudio"
]
), let orderPlacedEvent = try? Braze.Ecommerce.OrderPlacedEvent(
orderId: "order_67890",
cartId: "cart_12345",
totalValue: 189.98,
currency: "USD",
totalDiscounts: 10.00,
discounts: [.structured(code: "SAVE10", amount: 10.00, type: "fixed")],
products: [productLine],
source: "https://braze-audio.com",
metadata: [
"order_status_url": "https://braze-audio.com/orders/67890/status",
"order_number": "ORD-2024-001234",
"tags": ["electronics", "audio"],
"referring_site": "https://www.e-referrals.com",
"payment_gateway_names": ["tap2pay", "dotcash"]
]
) {
AppDelegate.braze?.logEcommerceEvent(orderPlacedEvent)
}
Brazeはこのイベント用の型付きSDKクラスを提供していません。ecommerce.order_cancelledイベントスキーマに一致するペイロードでlogCustomEventを使用してください。
let discounts: [[String: Any]] = [
[
"code": "SAVE10",
"amount": 10.00
]
]
let products: [[String: Any]] = [
[
"product_id": "632910392",
"product_name": "Wireless Headphones",
"variant_id": "808950810",
"quantity": 1,
"price": 199.98,
"metadata": [
"sku": "WH-BLK-PRO",
"color": "Black",
"brand": "BrazeAudio"
]
]
]
let properties: [String: Any] = [
"order_id": "order_67890",
"cancel_reason": "customer changed mind",
"total_value": 189.98,
"subtotal_value": 169.98,
"tax": 14.40,
"shipping": 5.60,
"currency": "USD",
"total_discounts": 10.00,
"discounts": discounts,
"products": products,
"source": "https://braze-audio.com",
"metadata": [
"order_status_url": "https://braze-audio.com/orders/67890/status",
"order_number": "ORD-2024-001234",
"tags": ["cancelled", "customer_request"]
]
]
AppDelegate.braze?.logCustomEvent(name: "ecommerce.order_cancelled", properties: properties)
Brazeはこのイベント用の型付きSDKクラスを提供していません。ecommerce.order_refundedイベントスキーマに一致するペイロードでlogCustomEventを使用してください。
let discounts: [[String: Any]] = [
[
"code": "SAVE5",
"amount": 5.00
]
]
let products: [[String: Any]] = [
[
"product_id": "632910392",
"product_name": "Wireless Headphones",
"variant_id": "808950810",
"quantity": 1,
"price": 99.99,
"metadata": [
"sku": "WH-BLK-PRO",
"color": "Black",
"brand": "BrazeAudio"
]
]
]
let properties: [String: Any] = [
"order_id": "order_67890",
"total_value": 99.99,
"currency": "USD",
"total_discounts": 5.00,
"discounts": discounts,
"products": products,
"source": "https://braze-audio.com",
"metadata": [
"order_status_url": "https://braze-audio.com/orders/67890/status",
"order_note": "Customer requested refund due to defective item",
"order_number": "ORD-2024-001234",
"tags": ["refund", "defective"]
]
]
AppDelegate.braze?.logCustomEvent(name: "ecommerce.order_refunded", properties: properties)
Web
Web SDK 6.8.0以降では、イベントのnameとpropertiesを指定してlogEcommerceEventを呼び出します。レガシー SDK バージョンでは、イベント名とプロパティオブジェクトを指定してlogCustomEventを呼び出します。ecommerce.order_cancelledとecommerce.order_refundedではlogCustomEventを使用します。
コード例
新しい SDK バージョンでは、logEcommerceEvent()を呼び出します。
braze.logEcommerceEvent({
"name": "ecommerce.product_viewed",
"properties": {
"product_id": "4111176",
"product_name": "Torchie runners",
"variant_id": "4111176700",
"image_url": "https://braze-apparel.com/images/products/large/torchie-runners.jpg",
"product_url": "https://braze-apparel.com/footwear-categories/sneakers/braze-orange-torchie-runners/",
"price": 85,
"currency": "GBP",
"source": "https://braze-apparel.com/",
"type": ["price_drop", "back_in_stock"],
"catalog_name": "footwear",
"metadata": {
"color": "ORANGE",
"size": "6",
"brand": "Braze"
}
}
});
レガシー SDK バージョンでは、logCustomEvent()を呼び出します。
braze.logCustomEvent("ecommerce.product_viewed", {
"product_id": "4111176",
"product_name": "Torchie runners",
"variant_id": "4111176700",
"image_url": "https://braze-apparel.com/images/products/large/torchie-runners.jpg",
"product_url": "https://braze-apparel.com/footwear-categories/sneakers/braze-orange-torchie-runners/",
"price": 85,
"currency": "GBP",
"source": "https://braze-apparel.com/",
"metadata": {
"color": "ORANGE",
"size": "6",
"brand": "Braze"
}
});
新しい SDK バージョンでは、logEcommerceEvent()を呼び出します。
braze.logEcommerceEvent({
"name": "ecommerce.cart_updated",
"properties": {
"cart_id": "cart_12345",
"currency": "USD",
"total_value": 199.98,
"products": [
{
"product_id": "8266836345064",
"product_name": "Classic T-Shirt",
"variant_id": "44610569208040",
"image_url": "https://braze-apparel.com/images/tshirt-blue-medium.jpg",
"product_url": "https://braze-apparel.com/products/classic-tshirt?variant=44610569208040",
"quantity": 2,
"price": 99.99,
"metadata": {
"sku": "TSH-BLU-M",
"color": "BLUE",
"size": "Medium",
"brand": "Braze"
}
}
],
"source": "https://braze-apparel.com",
"metadata": {}
}
});
レガシー SDK バージョンでは、logCustomEvent()を呼び出します。
braze.logCustomEvent("ecommerce.cart_updated", {
"cart_id": "cart_12345",
"currency": "USD",
"total_value": 199.98,
"subtotal_value": 179.98,
"tax": 15.00,
"shipping": 5.00,
"products": [
{
"product_id": "8266836345064",
"product_name": "Classic T-Shirt",
"variant_id": "44610569208040",
"image_url": "https://braze-apparel.com/images/tshirt-blue-medium.jpg",
"product_url": "https://braze-apparel.com/products/classic-tshirt?variant=44610569208040",
"quantity": 2,
"price": 99.99,
"metadata": {
"sku": "TSH-BLU-M",
"color": "BLUE",
"size": "Medium",
"brand": "Braze"
}
}
],
"source": "https://braze-apparel.com",
"metadata": {}
});
新しい SDK バージョンでは、logEcommerceEvent()を呼び出します。
braze.logEcommerceEvent({
"name": "ecommerce.checkout_started",
"properties": {
"checkout_id": "checkout_abc123",
"cart_id": "cart_12345",
"total_value": 199.98,
"currency": "USD",
"products": [
{
"product_id": "632910392",
"product_name": "Wireless Headphones",
"variant_id": "808950810",
"quantity": 1,
"price": 199.98,
"metadata": {
"sku": "WH-BLK-PRO",
"color": "Black",
"brand": "BrazeAudio"
}
}
],
"source": "https://braze-audio.com",
"metadata": {
"checkout_url": "https://checkout.braze-audio.com/abc123"
}
}
});
レガシー SDK バージョンでは、logCustomEvent()を呼び出します。
braze.logCustomEvent("ecommerce.checkout_started", {
"checkout_id": "checkout_abc123",
"cart_id": "cart_12345",
"total_value": 199.98,
"subtotal_value": 179.98,
"tax": 15.00,
"shipping": 5.00,
"currency": "USD",
"products": [
{
"product_id": "632910392",
"product_name": "Wireless Headphones",
"variant_id": "808950810",
"quantity": 1,
"price": 199.98,
"metadata": {
"sku": "WH-BLK-PRO",
"color": "Black",
"brand": "BrazeAudio"
}
}
],
"source": "https://braze-audio.com",
"metadata": {
"checkout_url": "https://checkout.braze-audio.com/abc123"
}
});
新しい SDK バージョンでは、logEcommerceEvent()を呼び出します。
braze.logEcommerceEvent({
"name": "ecommerce.order_placed",
"properties": {
"order_id": "order_67890",
"cart_id": "cart_12345",
"total_value": 189.98,
"currency": "USD",
"total_discounts": 10.00,
"discounts": [
{
"code": "SAVE10",
"amount": 10.00
}
],
"products": [
{
"product_id": "632910392",
"product_name": "Wireless Headphones",
"variant_id": "808950810",
"quantity": 1,
"price": 199.98,
"metadata": {
"sku": "WH-BLK-PRO",
"color": "Black",
"brand": "BrazeAudio"
}
}
],
"source": "https://braze-audio.com",
"metadata": {
"order_status_url": "https://braze-audio.com/orders/67890/status",
"order_number": "ORD-2024-001234",
"tags": ["electronics", "audio"],
"referring_site": "https://www.e-referrals.com",
"payment_gateway_names": ["tap2pay", "dotcash"]
}
}
});
レガシー SDK バージョンでは、logCustomEvent()を呼び出します。
braze.logCustomEvent("ecommerce.order_placed", {
"order_id": "order_67890",
"cart_id": "cart_12345",
"total_value": 189.98,
"subtotal_value": 169.98,
"tax": 14.40,
"shipping": 5.60,
"currency": "USD",
"total_discounts": 10.00,
"discounts": [
{
"code": "SAVE10",
"amount": 10.00
}
],
"products": [
{
"product_id": "632910392",
"product_name": "Wireless Headphones",
"variant_id": "808950810",
"quantity": 1,
"price": 199.98,
"metadata": {
"sku": "WH-BLK-PRO",
"color": "Black",
"brand": "BrazeAudio"
}
}
],
"source": "https://braze-audio.com",
"metadata": {
"order_status_url": "https://braze-audio.com/orders/67890/status",
"order_number": "ORD-2024-001234",
"tags": ["electronics", "audio"],
"referring_site": "https://www.e-referrals.com",
"payment_gateway_names": ["tap2pay", "dotcash"]
}
});
braze.logCustomEvent("ecommerce.order_cancelled", {
"order_id": "order_67890",
"cancel_reason": "customer changed mind",
"total_value": 189.98,
"subtotal_value": 169.98,
"tax": 14.40,
"shipping": 5.60,
"currency": "USD",
"total_discounts": 10.00,
"discounts": [
{
"code": "SAVE10",
"amount": 10.00
}
],
"products": [
{
"product_id": "632910392",
"product_name": "Wireless Headphones",
"variant_id": "808950810",
"quantity": 1,
"price": 199.98,
"metadata": {
"sku": "WH-BLK-PRO",
"color": "Black",
"brand": "BrazeAudio"
}
}
],
"source": "https://braze-audio.com",
"metadata": {
"order_status_url": "https://braze-audio.com/orders/67890/status",
"order_number": "ORD-2024-001234",
"tags": ["cancelled", "customer_request"]
}
});
braze.logCustomEvent("ecommerce.order_refunded", {
"order_id": "order_67890",
"total_value": 99.99,
"currency": "USD",
"total_discounts": 5.00,
"discounts": [
{
"code": "SAVE5",
"amount": 5.00
}
],
"products": [
{
"product_id": "632910392",
"product_name": "Wireless Headphones",
"variant_id": "808950810",
"quantity": 1,
"price": 99.99,
"metadata": {
"sku": "WH-BLK-PRO",
"color": "Black",
"brand": "BrazeAudio"
}
}
],
"source": "https://braze-audio.com",
"metadata": {
"order_status_url": "https://braze-audio.com/orders/67890/status",
"order_note": "Customer requested refund due to defective item",
"order_number": "ORD-2024-001234",
"tags": ["refund", "defective"]
}
});
Google Tag Manager
Google Tag Manager (GTM) を使用している場合は、サイトのコードでlogEcommerceEvent()を呼び出す代わりに、Braze Actions タグで Log eCommerce Event (New) タグタイプを使用します。このタグは GA4 形式の e コマースデータレイヤーを読み取り、ecommerce.product_viewed、ecommerce.cart_updated、ecommerce.checkout_started、ecommerce.order_placedの各イベントをサポートします。イベントと商品のメタデータもサポートしています。ecommerce.order_cancelledまたはecommerce.order_refundedを記録するには、braze.logCustomEvent()を呼び出す Custom HTML タグを使用します。
設定手順、フィールドのマッピング、トラブルシューティングについては、GTM で e コマースイベントを記録するを参照してください。
logCustomEventを使用した手動記録
推奨イベントを手動で記録するには、正確なイベント名(例: ecommerce.product_viewed)と、手動で構築したBrazePropertiesまたはJSONObjectペイロードを指定してlogCustomEventを呼び出します。SDKは手動呼び出しに対して推奨イベントスキーマのバリデーションを行いません。Brazeは取り込み時にこれらのペイロードをバリデーションします:
- 有効なペイロードは、完全な後処理を伴う推奨イベントとして処理されます。
- 無効なペイロード(必須フィールドの欠落、型の不一致、余分なトップレベルプロパティ)は取り込み後に破棄されます。失敗はワークスペースのSDK処理ログおよび失敗サマリーメールに表示されます。
無効なデータがアプリから送信される前にキャッチできるよう、可能な限りlogEcommerceEventを使用してください。一般的なlogCustomEventの使用方法については、カスタムイベントの記録を参照してください。