コンテンツにスキップ

eコマースイベントの記録

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

イベントスキーマ

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をサポートしています。

共通のビルディングブロック

  • 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の使用方法については、カスタムイベントの記録を参照してください。

New Stuff!