diff --git a/examples/events/example-contexts/mock-storefront-context.md b/examples/events/example-contexts/mock-storefront-context.md index 2b23f57..e10926a 100644 --- a/examples/events/example-contexts/mock-storefront-context.md +++ b/examples/events/example-contexts/mock-storefront-context.md @@ -1,7 +1,12 @@ -## Storefront context +## Storefront context -> [!WARNING] -> `storeCode` and `storeViewCode` are required fields of the storefront context in all events. Beginning in 2025 any events without `storeCode` or `storeViewCode` will fail validation. +> [!NOTE] +> If you are using Adobe Commerce Optimizer (ACO), the `viewId` and `locale` fields are required in the storefront context. These correspond to the `AC-View-Id` and `AC-Source-Locale` header values respectively. +> +> For more information on these headers, see the [Adobe Commerce Services API documentation](https://developer.adobe.com/commerce/services/optimizer/merchandising-services/using-the-api/#headers). + +> [!TIP] +> If you are not using ACO, these fields can be left blank or null. ### Used @@ -11,6 +16,8 @@ [Storefront schema](../../../packages/storefront-events-sdk/src/types/schemas/storefrontInstance.ts) + + ### Mock data ```javascript @@ -31,5 +38,6 @@ const mockStorefrontCtx = { baseCurrencyCode: "USD", storeViewCurrencyCode: "USD", storefrontTemplate: "Other", + viewId: "12345678-1234-1234-1234-123456789abc" }; ``` diff --git a/examples/events/readme.md b/examples/events/readme.md index 4ee7289..c81c48d 100644 --- a/examples/events/readme.md +++ b/examples/events/readme.md @@ -1,6 +1,4 @@ ## Commerce events examples -> [!WARNING] -> `storeCode` and `storeViewCode` are required fields of the storefront context in all events. Beginning in 2025 any events without `storeCode` or `storeViewCode` will fail validation. ### Event purposes and usage diff --git a/examples/events/snowplow-debugger/storefront-instance.json b/examples/events/snowplow-debugger/storefront-instance.json index 0b7e82b..fc6432f 100644 --- a/examples/events/snowplow-debugger/storefront-instance.json +++ b/examples/events/snowplow-debugger/storefront-instance.json @@ -75,6 +75,10 @@ "storefrontTemplate": { "type": "string", "maxLength": 256 + }, + "viewId": { + "type": "string", + "maxLength": 256 } }, "additionalProperties": false, diff --git a/packages/storefront-events-collector/src/contexts/storefront.ts b/packages/storefront-events-collector/src/contexts/storefront.ts index 14500a1..750ab1c 100644 --- a/packages/storefront-events-collector/src/contexts/storefront.ts +++ b/packages/storefront-events-collector/src/contexts/storefront.ts @@ -33,6 +33,7 @@ const createContext = (storefront?: StorefrontInstance): StorefrontContext => { websiteName: storefrontCtx.websiteName, websiteId: storefrontCtx.websiteId, storefrontTemplate: storefrontCtx.storefrontTemplate, + viewId: storefrontCtx.viewId, }; const context: StorefrontContext = { diff --git a/packages/storefront-events-collector/src/schemas.ts b/packages/storefront-events-collector/src/schemas.ts index 4543f0c..fc0c854 100644 --- a/packages/storefront-events-collector/src/schemas.ts +++ b/packages/storefront-events-collector/src/schemas.ts @@ -16,7 +16,7 @@ const schemas = { SEARCH_RESULT_SUGGESTION_SCHEMA_URL: "iglu:com.adobe.magento.entity/search-result-suggestion/jsonschema/1-0-1", SHOPPING_CART_SCHEMA_URL: "iglu:com.adobe.magento.entity/shopping-cart/jsonschema/3-0-0", SHOPPER_SCHEMA_URL: "iglu:com.adobe.magento.entity/shopper/jsonschema/1-0-0", - STOREFRONT_INSTANCE_SCHEMA_URL: "iglu:com.adobe.magento.entity/storefront-instance/jsonschema/3-0-2", + STOREFRONT_INSTANCE_SCHEMA_URL: "iglu:com.adobe.magento.entity/storefront-instance/jsonschema/3-0-3", }; export default schemas; diff --git a/packages/storefront-events-collector/src/types/contexts.d.ts b/packages/storefront-events-collector/src/types/contexts.d.ts index b0081ad..f7b7f86 100644 --- a/packages/storefront-events-collector/src/types/contexts.d.ts +++ b/packages/storefront-events-collector/src/types/contexts.d.ts @@ -225,6 +225,7 @@ type Storefront = { websiteId: number; websiteName: string; storefrontTemplate?: "Luma" | "EDS" | "Hyva" | "AEM CIF" | "Franklin" | "PWA Studio" | "Other"; + viewId?: string | null; }; type Tracker = { diff --git a/packages/storefront-events-collector/tests/utils/mocks/context.ts b/packages/storefront-events-collector/tests/utils/mocks/context.ts index 59e572b..d566091 100644 --- a/packages/storefront-events-collector/tests/utils/mocks/context.ts +++ b/packages/storefront-events-collector/tests/utils/mocks/context.ts @@ -131,6 +131,7 @@ const mockStorefrontCtx = { websiteId: 333333, websiteName: "website", storefrontTemplate: "EDS", + viewId: "12345678-1234-1234-1234-123456789abc", }; const mockCcdmStorefrontCtx = { @@ -150,6 +151,7 @@ const mockCcdmStorefrontCtx = { websiteCode: "", websiteId: 333333, websiteName: "website", + viewId: "12345678-1234-1234-1234-123456789abc", //storefrontTemplate: "EDS", }; @@ -170,6 +172,7 @@ const mockCcdmStorefrontProcessedCtx = { websiteCode: "WEBSITE_CODE", websiteId: 333333, websiteName: "website", + viewId: "12345678-1234-1234-1234-123456789abc", //storefrontTemplate: "EDS", }; diff --git a/packages/storefront-events-collector/tests/utils/mocks/dataLayer.ts b/packages/storefront-events-collector/tests/utils/mocks/dataLayer.ts index 89e20d4..a9e925d 100644 --- a/packages/storefront-events-collector/tests/utils/mocks/dataLayer.ts +++ b/packages/storefront-events-collector/tests/utils/mocks/dataLayer.ts @@ -344,6 +344,7 @@ const mockStorefront: StorefrontInstance = { websiteId: 333333, websiteName: "website", storefrontTemplate: "EDS", + viewId: "12345678-1234-1234-1234-123456789abc", }; const mockShopper: Shopper = { diff --git a/packages/storefront-events-sdk/src/types/schemas/storefrontInstance.ts b/packages/storefront-events-sdk/src/types/schemas/storefrontInstance.ts index 1f78aca..fddd7c0 100644 --- a/packages/storefront-events-sdk/src/types/schemas/storefrontInstance.ts +++ b/packages/storefront-events-sdk/src/types/schemas/storefrontInstance.ts @@ -18,4 +18,5 @@ export type StorefrontInstance = { catalogExtensionVersion?: string | null; locale?: string | null; // this field should stay null storefrontTemplate?: "Luma" | "EDS" | "Hyva" | "AEM CIF" | "Franklin" | "PWA Studio" | "Other"; + viewId?: string | null; // catalog view identifier }; diff --git a/packages/storefront-events-sdk/tests/mocks.ts b/packages/storefront-events-sdk/tests/mocks.ts index 80282f5..00b979f 100644 --- a/packages/storefront-events-sdk/tests/mocks.ts +++ b/packages/storefront-events-sdk/tests/mocks.ts @@ -409,6 +409,7 @@ export const generateStorefrontInstanceContext = (overrides?: Partial