CDP のプロファイルにオーダーデータを追加する

公開日 :

CDP のプロファイルに紐づけることができるデータとしては、セッション( Web の行動履歴やコンバージョン)とオーダーという形でオーダー情報を入れることができます。オーダー情報に関しては別のシステムでデータを取得していることもあるため、API でデータを追加可能です。今回はこの手順に関して紹介をします。

オーダーデータの構造

実際データの構造としては、オーダーの単位(注文番号的なものがある)、そしてそのオーダーに含まれるオーダーのアイテム、そしてそのオーダーがどのユーザーと紐づいているのか、というのがポイントになります。

実際の JSON のデータと API を利用しながら説明していきますが、以下のようなイメージと考えてください。

  • オーダー(注文番号はユニーク)

    • 購入した商品(複数)

    • 購入したユーザー情報

今回は新しいユーザーを作って紐づける形にするため、以下の Json を利用してユーザーをあらかじめ作成しておきます。

 {
    "guestType": "customer",
    "title": "Mr",
    "firstName": "大谷",
    "lastName": "真一",
    "gender": "male",
    "dateOfBirth": "1991-12-08T00:00:00.000Z",
    "emails": [
        "haramizu@hotmail.com"
    ],
    "language": "JA",
    "nationality": "Japan",
    "street": [
        "南青山"
    ],
    "city": "港区",
    "country": "JP",
    "postCode": "1070062",
    "state": "東京都"
}

random desc

オーダーの情報を確認する

まだユーザーを作成してすぐのため、オーダーの情報は何も入っていませんが、データとして確認をするために、以下の API を利用して情報を取得します。

GET /v2/orders?guestRef=<guestRef>

以下のようなデータが返ってきました。items の項目が入っていません。

{
    "href": "https://api-engage-ap.sitecorecloud.io/v2/orders?offset=0&limit=10&guestRef=guid",
    "offset": 0,
    "limit": 10,
    "items": []
}

デバッグモードでデータを確認しても Orders が空になっていることがわかります。

random desc

オーダーを追加する

オーダーを追加するための手順は以下のページで紹介されています。

Postman では以下の設定をします。

POST /v2/orders

必須項目は以下の項目となります。referenceId は注文番号となるため、この値はユニークである必要があります。値は参考情報です。

Attribute

pointOfSale

haramizu.com

currencyCode

JPY

price

19800

orderdAt

2023-08-25T16:17:16.000Z

referenceId

20230825DEMO1

今回はいくつかの情報を追加した形で、以下の JSON のデータを利用しました。

{
    "pointOfSale": "haramizu.com",
    "channel": "WEB",
    "currencyCode": "JPY",
    "price": 19800,
    "orderedAt": "2023-08-25T16:17:16.000Z",
    "referenceId": "20230825DEMO1",
    "paymentType": "Card",
    "cardType": "Visa",
    "status": "PURCHASED"
}

結果が表示されて、オーダー情報が出来上がりました。

random desc

商品情報を追加する

作成したオーダーにはまだ商品情報が追加されていません。実際にデータを追加するための方法は、以下のページで紹介されています。

Postman を利用する際には、以下の情報を利用してアイテムを作成することになります。

POST /v2/orders/<orderRef>/orderItems

先ほど作成をしたオーダーの値を orderRef に設定します。リクエストで利用する際に必要となる必須項目は以下の通りです。

Attribute

currencyCode

JPY

price

19800

status

CONFIRMED

type

PACKAGE

productId

SKU0001

referenceId

REF001

今回は以下の JSON データを利用します。

{
    "currencyCode": "JPY",
    "price": 19800,
    "status": "CONFIRMED",
    "type": "PACKAGE",
    "productId": "SKU0001",
    "orderedAt": "2023-08-25T16:17:16.000Z",
    "quantity": 1,
    "referenceId": "REF001",
    "name": "Sample Order",
    "description": "Sample Order Description",
    "channel": "WEB",
    "language": "JA"
}

実行結果は以下のようになり、アイテムが作成されます。

random desc

作成した時のオーダーアイテムは以下のような形で空欄となっています。

random desc

これがアイテム作成をしたため、更新されました。

random desc

ユーザー情報の作成

CDP のレコードとして、Order contact と Order consumer の2つの項目があります。これはオーダーをした人と、受け取りが別みたいなケースの時に利用できます。今回はすでに作成しているコンタクトに紐づけます。

まず Corder Contact を作成します。詳細は以下のページに記載されています。

実行は以下のような形です。

POST /v2/orders/<orderRef>/contacts

JSON で必要となる項目は以下の通りです。

Attribute

firstName

lastName

すでにあるプロファイルと紐づけるため、以下のような Json で実行します。

{
    "firstName": "原水",
    "lastName": "真一",
    "guest": {
        "href": "https://api-engage-ap.sitecorecloud.io/v2/guests/guestRef"
    },
    "orderItems": {
        "items": [
            {
                "href": "https://api-engage-ap.sitecorecloud.io/v2/orderItems/orderItemRef"
            }
        ]
    }
}

random desc

続いて Order consumer を追加します。手順は以下の通りです。

ページを見ると、Customer とほぼ同じ動きをしますが、API の URL が異なるだけという形です。

POST /v2/orders/<orderRef>/consumers

まったく同じ JSON データを利用して実行した結果、以下のようになります。

random desc

データを確認する

プロファイルのデータに Order が紐づいているか、Debug モードで確認をします。実際にダイアログを開くと以下のように Orders に 1 が追加されています。

random desc

Json のデータを見に行くと、今回の API を通じて展開したデータを参照することができます。

random desc

まとめ

今回は REST API を利用してオーダーを作成しました。実際にはシステム連携で外部から不随データと合わせて送る形になりますが、手作業で紹介することでデータの構造を確認できるかと思い、今回のように実行していきました。

もう少しバッチ処理に向いている Batch API に関しては以下のページを参考にしてください。