Skip to content

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 Float はい 閲覧時のバリアント単価。
currency 文字列 はい 3文字のISO 4217コード(例: USDまたはEUR)。
source 文字列 はい イベントの発生元ソース(例: webios、またはandroid)。
type 文字列の配列 いいえ 在庫復活や値下げアラートのBrazeカタログトリガー機能を使用するために必須です。許容される値: "price_drop""back_in_stock"
metadata オブジェクト いいえ 柔軟なキーと値のペア。認識されるサブプロパティ: sku(文字列)。

ユーザーのカートの内容が変更されるたびにトリガーします。カート全体の置き換え(actionを省略するかreplaceに設定)または増分更新(addまたはremove)を使用します。

イベントプロパティ

プロパティ データタイプ 必須 説明
cart_id 文字列 はい カートの一意の識別子。ユーザーのカートマッピングのために、カート、チェックアウト、注文イベント間で共有されます。
action 文字列 いいえ add(数量を増やすかラインを追加)、remove(数量を減らす。0でラインを削除)、またはreplace(カート全体の置き換え。actionを省略した場合と同じ)。
total_value Float 条件付き actionが省略されているかreplaceの場合は必須。actionaddまたはremoveの場合はオプション。
subtotal_value Float いいえ カートの小計(割引後、税・送料前)。
tax Float いいえ カートに適用される合計税額。
shipping Float いいえ カートの合計送料。
currency 文字列 はい 3文字のISO 4217コード。
products 配列 はい この更新のラインアイテム。製品プロパティテーブルを参照してください。
source 文字列 はい イベントの発生元ソース。
metadata オブジェクト いいえ 追加のイベントレベルデータ用の柔軟なキーと値のペア。

