
【第591回】Personalization:Sitemap Builder で Sitemap と Schema の取得
前回の記事では、Salesforce Personalization の Sitemap Builder に用意されている Debug を使用して、TrailNest から想定した Event が送信されていることを確認しました。
ここまでで、
Page Type の設定
↓
Resolver の設定
↓
Profile Attributes の設定
↓
Event の作成
↓
Event と Page Type の紐付け
↓
Schema の確認
↓
Debug による動作確認
まで完了しました。
最後に確認するのが、Sitemap Builder 右上部にある Review & Download です。
Review & Download では、ここまで画面上で設定してきた内容から生成された、
Sitemap
Schema
を最終確認し、ファイルとして取得できます。
今回は、Sitemap Builder から生成された Sitemap と Schema を確認してダウンロードします。
Personalization 基礎シリーズ
Sitemap Builder シリーズ
Data 360 設定シリーズ
Personalization 設定シリーズ
Review & Download を開く
Sitemap Builder 上部の Review & Download をクリックします。

Review & Download には、
Download Sitemap
Download Schema
が表示されます。
また、画面上でも、
Sitemap.js
Schema.json
を切り替えて内容を確認できます。
Sitemap.js を確認する
まず Sitemap.js を確認します。

Sitemap.js には、これまで Sitemap Builder で設定してきた内容が JavaScript として生成されています。
今回の TrailNest では、例えば以下のような設定が含まれます。
Consent Management
Data Space
Page Type
Resolver
Product View
Add to Cart
Customer Confirm Email
Customer Identification
Purchase
Order Item
Listener
Sitemap Builder では各タブから Low-Code / No-Code で設定してきましたが、最終的にはこれらが JavaScript の Sitemap として生成されます。
Salesforce Personalization の Sitemap は、Web サイト上の Page Type やユーザー操作を判定し、Salesforce Interactions SDK から Data 360 へ送信する Event を定義する JavaScript の設定です。
// Generated by Salesforce Data 360 Sitemap Builder
var SI = getSalesforceInteractions();
SI.setLoggingLevel("debug");
SI.init({
consents: new Promise(resolve => {
resolve([{
provider: "Consent Provider",
purpose: SI.ConsentPurpose.Tracking,
status: SI.ConsentStatus.OptIn
}]);
}),
personalization: {
dataspace: "default"
}
}).then(() => {
const {cashDom, listener, resolvers, sendEvent, util, CartInteractionName, CatalogObjectInteractionName, OrderInteractionName} = SI;
const currentURL = new URL(window.location.href);
const parseText = value => {
if (value == null) return null;
try {
const str = String(value).trim();
SI.log.debug("String conversion:", value, "→", str);
if (str === "") return null;
return str;
} catch (error) {
SI.log.error("Type conversion parsing failed:", error);
SI.log.error("String conversion failed:", error);
return null;
}
};
const parseNumber = value => {
if (value == null || value === "") return null;
try {
const stripped = String(value).replace(/[^0-9.-]/g, "");
if (stripped === "") return null;
const parsed = Number(stripped);
return isNaN(parsed) ? null : parsed;
} catch (error) {
SI.log.error("Type conversion parsing failed:", error);
return null;
}
};
const productid = () => parseText(resolvers.fromSelectorAttribute('#trailnest-app', 'data-product-id')());
const productname = () => parseText(resolvers.fromSelectorAttribute('#trailnest-app', 'data-product-name')());
const productprice = () => parseNumber(resolvers.fromSelectorAttribute('#trailnest-app', 'data-product-price')());
const productquantity = () => 1;
const orderid = () => {
try {
const order = JSON.parse(localStorage.getItem('trailnest_last_order'));
return order?.orderId || '';
} catch (e) {
return '';
}
};
const ordertotal = () => {
try {
const order = JSON.parse(localStorage.getItem('trailnest_last_order'));
return Number(order?.total || 0);
} catch (e) {
return 0;
}
};
const checkoutemail = () => (document.querySelector('#email')?.value || '').trim();
const checkoutcustomerid = () => (document.querySelector('#customerId')?.value || '').trim();
const orderitemproductid = $item => $item.attr('data-product-id') || '';
const orderitemquantity = $item => Number($item.attr('data-quantity') || 0);
const orderitemprice = $item => Number($item.attr('data-price') || 0);
const global = {
listeners: [],
onActionEvent: actionEvent => actionEvent
};
const pageTypeDefault = {
name: "default",
interaction: {
name: "default",
eventType: "userEngagement"
}
};
const pageTypes = [{
name: "Home",
isMatch: () => document.querySelector('#trailnest-app[data-page-type="home"]') !== null
}, {
name: "Category",
isMatch: () => document.querySelector('#trailnest-app[data-page-type="category"]') !== null
}, {
name: "Product Detail",
isMatch: () => document.querySelector('#trailnest-app[data-page-type="product_detail"]') !== null,
interaction: {
name: SI.CatalogObjectInteractionName.ViewCatalogObject,
catalogObject: {
type: "Product",
id: productid(),
attributes: {
Price: productprice(),
Name: productname()
}
}
},
listeners: [listener("click", "#add-to-cart", () => {
sendEvent({
interaction: {
name: SI.CartInteractionName.AddToCart,
lineItem: {
catalogObjectType: "Product",
catalogObjectId: productid(),
quantity: productquantity(),
price: productprice()
}
}
});
})]
}, {
name: "Cart",
isMatch: () => document.querySelector('#trailnest-app[data-page-type="cart"]') !== null
}, {
name: "Checkout",
isMatch: () => document.querySelector('#trailnest-app[data-page-type="checkout"]') !== null,
listeners: [listener("click", "#confirm-customer", () => {
sendEvent({
interaction: {
name: "Customer Confirm Email",
eventType: "userEngagement"
},
user: {
attributes: {
eventType: "contactPointEmail",
email: checkoutemail()
}
}
});
}), listener("click", "#confirm-customer", () => {
sendEvent({
interaction: {
name: "Customer Identification",
eventType: "userEngagement"
},
user: {
attributes: {
eventType: "partyIdentification",
IDNameWeb: "TrailNest Customer ID",
IDType: "Customer ID",
userId: checkoutcustomerid()
}
}
});
})]
}, {
name: "Order Confirmation",
isMatch: () => document.querySelector('#trailnest-app[data-page-type="order_confirmation"]') !== null,
interaction: {
name: SI.OrderInteractionName.Purchase,
order: {
id: orderid(),
totalValue: ordertotal(),
lineItems: cashDom(".checkout-summary-item").map((index, el) => {
const $item = cashDom(el);
return {
catalogObjectType: "Product",
catalogObjectId: orderitemproductid($item),
quantity: orderitemquantity($item),
price: orderitemprice($item)
};
}).get()
}
}
}];
const sitemapConfig = {
global: global,
pageTypeDefault: pageTypeDefault,
pageTypes: pageTypes
};
SI.initSitemap(sitemapConfig);
});Sitemap をダウンロードする
内容を確認したら Download Sitemap をクリックします。

