カスタムESP
INFO
注: このドキュメントはまだ作成中であり、変更される可能性があります。
概要
このドキュメントでは、FanplayrのESPストリームインターフェースでサポートされるイベントを表す汎用データ構造を提供する新しいカスタムESP統合の提案について説明します。
エンドポイント設定
このESPは、FanplayrポータルのStreams > Endpointsセクションから設定できます。以下に、利用可能になる可能性のある設定オプションの例を示します。

投稿URL
FanplayrがHTTP POSTメソッドを介してペイロードをストリーミングするURL。リクエストボディには、このドキュメントで後述するJSONデータ構造が含まれます。
- 型: string
APIキー
認証目的で使用できる、URLへのPOSTリクエストに含まれるオプションのAPIキー。
ストリーム設定
定義したエンドポイントにデータを送信するには、キャプチャしたいイベントによってトリガーされ、そのエンドポイントにデータを送信するアクションを持つストリームを作成する必要があります。
以下の例は、「Session Expiry」イベントでトリガーされます。
ペイロード構造
以下は、カスタムESP統合を使用する際に送信されるペイロード構造の例です。この構造は以下に使用されます。
{
"version": "2022-01-01",
"eventType": "addContact" | "abandonedSession" | "abandonedCart" | "order",
"sessionKey": "",
"domain": "",
"siteCustomerId": "",
"subscriberEmail": "",
"subscriberKey": "",
"date": "2022-01-01T00:00:00Z",
"customData": {
"key1": "value1",
"key2": "value2"
},
"abandonedCart": {
"gross": 0,
"discount": 0,
"discountCode": "",
"shipping": 0,
"tax": 0,
"products": [
{
"id": "",
"sku": "",
"name": "",
"url": "",
"image": "",
"quantity": 0,
"category": ""
}
]
},
"orderDetails": {
"id": "",
"gross": 0,
"discount": 0,
"discountCode": "",
"shipping": 0,
"tax": 0,
"products": [
{
"id": "",
"sku": "",
"name": "",
"url": "",
"image": "",
"quantity": 0,
"category": ""
}
]
},
"productsViewed": [
{
"id": "",
"sku": "",
"name": "",
"url": "",
"image": "",
"category": ""
}
],
"relatedProducts": [
{
"id": "",
"sku": "",
"name": "",
"url": "",
"image": "",
"category": ""
}
]
}
version
ペイロード構造の形式を表します。
- 型: string
eventType
このペイロードが表すイベントタイプを指定します。
型: string
詳細:
イベントタイプは、以下のいずれかの値になります。
addContact
- ユーザーの新しいメールアドレスが取得されたときにトリガーされます。abandonedSession
- ユーザーがショッピングカートに商品がなく、注文しなかった閲覧セッションの終了時にトリガーされます。abandonedCart
- ユーザーがカートに少なくとも1つの商品を保持し、それを放棄して注文しなかった閲覧セッションの終了時にトリガーされます。order
- 注文がキャプチャされたときにトリガーされます。
domain
ユーザーがFanplayrセッション中に閲覧したウェブサイトのドメイン名。
- 型: string
siteCustomerId
利用可能な場合、ウェブサイトのログインユーザー識別子を表します。この値は、FanplayrのページトラッキングcustomerId
プロパティ、またはID管理機能を使用した$siteCustomerId
IDから割り当てられます。
- 型: string | undefined
subscriberEmail
この値は、現在のセッション中、または以前のセッション中にFanplayrウィジェットを介してFanplayrがユーザーにメールアドレスを関連付けた場合に設定されます。
- 型: string | undefined
subscriberKey
FanplayrのID管理機能を使用する際のユーザーのIDを表します。
- 型: string | undefined
date
イベントが作成された日付(GMT、ISO 8601形式)。
- 型: string
sessionKey
Fanplayr閲覧セッションIDを表す一意の識別子。
- 型: string
customData
イベントをトリガーおよび制御するために使用されたFanplayrストリームを介してイベントに添付されたカスタムデータのキーと値のペアを含むオブジェクト。
interface CustomData {
[key: string]: string;
}
例
{
key1: 'value1',
key2: 'value2'
}
abandonedCart
セッション終了時に1つ以上の商品がカートに残っている場合のショッピングカートの最終状態を表すオブジェクト。
interface CartDetails {
// カート内の全アイテムの合計グロス金額を表す通貨値。
gross: number;
// カートに適用された合計割引額を表す通貨値。
discount: number;
// 適用された割引コード。複数のコードがある場合はカンマで区切られます。
discountCode?: string;
// 送料を表す通貨値。
shipping: number;
// 税金を表す通貨値。
tax: number;
// すべての通貨値のISO 4217通貨コードを表します。
currencyCode: string;
// カートに追加された商品の配列。
products: CartProduct[];
}
interface CartProduct {
// 商品バリアント識別子。
id: string;
// 商品グループ識別子。
sku: string;
// 商品表示名。
name: string;
// ウェブサイト上の商品への完全なURL。
url: string;
// 利用可能な場合、商品の主要画像への完全なURL。
image?: string;
// カートに追加された商品の数量。
quantity: number;
// 利用可能な場合、商品のカテゴリ名。
category?: string;
}
例:
{
gross: 120.0,
discount: 10,
discountCode: '10OFF',
shipping: 0,
tax: 0,
currencyCode: 'USD',
products: [
{
id: 'RDB1-A2',
sku: 'RDB1',
name: 'Rifiano Duffel Bag',
url: 'https://store.com/products/rdb1',
image: 'https://cdn.store.com/products/rdb1-01.jpg',
quantity: 2,
category: 'Accessories'
}
]
}
productsViewed
セッション中に閲覧された商品の詳細を表すオブジェクトの配列。
- 型: ViewedProduct[]
interface ViewedProduct {
// 商品バリアント識別子。
id: string;
// 商品グループ識別子。
sku: string;
// 商品表示名。
name: string;
// ウェブサイト上の商品への完全なURL。
url: string;
// 利用可能な場合、商品の主要画像への完全なURL。
image?: string;
// 利用可能な場合、商品のカテゴリ名。
category?: string;
}
例:
[
{
id: 'RDB1-A2',
sku: 'RDB1',
name: 'Rifiano Duffel Bag',
url: 'https://store.com/products/rdb1',
image: 'https://cdn.store.com/products/rdb1-01.jpg',
category: 'Accessories'
},
{
id: 'VDD-1',
sku: 'VDD',
name: 'Vintage Denim Dress',
url: 'https://store.com/products/vdd1',
image: 'https://cdn.store.com/products/vdd1-01.jpg',
category: 'Womens > Clothing'
}
]
relatedProducts
イベントに関連する商品の詳細を表すオブジェクトの配列。
型: RelatedProduct[]
詳細:
このプロパティは、商品レコメンデーションがイベントに追加された場合(ストリームを介して設定)、ペイロードにのみ存在します。
interface RelatedProduct {
// 商品バリアント識別子。
id: string;
// 商品グループ識別子。
sku: string;
// 商品表示名。
name: string;
// ウェブサイト上の商品への完全なURL。
url: string;
// 利用可能な場合、商品の主要画像への完全なURL。
image?: string;
// 利用可能な場合、商品のカテゴリ名。
category?: string;
}
例:
[
{
id: 'BFF-3',
sku: 'BFF',
name: 'Bali Flip Flop',
url: 'https://store.com/products/bff',
image: 'https://cdn.store.com/products/bff-01.jpg',
category: 'Womens > Shoes'
}
]
orderDetails
キャプチャされた注文の取引詳細を表すオブジェクト。これらの詳細は「order」イベントタイプでのみ利用可能です。
interface OrderDetails {
// 統合によって提供される一意の注文識別子。
id: string;
// カート内の全アイテムの合計グロス金額を表す通貨値。
gross: number;
// カートに適用された合計割引額を表す通貨値。
discount: number;
// 適用された割引コード。複数のコードがある場合はカンマで区切られます。
discountCode?: string;
// 送料を表す通貨値。
shipping: number;
// 税金を表す通貨値。
tax: number;
// すべての通貨値のISO 4217通貨コードを表します。
currencyCode: string;
// 注文に含まれる商品の配列。
products: OrderProduct[];
}
interface OrderProduct {
// 商品バリアント識別子。
id: string;
// 商品グループ識別子。
sku: string;
// 商品表示名。
name: string;
// ウェブサイト上の商品への完全なURL。
url: string;
// 利用可能な場合、商品の主要画像への完全なURL。
image?: string;
// 注文に含まれる商品の数量。
quantity: number;
// 利用可能な場合、商品のカテゴリ名。
category?: string;
}
例:
{
id: '34783495',
gross: 120.0,
discount: 10,
discountCode: '10OFF',
shipping: 0,
tax: 0,
currencyCode: 'USD',
products: [
{
id: 'RDB1-A2',
sku: 'RDB1',
name: 'Rifiano Duffel Bag',
url: 'https://store.com/products/rdb1',
image: 'https://cdn.store.com/products/rdb1-01.jpg',
quantity: 2,
category: 'Accessories'
}
]
}
ペイロードの例
コンタクト追加イベント
以下は、ユーザーのメールアドレスが取得されたことを表すペイロード構造の例です。
action
プロパティは、新しいメールが取得されたことを表すためにaddContact
に設定されます。subscriberKey
は、取得されたメールアドレスと等しくなります。- ユーザーの閲覧セッション中に閲覧された商品などの追加データも存在する場合があります。
{
"version": "2022-01-01",
"eventType": "addContact",
"sessionKey": "02941605ef4048c832f272b13b1a2d4e",
"domain": "store.com",
"subscriberKey": "email@domain.com",
"date": "2022-01-01T00:00:00Z",
"productsViewed": [
{
"id": "RDB1-A2",
"sku": "RDB1",
"name": "Rifiano Duffel Bag",
"url": "https://store.com/products/rdb1",
"image": "https://cdn.store.com/products/rdb1-01.jpg",
"category": "Accessories"
}
]
}
セッション放棄イベント
ユーザーがセッション終了時にショッピングカートに商品を追加していない場合のセッション放棄イベントの例。
{
version: '2022-01-01',
eventType: 'abandonedSession',
sessionKey: '02941605ef4048c832f272b13b1a2d4e',
domain: 'store.com',
date: '2022-01-01T00:00:00Z',
productsViewed: [
{
id: 'RDB1-A2',
sku: 'RDB1',
name: 'Rifiano Duffel Bag',
url: 'https://store.com/products/rdb1',
image: 'https://cdn.store.com/products/rdb1-01.jpg',
category: 'Accessories'
}
]
}
カート放棄イベント
{
version: '2022-01-01',
eventType: 'abandonedCart',
sessionKey: '02941605ef4048c832f272b13b1a2d4e',
domain: 'store.com',
date: '2022-01-01T00:00:00Z',
productsViewed: [
{
id: 'RDB1-A2',
sku: 'RDB1',
name: 'Rifiano Duffel Bag',
url: 'https://store.com/products/rdb1',
image: 'https://cdn.store.com/products/rdb1-01.jpg',
category: 'Accessories'
}
],
abandonedCart: {
gross: 120.0,
discount: 10,
discountCode: '10OFF',
shipping: 0,
tax: 0,
products: [
{
id: 'RDB1-A2',
sku: 'RDB1',
name: 'Rifiano Duffel Bag',
url: 'https://store.com/products/rdb1',
image: 'https://cdn.store.com/products/rdb1-01.jpg',
quantity: 2,
category: 'Accessories'
}
]
}
}
注文イベント
「Order Received」ストリームトリガーを介してトリガーされる注文イベントの例。
{
version: '2022-01-01',
eventType: 'order',
sessionKey: '02941605ef4048c832f272b13b1a2d4e',
domain: 'store.com',
date: '2022-01-01T00:00:00Z',
productsViewed: [
{
id: 'RDB1-A2',
sku: 'RDB1',
name: 'Rifiano Duffel Bag',
url: 'https://store.com/products/rdb1',
image: 'https://cdn.store.com/products/rdb1-01.jpg',
category: 'Accessories'
}
],
order: {
id: '234897349',
gross: 120.0,
discount: 10,
discountCode: '10OFF',
currencyCode: 'USD',
shipping: 0,
tax: 0,
products: [
{
id: 'RDB1-A2',
sku: 'RDB1',
name: 'Rifiano Duffel Bag',
url: 'https://store.com/products/rdb1',
image: 'https://cdn.store.com/products/rdb1-01.jpg',
quantity: 2,
category: 'Accessories'
}
]
}
}