製品プロパティ(products[]

プロパティ データタイプ 必須 説明
product_id 文字列 はい 一意の製品識別子。
product_name 文字列 はい 製品の表示名。
variant_id 文字列 はい バリアント識別子。
image_url 文字列 いいえ 製品画像のURL。
product_url 文字列 いいえ 製品ページのURL。
quantity Integer はい カート全体の置き換えの場合、このラインのカート内数量。addまたはremoveの場合、追加または削除する数量。
price Float はい バリアント単価。
metadata オブジェクト いいえ 柔軟なキーと値のペア(例: colorsize)。

ユーザーがチェックアウトフローを開始したときにトリガーします。

イベントプロパティ

プロパティ データタイプ 必須 説明
checkout_id 文字列 はい チェックアウトセッションの一意の識別子。
cart_id 文字列 いいえ カート識別子。ユーザーのカートマッピングのために、カート、チェックアウト、注文イベント間で共有されます。
total_value Float はい チェックアウトの合計金額。
subtotal_value Float いいえ 小計(割引後、税・送料前)。
tax Float いいえ チェックアウトに適用される合計税額。
shipping Float いいえ 合計送料。
currency 文字列 はい 3文字のISO 4217コード。
products 配列 はい チェックアウト対象のアイテム。製品プロパティテーブルを参照してください。
source 文字列 はい イベントの発生元ソース。
metadata オブジェクト いいえ 柔軟なキーと値のペア。認識されるサブプロパティ: checkout_url(文字列)。

製品プロパティ(products[]

プロパティ データタイプ 必須 説明
product_id 文字列 はい 一意の製品識別子。
product_name 文字列 はい 製品の表示名。
variant_id 文字列 はい バリアント識別子。
image_url 文字列 いいえ 製品画像のURL。
product_url 文字列 いいえ 製品ページのURL。
quantity Integer はい カート内の数量。
price Float はい バリアント単価。
metadata オブジェクト いいえ 柔軟なキーと値のペア(例: colorsize)。

注文が正常に完了した場合、または支払いが確認されたときにトリガーします。

イベントプロパティ

プロパティ データタイプ 必須 説明
order_id 文字列 はい 注文の一意の識別子。
cart_id 文字列 いいえ カート識別子。ユーザーのカートマッピングのために、カート、チェックアウト、注文イベント間で共有されます。
total_value Float はい 注文の合計金額。
subtotal_value Float いいえ 小計(割引後、税・送料前)。
tax Float いいえ 注文に適用される合計税額。
shipping Float いいえ 合計送料。
currency 文字列 はい 3文字のISO 4217コード。
total_discounts Float いいえ 注文に適用された割引の合計額。
discounts 配列 いいえ 適用された割引の詳細リスト。各割引オブジェクトはcode(文字列)、amount(Float)、type(文字列)をサポートします。
products 配列 はい 注文内のアイテム。製品プロパティテーブルを参照してください。
source 文字列 はい イベントの発生元ソース。
metadata オブジェクト いいえ 柔軟なキーと値のペア。認識されるサブプロパティ: order_status_url(文字列)。

製品プロパティ(products[]

プロパティ データタイプ 必須 説明
product_id 文字列 はい 一意の製品識別子。
product_name 文字列 はい 製品の表示名。
variant_id 文字列 はい バリアント識別子。
image_url 文字列 いいえ 製品画像のURL。
product_url 文字列 いいえ 製品ページのURL。
quantity Integer はい 注文内の数量。
price Float はい バリアント単価。
metadata オブジェクト いいえ 柔軟なキーと値のペア(例: colorsize)。

注文がキャンセルされたときにトリガーします。

イベントプロパティ

プロパティ データタイプ 必須 説明
order_id 文字列 はい 注文の一意の識別子。
total_value Float はい キャンセルされる注文の合計金額。絶対値(0以上)を送信してください。Brazeが減額を処理します。
subtotal_value Float いいえ 小計(割引後、税・送料前)。
tax Float いいえ 注文に適用される合計税額。
shipping Float いいえ 合計送料。
currency 文字列 はい 3文字のISO 4217コード。
total_discounts Float いいえ 注文に適用された割引の合計額。
discounts 配列 いいえ 適用された割引の詳細リスト。
cancel_reason 文字列 はい 注文がキャンセルされた理由。
products 配列 はい キャンセルされた注文内のアイテム。製品プロパティテーブルを参照してください。
source 文字列 はい イベントの発生元ソース。
metadata オブジェクト いいえ 柔軟なキーと値のペア。認識されるサブプロパティ: order_status_url(文字列)。

製品プロパティ(products[]

プロパティ データタイプ 必須 説明
product_id 文字列 はい 一意の製品識別子。
product_name 文字列 はい 製品の表示名。
variant_id 文字列 はい バリアント識別子。
image_url 文字列 いいえ 製品画像のURL。
product_url 文字列 いいえ 製品ページのURL。
quantity Integer はい 注文内の数量。
price Float はい バリアント単価。
metadata オブジェクト いいえ 柔軟なキーと値のペア(例: colorsize)。

全額または一部の返金が発行されたときにトリガーします。一部返金の場合、total_valueには元の注文合計ではなく、返金額のみを設定してください。

イベントプロパティ

プロパティ データタイプ 必須 説明
order_id 文字列 はい 元の注文の一意の識別子。
total_value Float はい 返金の合計金額。絶対値(0以上)を送信してください。Brazeが収益の調整を処理します。
currency 文字列 はい 3文字のISO 4217コード。
total_discounts Float いいえ 元々適用されていた割引の合計額。
discounts 配列 いいえ 割引の詳細リスト。
products 配列 はい 返金対象のアイテム。製品プロパティテーブルを参照してください。
source 文字列 はい イベントの発生元ソース。
metadata オブジェクト いいえ 柔軟なキーと値のペア。認識されるサブプロパティ: order_status_url(文字列)。

製品プロパティ(products[]

プロパティ データタイプ 必須 説明
product_id 文字列 はい 一意の製品識別子。
product_name 文字列 はい 製品の表示名。
variant_id 文字列 はい バリアント識別子。
image_url 文字列 いいえ 製品画像のURL。
product_url 文字列 いいえ 製品ページのURL。
quantity Integer はい 返金された数量。
price Float はい バリアント単価。
metadata オブジェクト いいえ 柔軟なキーと値のペア(例: colorsize)。

Android

Android SDK 42.3.0以降では、構築時のクライアントサイドバリデーションと、Braze.logEcommerceEvent呼び出し時の自動snake_caseシリアライゼーションを備えた型付きeコマースイベントクラスが提供されています。

Androidクラス イベント名 備考
ProductViewedEvent ecommerce.product_viewed 製品フィールドをpropertiesのトップレベルにフラット化します(products配列なし)。このクラスはカタログトリガー用のトップレベルtypeプロパティをサポートしていません。typeが必要な場合は、logCustomEventまたはREST APIを使用してください。
CartUpdatedEvent ecommerce.cart_updated actionプロパティにはCartUpdatedActionADDREMOVEREPLACE)を使用します。
CheckoutStartedEvent ecommerce.checkout_started  
OrderPlacedEvent ecommerce.order_placed オプションのcartIdtotalDiscountsdiscountsをサポートしています。

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

  • EcommerceProduct: カート、チェックアウト、注文イベントのラインアイテムです。
    • 必須: productIdproductNamevariantIdpricequantity(非負のLong
    • オプション: imageUrlproductUrlmetadata
  • BrazeProperties: イベントレベルまたは製品レベルのmetadataです。キーは先頭にドル記号($)のない、255文字以内の空でない文字列である必要があります。

クライアントサイドバリデーション

無効なペイロードは、イベントクラスの構築時にIllegalArgumentExceptionをスローするため、イベントはキューに入りません。一般的なルール:

フィールドまたはルール バリデーション
文字列IDおよび名前(product_idproduct_namevariant_idcart_idcheckout_idorder_idsource、オプションのURL) 空白でないこと、最大255文字
pricetotal_valuetotal_discounts 0以上であること
currency 有効なISO 4217コード(SDKによりトリムされ大文字に変換されます)
products(カート、チェックアウト、注文イベント) 1つ以上のEcommerceProduct
quantity(製品ごと) 非負の整数

ディスパッチ時に、シリアライズされたプロパティがSDKのサイズ制限を超えた場合、logEcommerceEventはエラーをログに記録し、イベントを送信しません。

コード例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import com.braze.Braze
import com.braze.models.outgoing.BrazeProperties
import com.braze.models.recommended.ecommerce.ProductViewedEvent

val metadata = BrazeProperties()
  .addProperty("sku", "SS-R-101")
  .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,
)

Braze.getInstance(context).logEcommerceEvent(productViewedEvent)

CartUpdatedActionを使用してactionを設定します:

ワイヤー値 説明
CartUpdatedAction.ADD add 数量を増やすか、ラインを追加します。
CartUpdatedAction.REMOVE remove 数量を減らします。0でラインを削除します。
CartUpdatedAction.REPLACE replace カート全体を置き換えます(デフォルト)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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)
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
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)
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
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を使用してください。

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
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を使用してください。

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
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import com.braze.Braze;
import com.braze.models.outgoing.BrazeProperties;
import com.braze.models.recommended.ecommerce.ProductViewedEvent;

BrazeProperties metadata = new BrazeProperties()
    .addProperty("sku", "SS-R-101")
    .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
);

Braze.getInstance(context).logEcommerceEvent(productViewedEvent);

CartUpdatedActionを使用してactionを設定します:

ワイヤー値 説明
CartUpdatedAction.ADD add 数量を増やすか、ラインを追加します。
CartUpdatedAction.REMOVE remove 数量を減らします。0でラインを削除します。
CartUpdatedAction.REPLACE replace カート全体を置き換えます(デフォルト)。
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
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);
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
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);
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
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を使用してください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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を使用してください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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コマースイベントクラス(ProductViewedEventCartUpdatedEventCheckoutStartedEventOrderPlacedEvent)を提供しており、これらを構築してlogEcommerceEventに渡します。カート、チェックアウト、注文イベントの製品にはProductLineItemを使用します。各イニシャライザはスロー可能なため、try?でラップし、構築が成功した場合にのみイベントを記録してください。 これはSwift SDKバージョン15.0.0以降で利用可能です。