これによって、生成された Sitemap をファイルとして取得できます。
Salesforce 側で Website Connector を設定する際には、Sitemap ファイルをアップロードして利用します。
Salesforce の公式手順でも、Website Connector のレコードから Sitemap ファイルをアップロードする流れになっています。
ただし、今回はまだ Salesforce 側へのアップロードは行いません。
まずは Sitemap Builder から生成されたファイルを取得するところまで確認します。
Schema.json を確認する
続いて Schema.json をクリックします。

Schema.json には、Schema タブで確認した Event Schema が JSON として生成されています。
今回の TrailNest では、次の 10 種類の Schema が含まれます。
Catalog
Cart
Cart Item
Order
Order Item
Consent Log
userEngagement
Contact Point Email
Party Identification
Identity
例えば、今回設定してきた内容とは次のように対応します。
Product View
→ CatalogAdd to Cart
→ Cart / Cart ItemCustomer Confirm Email
→ userEngagement / Contact Point EmailCustomer Identification
→ userEngagement / Party IdentificationPurchase
→ Order / Order Item
{
"records": [
{
"masterLabel": "Catalog",
"developerName": "catalog",
"category": "Engagement",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Date Time",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "Individual",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Session",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Channel Type",
"developerName": "interactionName",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Personalization",
"developerName": "personalizationId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Personalization Content",
"developerName": "personalizationContentId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "pageView",
"developerName": "pageView",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Engagement Channel",
"developerName": "sourceChannel",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "sourceLocale",
"developerName": "sourceLocale",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Webpage Type",
"developerName": "sourcePageType",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Page URL",
"developerName": "sourceUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Referrer URL",
"developerName": "sourceUrlReferrer",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "id",
"developerName": "id",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "type",
"developerName": "type",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "attributePrice",
"developerName": "attributePrice",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "attributeName",
"developerName": "attributeName",
"dataType": "Text",
"isDataRequired": false
}
]
},
{
"masterLabel": "Cart",
"developerName": "cart",
"category": "Engagement",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Date Time",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "Individual",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Session",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Channel Type",
"developerName": "interactionName",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Personalization",
"developerName": "personalizationId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Personalization Content",
"developerName": "personalizationContentId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "pageView",
"developerName": "pageView",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Engagement Channel",
"developerName": "sourceChannel",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "sourceLocale",
"developerName": "sourceLocale",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Webpage Type",
"developerName": "sourcePageType",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Page URL",
"developerName": "sourceUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Referrer URL",
"developerName": "sourceUrlReferrer",
"dataType": "Text",
"isDataRequired": false
}
]
},
{
"masterLabel": "Cart Item",
"developerName": "cartItem",
"category": "Engagement",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Date Time",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "Individual",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Session",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Channel Type",
"developerName": "interactionName",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Personalization",
"developerName": "personalizationId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Personalization Content",
"developerName": "personalizationContentId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "pageView",
"developerName": "pageView",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Engagement Channel",
"developerName": "sourceChannel",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "sourceLocale",
"developerName": "sourceLocale",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Webpage Type",
"developerName": "sourcePageType",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Page URL",
"developerName": "sourceUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Referrer URL",
"developerName": "sourceUrlReferrer",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "cartEventId",
"developerName": "cartEventId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Product",
"developerName": "catalogObjectId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "catalogObjectType",
"developerName": "catalogObjectType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Currency",
"developerName": "currency",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Product Price",
"developerName": "price",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Product Quantity",
"developerName": "quantity",
"dataType": "Number",
"isDataRequired": true
}
]
},
{
"masterLabel": "Order",
"developerName": "order",
"category": "Engagement",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Date Time",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "Individual",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Session",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Channel Type",
"developerName": "interactionName",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Personalization",
"developerName": "personalizationId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Personalization Content",
"developerName": "personalizationContentId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "pageView",
"developerName": "pageView",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Engagement Channel",
"developerName": "sourceChannel",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "sourceLocale",
"developerName": "sourceLocale",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Webpage Type",
"developerName": "sourcePageType",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Page URL",
"developerName": "sourceUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Referrer URL",
"developerName": "sourceUrlReferrer",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Currency",
"developerName": "orderCurrency",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Sales Order Id",
"developerName": "orderId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Total Product Amount",
"developerName": "orderTotalValue",
"dataType": "Number",
"isDataRequired": false
}
]
},
{
"masterLabel": "Order Item",
"developerName": "orderItem",
"category": "Engagement",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Date Time",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "Individual",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Session",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Channel Type",
"developerName": "interactionName",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Personalization",
"developerName": "personalizationId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Personalization Content",
"developerName": "personalizationContentId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "pageView",
"developerName": "pageView",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Engagement Channel",
"developerName": "sourceChannel",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "sourceLocale",
"developerName": "sourceLocale",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Webpage Type",
"developerName": "sourcePageType",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Page URL",
"developerName": "sourceUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Referrer URL",
"developerName": "sourceUrlReferrer",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "orderEventId",
"developerName": "orderEventId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Product",
"developerName": "catalogObjectId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "catalogObjectType",
"developerName": "catalogObjectType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "currency",
"developerName": "currency",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Product Price Amount",
"developerName": "price",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Total Line Amount",
"developerName": "totalPrice",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Ordered Quantity",
"developerName": "quantity",
"dataType": "Number",
"isDataRequired": true
}
]
},
{
"masterLabel": "Consent Log",
"developerName": "consentLog",
"category": "Engagement",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Date Time",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "Individual",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Session",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Channel Type",
"developerName": "interactionName",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Personalization",
"developerName": "personalizationId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Personalization Content",
"developerName": "personalizationContentId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "pageView",
"developerName": "pageView",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Engagement Channel",
"developerName": "sourceChannel",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "sourceLocale",
"developerName": "sourceLocale",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Webpage Type",
"developerName": "sourcePageType",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Page URL",
"developerName": "sourceUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Referrer URL",
"developerName": "sourceUrlReferrer",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "provider",
"developerName": "provider",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Privacy Consent Log Category",
"developerName": "purpose",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Privacy Consent Status",
"developerName": "status",
"dataType": "Text",
"isDataRequired": false
}
]
},
{
"masterLabel": "userEngagement",
"developerName": "userEngagement",
"category": "Engagement",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Date Time",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "Individual",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Session",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Channel Type",
"developerName": "interactionName",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Personalization",
"developerName": "personalizationId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Personalization Content",
"developerName": "personalizationContentId",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "pageView",
"developerName": "pageView",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Engagement Channel",
"developerName": "sourceChannel",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "sourceLocale",
"developerName": "sourceLocale",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Webpage Type",
"developerName": "sourcePageType",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Page URL",
"developerName": "sourceUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Referrer URL",
"developerName": "sourceUrlReferrer",
"dataType": "Text",
"isDataRequired": false
}
]
},
{
"masterLabel": "Contact Point Email",
"developerName": "contactPointEmail",
"category": "Profile",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Date Time",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "Party",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Session",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "pageView",
"developerName": "pageView",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Engagement Channel",
"developerName": "sourceChannel",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "sourceLocale",
"developerName": "sourceLocale",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Webpage Type",
"developerName": "sourcePageType",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Page URL",
"developerName": "sourceUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Referrer URL",
"developerName": "sourceUrlReferrer",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Email Address",
"developerName": "email",
"dataType": "Text",
"isDataRequired": true
}
]
},
{
"masterLabel": "Party Identification",
"developerName": "partyIdentification",
"category": "Profile",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Date Time",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "Individual",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Session",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "pageView",
"developerName": "pageView",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Engagement Channel",
"developerName": "sourceChannel",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "sourceLocale",
"developerName": "sourceLocale",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Webpage Type",
"developerName": "sourcePageType",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Page URL",
"developerName": "sourceUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Referrer URL",
"developerName": "sourceUrlReferrer",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Identification Name",
"developerName": "IDNameWeb",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Party Identification Type",
"developerName": "IDType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Identification Number",
"developerName": "userId",
"dataType": "Text",
"isDataRequired": true
}
]
},
{
"masterLabel": "Identity",
"developerName": "identity",
"category": "Profile",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Engagement Date Time",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "Individual ID",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "Session",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "pageView",
"developerName": "pageView",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "Engagement Channel",
"developerName": "sourceChannel",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "sourceLocale",
"developerName": "sourceLocale",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Webpage Type",
"developerName": "sourcePageType",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Page URL",
"developerName": "sourceUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Referrer URL",
"developerName": "sourceUrlReferrer",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Is Anonymous",
"developerName": "isAnonymous",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "First Name",
"developerName": "firstName",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "Last Name",
"developerName": "lastName",
"dataType": "Text",
"isDataRequired": false
}
]
}
]
}Schema をダウンロードする
Download Schema をクリックします。