ecommerce.order_cancelledecommerce.order_refundedは、型付きSwift SDKクラスとして利用できません。logCustomEventを使用して記録してください。

コード例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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: [
        "sku": "",
        "color": "ORANGE",
        "size": "6",
        "brand": "Braze"
    ],
    typeIdentifiers: ["price_drop", "back_in_stock"]
) {
    AppDelegate.braze?.logEcommerceEvent(productViewedEvent)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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)
}
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
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を使用してください。

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
32
33
34
35
36
37
38
39
40
41
42
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を使用してください。

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
32
33
34
35
36
37
38
39
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以降では、イベントのnamepropertiesを指定してlogEcommerceEventを呼び出します。レガシーSDKバージョンでは、イベント名とプロパティオブジェクトを指定してlogCustomEventを呼び出します。ecommerce.order_cancelledecommerce.order_refundedlogCustomEventを使用します。

コード例

新しいSDKバージョンでは、logEcommerceEvent()を呼び出します:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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/",
        "metadata": {
            "sku": "",
            "color": "ORANGE",
            "size": "6",
            "brand": "Braze"
        }
    }
});

レガシーSDKバージョンでは、logCustomEvent()を呼び出します:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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": {
        "sku": "",
        "color": "ORANGE",
        "size": "6",
        "brand": "Braze"
    }
});

新しいSDKバージョンでは、logEcommerceEvent()を呼び出します:

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
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()を呼び出します:

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
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()を呼び出します:

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
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()を呼び出します:

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
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()を呼び出します:

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
32
33
34
35
36
37
38
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()を呼び出します:

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
32
33
34
35
36
37
38
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"]
    }
});
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
32
33
34
35
36
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"]
    }
});
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
32
33
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"]
    }
});

logCustomEventを使用した手動記録

推奨イベントを手動で記録するには、正確なイベント名(例: ecommerce.product_viewed)と、手動で構築したBrazePropertiesまたはJSONObjectペイロードを指定してlogCustomEventを呼び出します。SDKは手動呼び出しに対して推奨イベントスキーマのバリデーションを行いません。Brazeは取り込み時にこれらのペイロードをバリデーションします:

  • 有効なペイロードは、完全な後処理を伴う推奨イベントとして処理されます。
  • 無効なペイロード(必須フィールドの欠落、型の不一致、余分なトップレベルプロパティ)は取り込み後に破棄されます。失敗はワークスペースのSDK処理ログおよび失敗サマリーメールに表示されます。

無効なデータがアプリから送信される前にキャッチできるよう、可能な限りlogEcommerceEventを使用してください。一般的なlogCustomEventの使用方法については、カスタムイベントの記録を参照してください。

New Stuff!