すると、Schema.json に含める Record を選択する画面が表示されます。
今回の TrailNest では、
Catalog
Cart
Cart Item
Order
Order Item
Consent Log
userEngagement
Contact Point Email
Party Identification
Identity
の 10 件が表示されました。

Standard と表示されているものは Salesforce Interactions SDK で用意されている標準 Event Schema、Custom と表示されている userEngagement は今回作成した Custom Event で利用する Schema です。
今回は 10 件すべてを選択したまま Export Customized Schema.json をクリックします。
この Schema.json が、その後の Salesforce 側の設定で使用するファイルになります。
Sitemap Builder Config について
Review & Download には、Sitemap.js と Schema.json のほかに、
Export Sitemap Builder Config
も用意されています。
これは Website Connector や Event Schema にアップロードするためのファイルではなく、Sitemap Builder 上で作成した設定内容を保持するための補助的なエクスポート です。
Sitemap Builder の最初の設定セクションである Get Started には Import Sitemap Builder Config も用意されているため、エクスポートした Config を読み込んで、Sitemap Builder 上の設定を再利用できます。
実際に、今回の Salesforce 側の設定で使用するのは、
Sitemap.js
Schema.json
の 2 つのみです。
そのため、今回の sitemap-builder-config.json は、Sitemap Builder で作成した設定の記録・バックアップとして、Sitemap.js や Schema.json とあわせて保存しておいてください。

今回はまだ Salesforce 側へ設定しない
今回の Review & Download で行うのは、Sitemap Builder で作成した成果物を確認して取得するところまで です。
この時点では、まだ Salesforce 側の Website Connector には Sitemap や Schema をアップロードしていません。
次のステップでは、Salesforce 側へ移動して、
Website Connector
↓
Schema をアップロード
↓
Sitemap をアップロード
↓
Data Stream
↓
Data Mapping
と進んでいきます。
いかがでしたでしょうか。
今回は Review & Download を使用して、Sitemap Builder で作成した、
Sitemap.js
Schema.json
Sitemap Builder Config
を確認しました。
これで Sitemap Builder 上での作業は一通り完了です。
次回からは Salesforce 側へ移動し、今回取得した Sitemap と Schema を実際に利用できるよう設定していきます。
今回は以上です。