@athoscommerce/beacon 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/merge.yml +28 -0
- package/.github/workflows/publish.yml +45 -0
- package/.github/workflows/tests.yml +22 -0
- package/.versionrc +18 -0
- package/CHANGELOG.md +249 -0
- package/README.md +970 -0
- package/beacon.v2.snap.types.oas.yaml +3213 -0
- package/dist/cdn/beacon.js +2 -0
- package/dist/cdn/beacon.js.LICENSE.txt +1 -0
- package/dist/cjs/package.json +78 -0
- package/dist/cjs/src/Beacon.d.ts +181 -0
- package/dist/cjs/src/Beacon.d.ts.map +1 -0
- package/dist/cjs/src/Beacon.js +1153 -0
- package/dist/cjs/src/client/apis/AutocompleteApi.d.ts +89 -0
- package/dist/cjs/src/client/apis/AutocompleteApi.d.ts.map +1 -0
- package/dist/cjs/src/client/apis/AutocompleteApi.js +378 -0
- package/dist/cjs/src/client/apis/CartApi.d.ts +47 -0
- package/dist/cjs/src/client/apis/CartApi.d.ts.map +1 -0
- package/dist/cjs/src/client/apis/CartApi.js +219 -0
- package/dist/cjs/src/client/apis/CategoryApi.d.ts +75 -0
- package/dist/cjs/src/client/apis/CategoryApi.d.ts.map +1 -0
- package/dist/cjs/src/client/apis/CategoryApi.js +325 -0
- package/dist/cjs/src/client/apis/ErrorLogsApi.d.ts +61 -0
- package/dist/cjs/src/client/apis/ErrorLogsApi.d.ts.map +1 -0
- package/dist/cjs/src/client/apis/ErrorLogsApi.js +272 -0
- package/dist/cjs/src/client/apis/MessagingRecommendationsApi.d.ts +75 -0
- package/dist/cjs/src/client/apis/MessagingRecommendationsApi.d.ts.map +1 -0
- package/dist/cjs/src/client/apis/MessagingRecommendationsApi.js +325 -0
- package/dist/cjs/src/client/apis/OrderApi.d.ts +33 -0
- package/dist/cjs/src/client/apis/OrderApi.d.ts.map +1 -0
- package/dist/cjs/src/client/apis/OrderApi.js +166 -0
- package/dist/cjs/src/client/apis/ProductApi.d.ts +33 -0
- package/dist/cjs/src/client/apis/ProductApi.d.ts.map +1 -0
- package/dist/cjs/src/client/apis/ProductApi.js +166 -0
- package/dist/cjs/src/client/apis/RecommendationsApi.d.ts +75 -0
- package/dist/cjs/src/client/apis/RecommendationsApi.d.ts.map +1 -0
- package/dist/cjs/src/client/apis/RecommendationsApi.js +325 -0
- package/dist/cjs/src/client/apis/SearchApi.d.ts +89 -0
- package/dist/cjs/src/client/apis/SearchApi.d.ts.map +1 -0
- package/dist/cjs/src/client/apis/SearchApi.js +378 -0
- package/dist/cjs/src/client/apis/ShopperApi.d.ts +33 -0
- package/dist/cjs/src/client/apis/ShopperApi.d.ts.map +1 -0
- package/dist/cjs/src/client/apis/ShopperApi.js +166 -0
- package/dist/cjs/src/client/apis/index.d.ts +11 -0
- package/dist/cjs/src/client/apis/index.d.ts.map +1 -0
- package/dist/cjs/src/client/apis/index.js +28 -0
- package/dist/cjs/src/client/index.d.ts +4 -0
- package/dist/cjs/src/client/index.d.ts.map +1 -0
- package/dist/cjs/src/client/index.js +21 -0
- package/dist/cjs/src/client/models/AddtocartSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/AddtocartSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/AddtocartSchema.js +57 -0
- package/dist/cjs/src/client/models/AddtocartSchemaData.d.ts +40 -0
- package/dist/cjs/src/client/models/AddtocartSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/AddtocartSchemaData.js +56 -0
- package/dist/cjs/src/client/models/AttributionInner.d.ts +39 -0
- package/dist/cjs/src/client/models/AttributionInner.d.ts.map +1 -0
- package/dist/cjs/src/client/models/AttributionInner.js +55 -0
- package/dist/cjs/src/client/models/BannersInner.d.ts +33 -0
- package/dist/cjs/src/client/models/BannersInner.d.ts.map +1 -0
- package/dist/cjs/src/client/models/BannersInner.js +51 -0
- package/dist/cjs/src/client/models/CartSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/CartSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/CartSchema.js +57 -0
- package/dist/cjs/src/client/models/CartSchemaData.d.ts +40 -0
- package/dist/cjs/src/client/models/CartSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/CartSchemaData.js +56 -0
- package/dist/cjs/src/client/models/ClickthroughBannersInner.d.ts +33 -0
- package/dist/cjs/src/client/models/ClickthroughBannersInner.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ClickthroughBannersInner.js +51 -0
- package/dist/cjs/src/client/models/ClickthroughBannersSchema.d.ts +40 -0
- package/dist/cjs/src/client/models/ClickthroughBannersSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ClickthroughBannersSchema.js +56 -0
- package/dist/cjs/src/client/models/ClickthroughBannersSchema1.d.ts +46 -0
- package/dist/cjs/src/client/models/ClickthroughBannersSchema1.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ClickthroughBannersSchema1.js +60 -0
- package/dist/cjs/src/client/models/ClickthroughResultsInner.d.ts +24 -0
- package/dist/cjs/src/client/models/ClickthroughResultsInner.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ClickthroughResultsInner.js +58 -0
- package/dist/cjs/src/client/models/ClickthroughResultsSchema.d.ts +40 -0
- package/dist/cjs/src/client/models/ClickthroughResultsSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ClickthroughResultsSchema.js +56 -0
- package/dist/cjs/src/client/models/ClickthroughResultsSchema1.d.ts +46 -0
- package/dist/cjs/src/client/models/ClickthroughResultsSchema1.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ClickthroughResultsSchema1.js +60 -0
- package/dist/cjs/src/client/models/ClickthroughSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/ClickthroughSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ClickthroughSchema.js +57 -0
- package/dist/cjs/src/client/models/ClickthroughSchemaData.d.ts +24 -0
- package/dist/cjs/src/client/models/ClickthroughSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ClickthroughSchemaData.js +58 -0
- package/dist/cjs/src/client/models/Context.d.ts +101 -0
- package/dist/cjs/src/client/models/Context.d.ts.map +1 -0
- package/dist/cjs/src/client/models/Context.js +85 -0
- package/dist/cjs/src/client/models/Currency.d.ts +33 -0
- package/dist/cjs/src/client/models/Currency.d.ts.map +1 -0
- package/dist/cjs/src/client/models/Currency.js +49 -0
- package/dist/cjs/src/client/models/ErrorResponseBody.d.ts +45 -0
- package/dist/cjs/src/client/models/ErrorResponseBody.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ErrorResponseBody.js +53 -0
- package/dist/cjs/src/client/models/ImpressionSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/ImpressionSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ImpressionSchema.js +57 -0
- package/dist/cjs/src/client/models/ImpressionSchemaData.d.ts +47 -0
- package/dist/cjs/src/client/models/ImpressionSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ImpressionSchemaData.js +61 -0
- package/dist/cjs/src/client/models/InlineObject.d.ts +33 -0
- package/dist/cjs/src/client/models/InlineObject.d.ts.map +1 -0
- package/dist/cjs/src/client/models/InlineObject.js +49 -0
- package/dist/cjs/src/client/models/InlineObject1.d.ts +51 -0
- package/dist/cjs/src/client/models/InlineObject1.d.ts.map +1 -0
- package/dist/cjs/src/client/models/InlineObject1.js +55 -0
- package/dist/cjs/src/client/models/LogSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/LogSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/LogSchema.js +57 -0
- package/dist/cjs/src/client/models/LogSchemaData.d.ts +45 -0
- package/dist/cjs/src/client/models/LogSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/LogSchemaData.js +55 -0
- package/dist/cjs/src/client/models/MessagingSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/MessagingSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/MessagingSchema.js +57 -0
- package/dist/cjs/src/client/models/MessagingSchemaContext.d.ts +45 -0
- package/dist/cjs/src/client/models/MessagingSchemaContext.d.ts.map +1 -0
- package/dist/cjs/src/client/models/MessagingSchemaContext.js +57 -0
- package/dist/cjs/src/client/models/MessagingSchemaData.d.ts +39 -0
- package/dist/cjs/src/client/models/MessagingSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/MessagingSchemaData.js +55 -0
- package/dist/cjs/src/client/models/OrderTransactionSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/OrderTransactionSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/OrderTransactionSchema.js +57 -0
- package/dist/cjs/src/client/models/OrderTransactionSchemaData.d.ts +76 -0
- package/dist/cjs/src/client/models/OrderTransactionSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/OrderTransactionSchemaData.js +72 -0
- package/dist/cjs/src/client/models/PersonalizationLogContext.d.ts +39 -0
- package/dist/cjs/src/client/models/PersonalizationLogContext.d.ts.map +1 -0
- package/dist/cjs/src/client/models/PersonalizationLogContext.js +53 -0
- package/dist/cjs/src/client/models/PersonalizationLogSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/PersonalizationLogSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/PersonalizationLogSchema.js +57 -0
- package/dist/cjs/src/client/models/PersonalizationLogSchemaData.d.ts +45 -0
- package/dist/cjs/src/client/models/PersonalizationLogSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/PersonalizationLogSchemaData.js +53 -0
- package/dist/cjs/src/client/models/Product.d.ts +57 -0
- package/dist/cjs/src/client/models/Product.d.ts.map +1 -0
- package/dist/cjs/src/client/models/Product.js +65 -0
- package/dist/cjs/src/client/models/ProductPageviewSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/ProductPageviewSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ProductPageviewSchema.js +57 -0
- package/dist/cjs/src/client/models/ProductPageviewSchemaData.d.ts +34 -0
- package/dist/cjs/src/client/models/ProductPageviewSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ProductPageviewSchemaData.js +52 -0
- package/dist/cjs/src/client/models/ProductPageviewSchemaDataResult.d.ts +45 -0
- package/dist/cjs/src/client/models/ProductPageviewSchemaDataResult.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ProductPageviewSchemaDataResult.js +57 -0
- package/dist/cjs/src/client/models/RecommendationsAddtocartSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/RecommendationsAddtocartSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/RecommendationsAddtocartSchema.js +57 -0
- package/dist/cjs/src/client/models/RecommendationsAddtocartSchemaData.d.ts +46 -0
- package/dist/cjs/src/client/models/RecommendationsAddtocartSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/RecommendationsAddtocartSchemaData.js +60 -0
- package/dist/cjs/src/client/models/RecommendationsClickthroughSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/RecommendationsClickthroughSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/RecommendationsClickthroughSchema.js +57 -0
- package/dist/cjs/src/client/models/RecommendationsClickthroughSchemaData.d.ts +24 -0
- package/dist/cjs/src/client/models/RecommendationsClickthroughSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/RecommendationsClickthroughSchemaData.js +58 -0
- package/dist/cjs/src/client/models/RecommendationsImpressionSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/RecommendationsImpressionSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/RecommendationsImpressionSchema.js +57 -0
- package/dist/cjs/src/client/models/RecommendationsImpressionSchemaData.d.ts +53 -0
- package/dist/cjs/src/client/models/RecommendationsImpressionSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/RecommendationsImpressionSchemaData.js +63 -0
- package/dist/cjs/src/client/models/RecommendationsRenderSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/RecommendationsRenderSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/RecommendationsRenderSchema.js +57 -0
- package/dist/cjs/src/client/models/RecommendationsRenderSchemaData.d.ts +39 -0
- package/dist/cjs/src/client/models/RecommendationsRenderSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/RecommendationsRenderSchemaData.js +55 -0
- package/dist/cjs/src/client/models/RedirectSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/RedirectSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/RedirectSchema.js +57 -0
- package/dist/cjs/src/client/models/RedirectSchemaData.d.ts +39 -0
- package/dist/cjs/src/client/models/RedirectSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/RedirectSchemaData.js +55 -0
- package/dist/cjs/src/client/models/RenderSchema.d.ts +41 -0
- package/dist/cjs/src/client/models/RenderSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/RenderSchema.js +57 -0
- package/dist/cjs/src/client/models/RenderSchemaData.d.ts +33 -0
- package/dist/cjs/src/client/models/RenderSchemaData.d.ts.map +1 -0
- package/dist/cjs/src/client/models/RenderSchemaData.js +51 -0
- package/dist/cjs/src/client/models/ResultProduct.d.ts +52 -0
- package/dist/cjs/src/client/models/ResultProduct.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ResultProduct.js +62 -0
- package/dist/cjs/src/client/models/ResultProductType.d.ts +26 -0
- package/dist/cjs/src/client/models/ResultProductType.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ResultProductType.js +51 -0
- package/dist/cjs/src/client/models/ResultResultBanner.d.ts +40 -0
- package/dist/cjs/src/client/models/ResultResultBanner.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ResultResultBanner.js +56 -0
- package/dist/cjs/src/client/models/ResultsInner.d.ts +24 -0
- package/dist/cjs/src/client/models/ResultsInner.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ResultsInner.js +58 -0
- package/dist/cjs/src/client/models/ShopperContext.d.ts +101 -0
- package/dist/cjs/src/client/models/ShopperContext.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ShopperContext.js +87 -0
- package/dist/cjs/src/client/models/ShopperLoginSchema.d.ts +34 -0
- package/dist/cjs/src/client/models/ShopperLoginSchema.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ShopperLoginSchema.js +52 -0
- package/dist/cjs/src/client/models/ValidationErrorWithDataField.d.ts +51 -0
- package/dist/cjs/src/client/models/ValidationErrorWithDataField.d.ts.map +1 -0
- package/dist/cjs/src/client/models/ValidationErrorWithDataField.js +55 -0
- package/dist/cjs/src/client/models/index.d.ts +55 -0
- package/dist/cjs/src/client/models/index.d.ts.map +1 -0
- package/dist/cjs/src/client/models/index.js +72 -0
- package/dist/cjs/src/client/runtime.d.ts +185 -0
- package/dist/cjs/src/client/runtime.d.ts.map +1 -0
- package/dist/cjs/src/client/runtime.js +564 -0
- package/dist/cjs/src/index.d.ts +4 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/src/index.js +21 -0
- package/dist/cjs/src/indexCDN.d.ts +2 -0
- package/dist/cjs/src/indexCDN.d.ts.map +1 -0
- package/dist/cjs/src/indexCDN.js +40 -0
- package/dist/cjs/src/utils/featureFlags.d.ts +11 -0
- package/dist/cjs/src/utils/featureFlags.d.ts.map +1 -0
- package/dist/cjs/src/utils/featureFlags.js +33 -0
- package/dist/esm/package.json +78 -0
- package/dist/esm/src/Beacon.d.ts +181 -0
- package/dist/esm/src/Beacon.d.ts.map +1 -0
- package/dist/esm/src/Beacon.js +1074 -0
- package/dist/esm/src/client/apis/AutocompleteApi.d.ts +89 -0
- package/dist/esm/src/client/apis/AutocompleteApi.d.ts.map +1 -0
- package/dist/esm/src/client/apis/AutocompleteApi.js +185 -0
- package/dist/esm/src/client/apis/CartApi.d.ts +47 -0
- package/dist/esm/src/client/apis/CartApi.d.ts.map +1 -0
- package/dist/esm/src/client/apis/CartApi.js +86 -0
- package/dist/esm/src/client/apis/CategoryApi.d.ts +75 -0
- package/dist/esm/src/client/apis/CategoryApi.d.ts.map +1 -0
- package/dist/esm/src/client/apis/CategoryApi.js +152 -0
- package/dist/esm/src/client/apis/ErrorLogsApi.d.ts +61 -0
- package/dist/esm/src/client/apis/ErrorLogsApi.d.ts.map +1 -0
- package/dist/esm/src/client/apis/ErrorLogsApi.js +119 -0
- package/dist/esm/src/client/apis/MessagingRecommendationsApi.d.ts +75 -0
- package/dist/esm/src/client/apis/MessagingRecommendationsApi.d.ts.map +1 -0
- package/dist/esm/src/client/apis/MessagingRecommendationsApi.js +152 -0
- package/dist/esm/src/client/apis/OrderApi.d.ts +33 -0
- package/dist/esm/src/client/apis/OrderApi.d.ts.map +1 -0
- package/dist/esm/src/client/apis/OrderApi.js +53 -0
- package/dist/esm/src/client/apis/ProductApi.d.ts +33 -0
- package/dist/esm/src/client/apis/ProductApi.d.ts.map +1 -0
- package/dist/esm/src/client/apis/ProductApi.js +53 -0
- package/dist/esm/src/client/apis/RecommendationsApi.d.ts +75 -0
- package/dist/esm/src/client/apis/RecommendationsApi.d.ts.map +1 -0
- package/dist/esm/src/client/apis/RecommendationsApi.js +152 -0
- package/dist/esm/src/client/apis/SearchApi.d.ts +89 -0
- package/dist/esm/src/client/apis/SearchApi.d.ts.map +1 -0
- package/dist/esm/src/client/apis/SearchApi.js +185 -0
- package/dist/esm/src/client/apis/ShopperApi.d.ts +33 -0
- package/dist/esm/src/client/apis/ShopperApi.d.ts.map +1 -0
- package/dist/esm/src/client/apis/ShopperApi.js +53 -0
- package/dist/esm/src/client/apis/index.d.ts +11 -0
- package/dist/esm/src/client/apis/index.d.ts.map +1 -0
- package/dist/esm/src/client/apis/index.js +12 -0
- package/dist/esm/src/client/index.d.ts +4 -0
- package/dist/esm/src/client/index.d.ts.map +1 -0
- package/dist/esm/src/client/index.js +5 -0
- package/dist/esm/src/client/models/AddtocartSchema.d.ts +41 -0
- package/dist/esm/src/client/models/AddtocartSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/AddtocartSchema.js +49 -0
- package/dist/esm/src/client/models/AddtocartSchemaData.d.ts +40 -0
- package/dist/esm/src/client/models/AddtocartSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/AddtocartSchemaData.js +48 -0
- package/dist/esm/src/client/models/AttributionInner.d.ts +39 -0
- package/dist/esm/src/client/models/AttributionInner.d.ts.map +1 -0
- package/dist/esm/src/client/models/AttributionInner.js +47 -0
- package/dist/esm/src/client/models/BannersInner.d.ts +33 -0
- package/dist/esm/src/client/models/BannersInner.d.ts.map +1 -0
- package/dist/esm/src/client/models/BannersInner.js +43 -0
- package/dist/esm/src/client/models/CartSchema.d.ts +41 -0
- package/dist/esm/src/client/models/CartSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/CartSchema.js +49 -0
- package/dist/esm/src/client/models/CartSchemaData.d.ts +40 -0
- package/dist/esm/src/client/models/CartSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/CartSchemaData.js +48 -0
- package/dist/esm/src/client/models/ClickthroughBannersInner.d.ts +33 -0
- package/dist/esm/src/client/models/ClickthroughBannersInner.d.ts.map +1 -0
- package/dist/esm/src/client/models/ClickthroughBannersInner.js +43 -0
- package/dist/esm/src/client/models/ClickthroughBannersSchema.d.ts +40 -0
- package/dist/esm/src/client/models/ClickthroughBannersSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/ClickthroughBannersSchema.js +48 -0
- package/dist/esm/src/client/models/ClickthroughBannersSchema1.d.ts +46 -0
- package/dist/esm/src/client/models/ClickthroughBannersSchema1.d.ts.map +1 -0
- package/dist/esm/src/client/models/ClickthroughBannersSchema1.js +52 -0
- package/dist/esm/src/client/models/ClickthroughResultsInner.d.ts +24 -0
- package/dist/esm/src/client/models/ClickthroughResultsInner.d.ts.map +1 -0
- package/dist/esm/src/client/models/ClickthroughResultsInner.js +51 -0
- package/dist/esm/src/client/models/ClickthroughResultsSchema.d.ts +40 -0
- package/dist/esm/src/client/models/ClickthroughResultsSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/ClickthroughResultsSchema.js +48 -0
- package/dist/esm/src/client/models/ClickthroughResultsSchema1.d.ts +46 -0
- package/dist/esm/src/client/models/ClickthroughResultsSchema1.d.ts.map +1 -0
- package/dist/esm/src/client/models/ClickthroughResultsSchema1.js +52 -0
- package/dist/esm/src/client/models/ClickthroughSchema.d.ts +41 -0
- package/dist/esm/src/client/models/ClickthroughSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/ClickthroughSchema.js +49 -0
- package/dist/esm/src/client/models/ClickthroughSchemaData.d.ts +24 -0
- package/dist/esm/src/client/models/ClickthroughSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/ClickthroughSchemaData.js +51 -0
- package/dist/esm/src/client/models/Context.d.ts +101 -0
- package/dist/esm/src/client/models/Context.d.ts.map +1 -0
- package/dist/esm/src/client/models/Context.js +77 -0
- package/dist/esm/src/client/models/Currency.d.ts +33 -0
- package/dist/esm/src/client/models/Currency.d.ts.map +1 -0
- package/dist/esm/src/client/models/Currency.js +41 -0
- package/dist/esm/src/client/models/ErrorResponseBody.d.ts +45 -0
- package/dist/esm/src/client/models/ErrorResponseBody.d.ts.map +1 -0
- package/dist/esm/src/client/models/ErrorResponseBody.js +45 -0
- package/dist/esm/src/client/models/ImpressionSchema.d.ts +41 -0
- package/dist/esm/src/client/models/ImpressionSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/ImpressionSchema.js +49 -0
- package/dist/esm/src/client/models/ImpressionSchemaData.d.ts +47 -0
- package/dist/esm/src/client/models/ImpressionSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/ImpressionSchemaData.js +53 -0
- package/dist/esm/src/client/models/InlineObject.d.ts +33 -0
- package/dist/esm/src/client/models/InlineObject.d.ts.map +1 -0
- package/dist/esm/src/client/models/InlineObject.js +41 -0
- package/dist/esm/src/client/models/InlineObject1.d.ts +51 -0
- package/dist/esm/src/client/models/InlineObject1.d.ts.map +1 -0
- package/dist/esm/src/client/models/InlineObject1.js +47 -0
- package/dist/esm/src/client/models/LogSchema.d.ts +41 -0
- package/dist/esm/src/client/models/LogSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/LogSchema.js +49 -0
- package/dist/esm/src/client/models/LogSchemaData.d.ts +45 -0
- package/dist/esm/src/client/models/LogSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/LogSchemaData.js +47 -0
- package/dist/esm/src/client/models/MessagingSchema.d.ts +41 -0
- package/dist/esm/src/client/models/MessagingSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/MessagingSchema.js +49 -0
- package/dist/esm/src/client/models/MessagingSchemaContext.d.ts +45 -0
- package/dist/esm/src/client/models/MessagingSchemaContext.d.ts.map +1 -0
- package/dist/esm/src/client/models/MessagingSchemaContext.js +49 -0
- package/dist/esm/src/client/models/MessagingSchemaData.d.ts +39 -0
- package/dist/esm/src/client/models/MessagingSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/MessagingSchemaData.js +47 -0
- package/dist/esm/src/client/models/OrderTransactionSchema.d.ts +41 -0
- package/dist/esm/src/client/models/OrderTransactionSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/OrderTransactionSchema.js +49 -0
- package/dist/esm/src/client/models/OrderTransactionSchemaData.d.ts +76 -0
- package/dist/esm/src/client/models/OrderTransactionSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/OrderTransactionSchemaData.js +64 -0
- package/dist/esm/src/client/models/PersonalizationLogContext.d.ts +39 -0
- package/dist/esm/src/client/models/PersonalizationLogContext.d.ts.map +1 -0
- package/dist/esm/src/client/models/PersonalizationLogContext.js +45 -0
- package/dist/esm/src/client/models/PersonalizationLogSchema.d.ts +41 -0
- package/dist/esm/src/client/models/PersonalizationLogSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/PersonalizationLogSchema.js +49 -0
- package/dist/esm/src/client/models/PersonalizationLogSchemaData.d.ts +45 -0
- package/dist/esm/src/client/models/PersonalizationLogSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/PersonalizationLogSchemaData.js +45 -0
- package/dist/esm/src/client/models/Product.d.ts +57 -0
- package/dist/esm/src/client/models/Product.d.ts.map +1 -0
- package/dist/esm/src/client/models/Product.js +57 -0
- package/dist/esm/src/client/models/ProductPageviewSchema.d.ts +41 -0
- package/dist/esm/src/client/models/ProductPageviewSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/ProductPageviewSchema.js +49 -0
- package/dist/esm/src/client/models/ProductPageviewSchemaData.d.ts +34 -0
- package/dist/esm/src/client/models/ProductPageviewSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/ProductPageviewSchemaData.js +44 -0
- package/dist/esm/src/client/models/ProductPageviewSchemaDataResult.d.ts +45 -0
- package/dist/esm/src/client/models/ProductPageviewSchemaDataResult.d.ts.map +1 -0
- package/dist/esm/src/client/models/ProductPageviewSchemaDataResult.js +49 -0
- package/dist/esm/src/client/models/RecommendationsAddtocartSchema.d.ts +41 -0
- package/dist/esm/src/client/models/RecommendationsAddtocartSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/RecommendationsAddtocartSchema.js +49 -0
- package/dist/esm/src/client/models/RecommendationsAddtocartSchemaData.d.ts +46 -0
- package/dist/esm/src/client/models/RecommendationsAddtocartSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/RecommendationsAddtocartSchemaData.js +52 -0
- package/dist/esm/src/client/models/RecommendationsClickthroughSchema.d.ts +41 -0
- package/dist/esm/src/client/models/RecommendationsClickthroughSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/RecommendationsClickthroughSchema.js +49 -0
- package/dist/esm/src/client/models/RecommendationsClickthroughSchemaData.d.ts +24 -0
- package/dist/esm/src/client/models/RecommendationsClickthroughSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/RecommendationsClickthroughSchemaData.js +51 -0
- package/dist/esm/src/client/models/RecommendationsImpressionSchema.d.ts +41 -0
- package/dist/esm/src/client/models/RecommendationsImpressionSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/RecommendationsImpressionSchema.js +49 -0
- package/dist/esm/src/client/models/RecommendationsImpressionSchemaData.d.ts +53 -0
- package/dist/esm/src/client/models/RecommendationsImpressionSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/RecommendationsImpressionSchemaData.js +55 -0
- package/dist/esm/src/client/models/RecommendationsRenderSchema.d.ts +41 -0
- package/dist/esm/src/client/models/RecommendationsRenderSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/RecommendationsRenderSchema.js +49 -0
- package/dist/esm/src/client/models/RecommendationsRenderSchemaData.d.ts +39 -0
- package/dist/esm/src/client/models/RecommendationsRenderSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/RecommendationsRenderSchemaData.js +47 -0
- package/dist/esm/src/client/models/RedirectSchema.d.ts +41 -0
- package/dist/esm/src/client/models/RedirectSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/RedirectSchema.js +49 -0
- package/dist/esm/src/client/models/RedirectSchemaData.d.ts +39 -0
- package/dist/esm/src/client/models/RedirectSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/RedirectSchemaData.js +47 -0
- package/dist/esm/src/client/models/RenderSchema.d.ts +41 -0
- package/dist/esm/src/client/models/RenderSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/RenderSchema.js +49 -0
- package/dist/esm/src/client/models/RenderSchemaData.d.ts +33 -0
- package/dist/esm/src/client/models/RenderSchemaData.d.ts.map +1 -0
- package/dist/esm/src/client/models/RenderSchemaData.js +43 -0
- package/dist/esm/src/client/models/ResultProduct.d.ts +52 -0
- package/dist/esm/src/client/models/ResultProduct.d.ts.map +1 -0
- package/dist/esm/src/client/models/ResultProduct.js +54 -0
- package/dist/esm/src/client/models/ResultProductType.d.ts +26 -0
- package/dist/esm/src/client/models/ResultProductType.d.ts.map +1 -0
- package/dist/esm/src/client/models/ResultProductType.js +43 -0
- package/dist/esm/src/client/models/ResultResultBanner.d.ts +40 -0
- package/dist/esm/src/client/models/ResultResultBanner.d.ts.map +1 -0
- package/dist/esm/src/client/models/ResultResultBanner.js +48 -0
- package/dist/esm/src/client/models/ResultsInner.d.ts +24 -0
- package/dist/esm/src/client/models/ResultsInner.d.ts.map +1 -0
- package/dist/esm/src/client/models/ResultsInner.js +51 -0
- package/dist/esm/src/client/models/ShopperContext.d.ts +101 -0
- package/dist/esm/src/client/models/ShopperContext.d.ts.map +1 -0
- package/dist/esm/src/client/models/ShopperContext.js +79 -0
- package/dist/esm/src/client/models/ShopperLoginSchema.d.ts +34 -0
- package/dist/esm/src/client/models/ShopperLoginSchema.d.ts.map +1 -0
- package/dist/esm/src/client/models/ShopperLoginSchema.js +44 -0
- package/dist/esm/src/client/models/ValidationErrorWithDataField.d.ts +51 -0
- package/dist/esm/src/client/models/ValidationErrorWithDataField.d.ts.map +1 -0
- package/dist/esm/src/client/models/ValidationErrorWithDataField.js +47 -0
- package/dist/esm/src/client/models/index.d.ts +55 -0
- package/dist/esm/src/client/models/index.d.ts.map +1 -0
- package/dist/esm/src/client/models/index.js +56 -0
- package/dist/esm/src/client/runtime.d.ts +185 -0
- package/dist/esm/src/client/runtime.d.ts.map +1 -0
- package/dist/esm/src/client/runtime.js +322 -0
- package/dist/esm/src/index.d.ts +4 -0
- package/dist/esm/src/index.d.ts.map +1 -0
- package/dist/esm/src/index.js +3 -0
- package/dist/esm/src/indexCDN.d.ts +2 -0
- package/dist/esm/src/indexCDN.d.ts.map +1 -0
- package/dist/esm/src/indexCDN.js +33 -0
- package/dist/esm/src/utils/featureFlags.d.ts +11 -0
- package/dist/esm/src/utils/featureFlags.d.ts.map +1 -0
- package/dist/esm/src/utils/featureFlags.js +27 -0
- package/jest.config.js +14 -0
- package/openapitools.json +7 -0
- package/package.json +78 -0
- package/public/index.html +18 -0
- package/src/Beacon.test.ts +1487 -0
- package/src/Beacon.ts +1322 -0
- package/src/client/.openapi-generator/FILES +133 -0
- package/src/client/.openapi-generator/VERSION +1 -0
- package/src/client/.openapi-generator-ignore +23 -0
- package/src/client/apis/AutocompleteApi.ts +321 -0
- package/src/client/apis/CartApi.ts +147 -0
- package/src/client/apis/CategoryApi.ts +264 -0
- package/src/client/apis/ErrorLogsApi.ts +204 -0
- package/src/client/apis/MessagingRecommendationsApi.ts +255 -0
- package/src/client/apis/OrderApi.ts +93 -0
- package/src/client/apis/ProductApi.ts +93 -0
- package/src/client/apis/RecommendationsApi.ts +264 -0
- package/src/client/apis/SearchApi.ts +321 -0
- package/src/client/apis/ShopperApi.ts +93 -0
- package/src/client/apis/index.ts +12 -0
- package/src/client/docs/AddtocartSchema.md +36 -0
- package/src/client/docs/AddtocartSchemaData.md +37 -0
- package/src/client/docs/AttributionInner.md +36 -0
- package/src/client/docs/AutocompleteApi.md +393 -0
- package/src/client/docs/BannersInner.md +34 -0
- package/src/client/docs/CartApi.md +162 -0
- package/src/client/docs/CartSchema.md +36 -0
- package/src/client/docs/CartSchemaData.md +37 -0
- package/src/client/docs/CategoryApi.md +316 -0
- package/src/client/docs/ClickthroughBannersInner.md +34 -0
- package/src/client/docs/ClickthroughBannersSchema.md +36 -0
- package/src/client/docs/ClickthroughBannersSchema1.md +38 -0
- package/src/client/docs/ClickthroughResultsInner.md +40 -0
- package/src/client/docs/ClickthroughResultsSchema.md +36 -0
- package/src/client/docs/ClickthroughResultsSchema1.md +38 -0
- package/src/client/docs/ClickthroughSchema.md +36 -0
- package/src/client/docs/ClickthroughSchemaData.md +39 -0
- package/src/client/docs/Context.md +57 -0
- package/src/client/docs/Currency.md +35 -0
- package/src/client/docs/ErrorLogsApi.md +239 -0
- package/src/client/docs/ErrorResponseBody.md +38 -0
- package/src/client/docs/ImpressionSchema.md +36 -0
- package/src/client/docs/ImpressionSchemaData.md +39 -0
- package/src/client/docs/InlineObject.md +34 -0
- package/src/client/docs/InlineObject1.md +40 -0
- package/src/client/docs/LogSchema.md +36 -0
- package/src/client/docs/LogSchemaData.md +39 -0
- package/src/client/docs/MessagingRecommendationsApi.md +316 -0
- package/src/client/docs/MessagingSchema.md +36 -0
- package/src/client/docs/MessagingSchemaContext.md +39 -0
- package/src/client/docs/MessagingSchemaData.md +37 -0
- package/src/client/docs/OrderApi.md +85 -0
- package/src/client/docs/OrderTransactionSchema.md +36 -0
- package/src/client/docs/OrderTransactionSchemaData.md +49 -0
- package/src/client/docs/PersonalizationLogContext.md +36 -0
- package/src/client/docs/PersonalizationLogSchema.md +36 -0
- package/src/client/docs/PersonalizationLogSchemaData.md +39 -0
- package/src/client/docs/Product.md +43 -0
- package/src/client/docs/ProductApi.md +85 -0
- package/src/client/docs/ProductPageviewSchema.md +36 -0
- package/src/client/docs/ProductPageviewSchemaData.md +35 -0
- package/src/client/docs/ProductPageviewSchemaDataResult.md +39 -0
- package/src/client/docs/RecommendationsAddtocartSchema.md +36 -0
- package/src/client/docs/RecommendationsAddtocartSchemaData.md +39 -0
- package/src/client/docs/RecommendationsApi.md +316 -0
- package/src/client/docs/RecommendationsClickthroughSchema.md +36 -0
- package/src/client/docs/RecommendationsClickthroughSchemaData.md +41 -0
- package/src/client/docs/RecommendationsImpressionSchema.md +36 -0
- package/src/client/docs/RecommendationsImpressionSchemaData.md +41 -0
- package/src/client/docs/RecommendationsRenderSchema.md +36 -0
- package/src/client/docs/RecommendationsRenderSchemaData.md +37 -0
- package/src/client/docs/RedirectSchema.md +36 -0
- package/src/client/docs/RedirectSchemaData.md +37 -0
- package/src/client/docs/RenderSchema.md +36 -0
- package/src/client/docs/RenderSchemaData.md +35 -0
- package/src/client/docs/ResultProduct.md +41 -0
- package/src/client/docs/ResultProductType.md +33 -0
- package/src/client/docs/ResultResultBanner.md +37 -0
- package/src/client/docs/ResultsInner.md +40 -0
- package/src/client/docs/SearchApi.md +393 -0
- package/src/client/docs/ShopperApi.md +85 -0
- package/src/client/docs/ShopperContext.md +57 -0
- package/src/client/docs/ShopperLoginSchema.md +34 -0
- package/src/client/docs/ValidationErrorWithDataField.md +40 -0
- package/src/client/index.ts +5 -0
- package/src/client/models/AddtocartSchema.ts +90 -0
- package/src/client/models/AddtocartSchemaData.ts +83 -0
- package/src/client/models/AttributionInner.ts +75 -0
- package/src/client/models/BannersInner.ts +66 -0
- package/src/client/models/CartSchema.ts +90 -0
- package/src/client/models/CartSchemaData.ts +83 -0
- package/src/client/models/ClickthroughBannersInner.ts +66 -0
- package/src/client/models/ClickthroughBannersSchema.ts +83 -0
- package/src/client/models/ClickthroughBannersSchema1.ts +92 -0
- package/src/client/models/ClickthroughResultsInner.ts +76 -0
- package/src/client/models/ClickthroughResultsSchema.ts +83 -0
- package/src/client/models/ClickthroughResultsSchema1.ts +92 -0
- package/src/client/models/ClickthroughSchema.ts +90 -0
- package/src/client/models/ClickthroughSchemaData.ts +76 -0
- package/src/client/models/Context.ts +174 -0
- package/src/client/models/Currency.ts +65 -0
- package/src/client/models/ErrorResponseBody.ts +81 -0
- package/src/client/models/ImpressionSchema.ts +90 -0
- package/src/client/models/ImpressionSchemaData.ts +99 -0
- package/src/client/models/InlineObject.ts +65 -0
- package/src/client/models/InlineObject1.ts +104 -0
- package/src/client/models/LogSchema.ts +90 -0
- package/src/client/models/LogSchemaData.ts +82 -0
- package/src/client/models/MessagingSchema.ts +90 -0
- package/src/client/models/MessagingSchemaContext.ts +83 -0
- package/src/client/models/MessagingSchemaData.ts +75 -0
- package/src/client/models/OrderTransactionSchema.ts +90 -0
- package/src/client/models/OrderTransactionSchemaData.ts +133 -0
- package/src/client/models/PersonalizationLogContext.ts +74 -0
- package/src/client/models/PersonalizationLogSchema.ts +90 -0
- package/src/client/models/PersonalizationLogSchemaData.ts +81 -0
- package/src/client/models/Product.ts +101 -0
- package/src/client/models/ProductPageviewSchema.ts +90 -0
- package/src/client/models/ProductPageviewSchemaData.ts +74 -0
- package/src/client/models/ProductPageviewSchemaDataResult.ts +83 -0
- package/src/client/models/RecommendationsAddtocartSchema.ts +90 -0
- package/src/client/models/RecommendationsAddtocartSchemaData.ts +92 -0
- package/src/client/models/RecommendationsClickthroughSchema.ts +90 -0
- package/src/client/models/RecommendationsClickthroughSchemaData.ts +76 -0
- package/src/client/models/RecommendationsImpressionSchema.ts +90 -0
- package/src/client/models/RecommendationsImpressionSchemaData.ts +107 -0
- package/src/client/models/RecommendationsRenderSchema.ts +90 -0
- package/src/client/models/RecommendationsRenderSchemaData.ts +75 -0
- package/src/client/models/RedirectSchema.ts +90 -0
- package/src/client/models/RedirectSchemaData.ts +75 -0
- package/src/client/models/RenderSchema.ts +90 -0
- package/src/client/models/RenderSchemaData.ts +66 -0
- package/src/client/models/ResultProduct.ts +102 -0
- package/src/client/models/ResultProductType.ts +53 -0
- package/src/client/models/ResultResultBanner.ts +85 -0
- package/src/client/models/ResultsInner.ts +76 -0
- package/src/client/models/ShopperContext.ts +175 -0
- package/src/client/models/ShopperLoginSchema.ts +74 -0
- package/src/client/models/ValidationErrorWithDataField.ts +89 -0
- package/src/client/models/index.ts +56 -0
- package/src/client/runtime.ts +432 -0
- package/src/index.ts +3 -0
- package/src/indexCDN.ts +34 -0
- package/src/utils/featureFlags.ts +35 -0
- package/tsconfig.cjs.json +31 -0
- package/tsconfig.json +34 -0
- package/webpack.prod.js +47 -0
package/README.md
ADDED
|
@@ -0,0 +1,970 @@
|
|
|
1
|
+
# beacon.js
|
|
2
|
+
|
|
3
|
+
A TypeScript library for tracking user interactions and analytics events to Athos Commerce's Beacon API. This library enables real-time tracking of user behavior across search, recommendations, autocomplete, and e-commerce interactions.
|
|
4
|
+
|
|
5
|
+
This package can be used by both Athos Commerce and Searchspring accounts.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- 🎯 **Multi-Channel Tracking**: Track events from search, autocomplete, recommendations, category pages, and product pages
|
|
10
|
+
- 📦 **Smart Batching**: Automatically batches requests for optimal performance
|
|
11
|
+
- 💾 **Local Storage Management**: Manages user IDs, session IDs, cart state, and viewed products
|
|
12
|
+
- 🔍 **Attribution Tracking**: Built-in support for tracking attribution and campaign sources
|
|
13
|
+
- 🎨 **Flexible Configuration**: Support for custom headers, custom fetch implementations, and multiple environments
|
|
14
|
+
- 🌍 **Multi-Currency**: Support for tracking transactions in different currencies
|
|
15
|
+
- ⚡ **Production Ready**: Optimized for performance with features like keepalive requests and efficient batching
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
### CDN
|
|
20
|
+
|
|
21
|
+
To use the beacon via our CDN build, place the following script before the page's closing `</head>` tag:
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<script siteId="[REPLACE WITH ATHOS OR SEARCHSPRING SITEID]" src="https://cdn.athoscommerce.net/analytics/beacon.js"></script>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The beacon will then be available for usage via `window.athos.tracker`
|
|
28
|
+
|
|
29
|
+
```html
|
|
30
|
+
<script>
|
|
31
|
+
window.athos.tracker.events.search.render({ data: { responseId: '35e5ea31-a537-471b-ba2b-6eea9caebe62' }})
|
|
32
|
+
</script>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
Utilizing this package via the CDN is preferred if you either:
|
|
37
|
+
|
|
38
|
+
- plan on integrating Athos API and are not sending events directly to the beacon endpoint.
|
|
39
|
+
|
|
40
|
+
OR
|
|
41
|
+
|
|
42
|
+
- You are actively developing an integration, however would like to start tracking events before going live with the integration. Note that after going live with a Snap integration, this beacon.js should be removed from the website, however the function calls can remain on the website. The Snap integration will publish an identical reference of this Beacon to the same path: `window.athos.tracker`.
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### NPM
|
|
46
|
+
|
|
47
|
+
If you are integrating Athos via API instead of utilizing Snap, the `@athoscommerce/beacon` package is available to use for your convenience.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npm install --save @athoscommerce/beacon
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
import { Beacon } from '@athoscommerce/beacon';
|
|
55
|
+
|
|
56
|
+
// Initialize Beacon with required siteId
|
|
57
|
+
const beacon = new Beacon({
|
|
58
|
+
siteId: 'abc123',
|
|
59
|
+
currency: { code: 'USD' }
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
// Track an autocomplete render event
|
|
63
|
+
beacon.events.autocomplete.render({
|
|
64
|
+
data: {
|
|
65
|
+
// ... render data
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
// Track a product page view
|
|
70
|
+
beacon.events.product.pageView({
|
|
71
|
+
data: {
|
|
72
|
+
result: {
|
|
73
|
+
uid: 'product-123',
|
|
74
|
+
sku: 'SKU-123',
|
|
75
|
+
parentId: 'parent-123'
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Initialization
|
|
82
|
+
|
|
83
|
+
### Beacon Globals
|
|
84
|
+
|
|
85
|
+
The first parameter to the `Beacon` constructor contains required and optional global configuration that applies to all tracking events.
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
import { Beacon } from '@athoscommerce/beacon';
|
|
89
|
+
|
|
90
|
+
const beacon = new Beacon({ siteId: 'abc123' });
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
| Option | Type | Description | Required |
|
|
94
|
+
|--------|------|-------------|----------|
|
|
95
|
+
| `siteId` | `string` | Your Athos site ID | ✔️ |
|
|
96
|
+
|
|
97
|
+
### Beacon Config
|
|
98
|
+
|
|
99
|
+
The second parameter to the `Beacon` constructor provides optional configuration for API behavior and request handling.
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
const beacon = new Beacon(
|
|
103
|
+
{ siteId: 'abc123' },
|
|
104
|
+
{
|
|
105
|
+
mode: 'development',
|
|
106
|
+
initiator: 'my-app/1.0.0',
|
|
107
|
+
requesters: {
|
|
108
|
+
beacon: {
|
|
109
|
+
origin: 'https://custom-beacon.example.com/beacon/v2',
|
|
110
|
+
headers: { 'Authorization': 'Bearer token' }
|
|
111
|
+
},
|
|
112
|
+
personalization: {
|
|
113
|
+
origin: 'https://custom-personalization.example.com',
|
|
114
|
+
headers: { 'X-Custom-Header': 'value' }
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
apis: {
|
|
118
|
+
fetch: customFetchImplementation
|
|
119
|
+
},
|
|
120
|
+
href: 'https://example.com/page',
|
|
121
|
+
userAgent: 'Custom User Agent'
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
| Option | Type | Description | Default |
|
|
127
|
+
|--------|------|-------------|---------|
|
|
128
|
+
| `mode` | `'production' \| 'development'` | Application mode. In development mode, errors are logged to console | `'production'` |
|
|
129
|
+
| `initiator` | `string` | Identifier for the beacon instance | `beaconjs/{version}` |
|
|
130
|
+
| `apis.fetch` | `FetchAPI` | Custom fetch implementation | `window.fetch` |
|
|
131
|
+
| `requesters.beacon.origin` | `string` | Custom beacon API endpoint | Auto-detected based on siteId |
|
|
132
|
+
| `requesters.beacon.headers` | `HTTPHeaders` | Custom headers for beacon API requests | `{ 'Content-Type': 'text/plain' }` |
|
|
133
|
+
| `requesters.personalization.origin` | `string` | Custom personalization preflight endpoint | Auto-detected based on siteId |
|
|
134
|
+
| `requesters.personalization.headers` | `HTTPHeaders` | Custom headers for personalization requests | |
|
|
135
|
+
| `href` | `string` | Override page URL for tracking | `window.location.href` |
|
|
136
|
+
| `userAgent` | `string` | Override user agent string | `navigator.userAgent` |
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
## Common properties
|
|
140
|
+
|
|
141
|
+
### responseId
|
|
142
|
+
|
|
143
|
+
The Athos Search, Autocomplete, and Recommendations APIs will return a `responseId` property that is required on most beacon event's payload. It will only be returned if the `beacon=true` parameter is provided to each API.
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
// Search API Example Response
|
|
147
|
+
const response = {
|
|
148
|
+
"breadcrumbs": [...],
|
|
149
|
+
"merchandising": {...},
|
|
150
|
+
"pagination": {...},
|
|
151
|
+
"query": {...},
|
|
152
|
+
"responseId": "f70594d2-c360-4292-8711-b256567099d3"
|
|
153
|
+
"results": [...],
|
|
154
|
+
"sorting": {...},
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
window.athos.tracker.events.search.render({
|
|
158
|
+
data: {
|
|
159
|
+
responseId: response.responseId,
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Merchandising Banner uid
|
|
165
|
+
|
|
166
|
+
When building the data payload for `banners`, the `uid` property is located within the Banner content. Here is an example of how you may choose to extract it.
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
// Search API Example Response
|
|
170
|
+
const response = {
|
|
171
|
+
"merchandising": {
|
|
172
|
+
"content": {
|
|
173
|
+
"header": [
|
|
174
|
+
"<script data-banner-id=\"440998\" data-banner-type=\"html\" data-banner-html=\"<div style="width: 100%; background: #ADD8E6; text-align: center; padding: 20px;">On Sale</div>\" type=\"text/widget\"></script><div style=\"width: 100%; background: #ADD8E6; text-align: center; padding: 20px;\">On Sale</div>"
|
|
175
|
+
],
|
|
176
|
+
"banner": [],
|
|
177
|
+
"footer": [],
|
|
178
|
+
"left": [],
|
|
179
|
+
"inline": []
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function getMerchandisingBannerUid(response, type) {
|
|
184
|
+
// Extract data-banner-id from the HTML string
|
|
185
|
+
const htmlString = response.merchandising?.content?.[type]?.[0] || '';
|
|
186
|
+
const match = typeof htmlString === 'string' && htmlString.match(/data-banner-id="(\d+)"/);
|
|
187
|
+
const uid = match ? match[1] : '';
|
|
188
|
+
return uid;
|
|
189
|
+
}
|
|
190
|
+
window.athos.tracker.events.search.impression({
|
|
191
|
+
data: {
|
|
192
|
+
responseId: response.responseId,
|
|
193
|
+
results: [],
|
|
194
|
+
banners: [
|
|
195
|
+
{ uid: getMerchandisingBannerUid(response, 'header') } // { uid: '440998' }
|
|
196
|
+
]
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
## Tracking Events
|
|
203
|
+
|
|
204
|
+
The Beacon class provides a comprehensive event tracking system organized by feature area. Each event method accepts a payload object containing the event data. An optional `siteId` can be provided to override the global siteId for a specific event.
|
|
205
|
+
|
|
206
|
+
### Shopper Events
|
|
207
|
+
|
|
208
|
+
#### Login
|
|
209
|
+
|
|
210
|
+
Track when a user logs into their shopper account.
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
window.athos.tracker.events.shopper.login({
|
|
214
|
+
data: { id: 'shopper-12345' }
|
|
215
|
+
});
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Autocomplete Events
|
|
219
|
+
|
|
220
|
+
Autocomplete events track user interactions within the autocomplete/search suggestions interface.
|
|
221
|
+
|
|
222
|
+
#### Render
|
|
223
|
+
|
|
224
|
+
Track when autocomplete suggestions are rendered to the user.
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
window.athos.tracker.events.autocomplete.render({
|
|
228
|
+
data: {
|
|
229
|
+
responseId: response.responseId
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
#### Impression
|
|
235
|
+
|
|
236
|
+
Track impressions (visibility) of autocomplete suggestions.
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
window.athos.tracker.events.autocomplete.impression({
|
|
240
|
+
data: {
|
|
241
|
+
responseId: response.responseId,
|
|
242
|
+
results: [
|
|
243
|
+
{ type: 'product', uid: 'product-1', parentId: 'parent-1', sku: 'SKU-1' },
|
|
244
|
+
{ type: 'banner', uid: 'banner-1' }
|
|
245
|
+
],
|
|
246
|
+
banners: [
|
|
247
|
+
{ uid: 'banner-1' }
|
|
248
|
+
]
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
#### Add to Cart
|
|
254
|
+
|
|
255
|
+
Track when a user adds a product to cart from autocomplete results.
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
window.athos.tracker.events.autocomplete.addToCart({
|
|
259
|
+
data: {
|
|
260
|
+
responseId: response.responseId,
|
|
261
|
+
results: [
|
|
262
|
+
{
|
|
263
|
+
uid: 'product-1',
|
|
264
|
+
parentId: 'parent-1',
|
|
265
|
+
sku: 'SKU-1',
|
|
266
|
+
qty: 1,
|
|
267
|
+
price: 29.99
|
|
268
|
+
}
|
|
269
|
+
]
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
This method automatically manages the stored cart state.
|
|
275
|
+
|
|
276
|
+
#### Click Through
|
|
277
|
+
|
|
278
|
+
Track when a user clicks on an autocomplete suggestion.
|
|
279
|
+
|
|
280
|
+
```typescript
|
|
281
|
+
window.athos.tracker.events.autocomplete.clickThrough({
|
|
282
|
+
data: {
|
|
283
|
+
responseId: response.responseId,
|
|
284
|
+
results: [
|
|
285
|
+
{
|
|
286
|
+
type: 'product',
|
|
287
|
+
uid: 'product-1',
|
|
288
|
+
parentId: 'parent-1',
|
|
289
|
+
sku: 'SKU-1'
|
|
290
|
+
}
|
|
291
|
+
]
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
#### Redirect
|
|
297
|
+
|
|
298
|
+
Track when an autocomplete suggestion causes a page redirect.
|
|
299
|
+
|
|
300
|
+
```typescript
|
|
301
|
+
const redirectUrl = response.merchandising?.redirect; // 'https://example.com/sale-page'
|
|
302
|
+
window.athos.tracker.events.autocomplete.redirect({
|
|
303
|
+
data: {
|
|
304
|
+
redirect: redirectUrl,
|
|
305
|
+
responseId: response.responseId
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### Search Events
|
|
311
|
+
|
|
312
|
+
Search events track user interactions within search results pages.
|
|
313
|
+
|
|
314
|
+
#### Render
|
|
315
|
+
|
|
316
|
+
```typescript
|
|
317
|
+
window.athos.tracker.events.search.render({
|
|
318
|
+
data: {
|
|
319
|
+
responseId: '607bafd1-f624-4e58-afa5-b8b8e90929f5'
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
#### Impression
|
|
325
|
+
|
|
326
|
+
```typescript
|
|
327
|
+
window.athos.tracker.events.search.impression({
|
|
328
|
+
data: {
|
|
329
|
+
responseId: '607bafd1-f624-4e58-afa5-b8b8e90929f5',
|
|
330
|
+
results: [
|
|
331
|
+
{ type: 'product', uid: 'product-1', parentId: 'parent-1', sku: 'SKU-1' },
|
|
332
|
+
{ type: 'product', uid: 'product-2', parentId: 'parent-2', sku: 'SKU-2' }
|
|
333
|
+
],
|
|
334
|
+
banners: [{ uid: 'banner-1' }]
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
#### Add to Cart
|
|
340
|
+
|
|
341
|
+
```typescript
|
|
342
|
+
window.athos.tracker.events.search.addToCart({
|
|
343
|
+
data: {
|
|
344
|
+
responseId: '607bafd1-f624-4e58-afa5-b8b8e90929f5',
|
|
345
|
+
results: [
|
|
346
|
+
{
|
|
347
|
+
uid: 'product-1',
|
|
348
|
+
parentId: 'parent-1',
|
|
349
|
+
sku: 'SKU-1',
|
|
350
|
+
qty: 1,
|
|
351
|
+
price: 29.99
|
|
352
|
+
}
|
|
353
|
+
]
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
#### Click Through
|
|
359
|
+
|
|
360
|
+
```typescript
|
|
361
|
+
window.athos.tracker.events.search.clickThrough({
|
|
362
|
+
data: {
|
|
363
|
+
responseId: '607bafd1-f624-4e58-afa5-b8b8e90929f5',
|
|
364
|
+
results: [
|
|
365
|
+
{
|
|
366
|
+
type: 'product',
|
|
367
|
+
uid: 'product-1',
|
|
368
|
+
parentId: 'parent-1',
|
|
369
|
+
sku: 'SKU-1'
|
|
370
|
+
}
|
|
371
|
+
]
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
#### Redirect
|
|
377
|
+
|
|
378
|
+
```typescript
|
|
379
|
+
window.athos.tracker.events.search.redirect({
|
|
380
|
+
data: {
|
|
381
|
+
redirect: 'https://example.com/promo',
|
|
382
|
+
responseId: '607bafd1-f624-4e58-afa5-b8b8e90929f5'
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### Category Events
|
|
388
|
+
|
|
389
|
+
Category events track user interactions on category/listing pages.
|
|
390
|
+
|
|
391
|
+
#### Render
|
|
392
|
+
|
|
393
|
+
```typescript
|
|
394
|
+
window.athos.tracker.events.category.render({
|
|
395
|
+
data: {
|
|
396
|
+
responseId: '50c7aaf3-1909-43cd-8fff-a8e5c4452ddb'
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
#### Impression
|
|
402
|
+
|
|
403
|
+
```typescript
|
|
404
|
+
window.athos.tracker.events.category.impression({
|
|
405
|
+
data: {
|
|
406
|
+
responseId: '50c7aaf3-1909-43cd-8fff-a8e5c4452ddb',
|
|
407
|
+
results: [
|
|
408
|
+
{ type: 'product', uid: 'product-1', parentId: 'parent-1', sku: 'SKU-1' }
|
|
409
|
+
],
|
|
410
|
+
banners: []
|
|
411
|
+
}
|
|
412
|
+
});
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
#### Add to Cart
|
|
416
|
+
|
|
417
|
+
```typescript
|
|
418
|
+
window.athos.tracker.events.category.addToCart({
|
|
419
|
+
data: {
|
|
420
|
+
responseId: '50c7aaf3-1909-43cd-8fff-a8e5c4452ddb',
|
|
421
|
+
results: [
|
|
422
|
+
{
|
|
423
|
+
uid: 'product-1',
|
|
424
|
+
parentId: 'parent-1',
|
|
425
|
+
sku: 'SKU-1',
|
|
426
|
+
qty: 1,
|
|
427
|
+
price: 49.99
|
|
428
|
+
}
|
|
429
|
+
]
|
|
430
|
+
}
|
|
431
|
+
});
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
#### Click Through
|
|
435
|
+
|
|
436
|
+
```typescript
|
|
437
|
+
window.athos.tracker.events.category.clickThrough({
|
|
438
|
+
data: {
|
|
439
|
+
responseId: '50c7aaf3-1909-43cd-8fff-a8e5c4452ddb',
|
|
440
|
+
results: [
|
|
441
|
+
{
|
|
442
|
+
type: 'product',
|
|
443
|
+
uid: 'product-1',
|
|
444
|
+
parentId: 'parent-1',
|
|
445
|
+
sku: 'SKU-1'
|
|
446
|
+
}
|
|
447
|
+
]
|
|
448
|
+
}
|
|
449
|
+
});
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### Recommendations Events
|
|
453
|
+
|
|
454
|
+
Recommendations events track interactions with personalized product recommendations.
|
|
455
|
+
|
|
456
|
+
#### Render
|
|
457
|
+
|
|
458
|
+
Track when a recommendation set is rendered to the user.
|
|
459
|
+
|
|
460
|
+
```typescript
|
|
461
|
+
window.athos.tracker.events.recommendations.render({
|
|
462
|
+
data: {
|
|
463
|
+
tag: 'homepage-recommendations',
|
|
464
|
+
responseId: '1a304980-27d4-4f4b-96cc-758b280dfa7a'
|
|
465
|
+
}
|
|
466
|
+
});
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
#### Impression
|
|
470
|
+
|
|
471
|
+
Track impressions of recommended products.
|
|
472
|
+
|
|
473
|
+
```typescript
|
|
474
|
+
window.athos.tracker.events.recommendations.impression({
|
|
475
|
+
data: {
|
|
476
|
+
tag: 'homepage-recommendations',
|
|
477
|
+
responseId: '1a304980-27d4-4f4b-96cc-758b280dfa7a',
|
|
478
|
+
results: [
|
|
479
|
+
{ type: 'product', uid: 'product-1', parentId: 'parent-1', sku: 'SKU-1' },
|
|
480
|
+
{ type: 'product', uid: 'product-2', parentId: 'parent-2', sku: 'SKU-2' }
|
|
481
|
+
],
|
|
482
|
+
banners: []
|
|
483
|
+
}
|
|
484
|
+
});
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
#### Add to Cart
|
|
488
|
+
|
|
489
|
+
Track when a user adds a recommended product to cart.
|
|
490
|
+
|
|
491
|
+
```typescript
|
|
492
|
+
window.athos.tracker.events.recommendations.addToCart({
|
|
493
|
+
data: {
|
|
494
|
+
tag: 'homepage-recommendations',
|
|
495
|
+
responseId: '1a304980-27d4-4f4b-96cc-758b280dfa7a',
|
|
496
|
+
results: [
|
|
497
|
+
{
|
|
498
|
+
uid: 'product-1',
|
|
499
|
+
parentId: 'parent-1',
|
|
500
|
+
sku: 'SKU-1',
|
|
501
|
+
qty: 1,
|
|
502
|
+
price: 39.99
|
|
503
|
+
}
|
|
504
|
+
]
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
#### Click Through
|
|
510
|
+
|
|
511
|
+
Track clicks on recommended products.
|
|
512
|
+
|
|
513
|
+
```typescript
|
|
514
|
+
window.athos.tracker.events.recommendations.clickThrough({
|
|
515
|
+
data: {
|
|
516
|
+
tag: 'homepage-recommendations',
|
|
517
|
+
responseId: '1a304980-27d4-4f4b-96cc-758b280dfa7a',
|
|
518
|
+
results: [
|
|
519
|
+
{
|
|
520
|
+
type: 'product',
|
|
521
|
+
uid: 'product-1',
|
|
522
|
+
parentId: 'parent-1',
|
|
523
|
+
sku: 'SKU-1'
|
|
524
|
+
}
|
|
525
|
+
]
|
|
526
|
+
}
|
|
527
|
+
});
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Product Events
|
|
531
|
+
|
|
532
|
+
#### Page View
|
|
533
|
+
|
|
534
|
+
Track product page views. This automatically updates the viewed products history.
|
|
535
|
+
|
|
536
|
+
```typescript
|
|
537
|
+
window.athos.tracker.events.product.pageView({
|
|
538
|
+
data: {
|
|
539
|
+
result: {
|
|
540
|
+
uid: 'product-123',
|
|
541
|
+
parentId: 'parent-123',
|
|
542
|
+
sku: 'SKU-123'
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
});
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### Cart Events
|
|
549
|
+
|
|
550
|
+
#### Add
|
|
551
|
+
|
|
552
|
+
Track when products are added to the cart.
|
|
553
|
+
|
|
554
|
+
```typescript
|
|
555
|
+
window.athos.tracker.events.cart.add({
|
|
556
|
+
data: {
|
|
557
|
+
results: [
|
|
558
|
+
{
|
|
559
|
+
uid: 'product-1',
|
|
560
|
+
parentId: 'parent-1',
|
|
561
|
+
sku: 'SKU-1',
|
|
562
|
+
qty: 1,
|
|
563
|
+
price: 29.99
|
|
564
|
+
}
|
|
565
|
+
],
|
|
566
|
+
cart: [
|
|
567
|
+
{
|
|
568
|
+
uid: 'product-1',
|
|
569
|
+
parentId: 'parent-1',
|
|
570
|
+
sku: 'SKU-1',
|
|
571
|
+
qty: 1,
|
|
572
|
+
price: 29.99
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
uid: 'product-2',
|
|
576
|
+
parentId: 'parent-2',
|
|
577
|
+
sku: 'SKU-2',
|
|
578
|
+
qty: 2,
|
|
579
|
+
price: 19.99
|
|
580
|
+
}
|
|
581
|
+
]
|
|
582
|
+
}
|
|
583
|
+
});
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
The cart state is automatically managed and synchronized with storage.
|
|
587
|
+
|
|
588
|
+
#### Remove
|
|
589
|
+
|
|
590
|
+
Track when products are removed from the cart.
|
|
591
|
+
|
|
592
|
+
```typescript
|
|
593
|
+
window.athos.tracker.events.cart.remove({
|
|
594
|
+
data: {
|
|
595
|
+
results: [
|
|
596
|
+
{ uid: 'product-1', parentId: 'parent-1', sku: 'SKU-1', qty: 1 }
|
|
597
|
+
],
|
|
598
|
+
cart: [
|
|
599
|
+
{
|
|
600
|
+
uid: 'product-2',
|
|
601
|
+
parentId: 'parent-2',
|
|
602
|
+
sku: 'SKU-2',
|
|
603
|
+
qty: 2,
|
|
604
|
+
price: 19.99
|
|
605
|
+
}
|
|
606
|
+
]
|
|
607
|
+
}
|
|
608
|
+
});
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
### Order Events
|
|
612
|
+
|
|
613
|
+
#### Transaction
|
|
614
|
+
|
|
615
|
+
Track completed transactions/orders.
|
|
616
|
+
|
|
617
|
+
```typescript
|
|
618
|
+
window.athos.tracker.events.order.transaction({
|
|
619
|
+
data: {
|
|
620
|
+
orderId: 'order-12345',
|
|
621
|
+
transactionTotal: 119.97,
|
|
622
|
+
total: 129.97,
|
|
623
|
+
vat: 0.20,
|
|
624
|
+
city: 'New York',
|
|
625
|
+
state: 'NY',
|
|
626
|
+
country: 'US',
|
|
627
|
+
results: [
|
|
628
|
+
{
|
|
629
|
+
uid: 'product-1',
|
|
630
|
+
parentId: 'parent-1',
|
|
631
|
+
sku: 'SKU-1',
|
|
632
|
+
qty: 2,
|
|
633
|
+
price: 29.99
|
|
634
|
+
},
|
|
635
|
+
{
|
|
636
|
+
uid: 'product-2',
|
|
637
|
+
parentId: 'parent-2',
|
|
638
|
+
sku: 'SKU-2',
|
|
639
|
+
qty: 1,
|
|
640
|
+
price: 60.00
|
|
641
|
+
}
|
|
642
|
+
]
|
|
643
|
+
}
|
|
644
|
+
});
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
This method automatically clears the stored cart after tracking the transaction.
|
|
648
|
+
|
|
649
|
+
### Error Tracking Events
|
|
650
|
+
|
|
651
|
+
#### Shopify Pixel Errors
|
|
652
|
+
|
|
653
|
+
Track errors from Shopify pixel implementations.
|
|
654
|
+
|
|
655
|
+
```typescript
|
|
656
|
+
window.athos.tracker.events.error.shopifypixel({
|
|
657
|
+
data: {
|
|
658
|
+
message: 'Product not found',
|
|
659
|
+
stack: 'Error: Product not found\n at fetchProduct (app.js:45)',
|
|
660
|
+
details: {
|
|
661
|
+
productId: 'abc-123',
|
|
662
|
+
endpoint: '/api/products/abc-123'
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
});
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
#### SNAP Errors
|
|
669
|
+
|
|
670
|
+
Track errors from SNAP implementations.
|
|
671
|
+
|
|
672
|
+
```typescript
|
|
673
|
+
window.athos.tracker.events.error.snap({
|
|
674
|
+
data: {
|
|
675
|
+
message: 'Failed to load recommendations',
|
|
676
|
+
stack: 'Error: Network timeout\n at loadRecs (snap.js:120)',
|
|
677
|
+
details: {
|
|
678
|
+
tag: 'homepage-recs',
|
|
679
|
+
timeout: 5000
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
});
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
## Storage Management
|
|
687
|
+
|
|
688
|
+
Beacon automatically manages local storage and cookies to maintain user state across sessions. This includes:
|
|
689
|
+
|
|
690
|
+
- **User IDs**: Persisted for 18 months
|
|
691
|
+
- **Session IDs**: Persisted for 30 minutes
|
|
692
|
+
- **Cart**: Current items in the user's cart
|
|
693
|
+
- **Viewed Products**: Recently viewed products (up to 20 items)
|
|
694
|
+
- **Attribution**: Campaign/attribution source tracking
|
|
695
|
+
|
|
696
|
+
### Cart Storage API
|
|
697
|
+
|
|
698
|
+
Access and manipulate the stored cart through the `storage.cart` API:
|
|
699
|
+
|
|
700
|
+
```typescript
|
|
701
|
+
// Get current cart
|
|
702
|
+
const cartItems = beacon.storage.cart.get();
|
|
703
|
+
|
|
704
|
+
// Set cart to specific items
|
|
705
|
+
beacon.storage.cart.set([
|
|
706
|
+
{ uid: 'p1', sku: 'SKU-1', qty: 2, price: 29.99 }
|
|
707
|
+
]);
|
|
708
|
+
|
|
709
|
+
// Add items to cart
|
|
710
|
+
beacon.storage.cart.add([
|
|
711
|
+
{ uid: 'p2', sku: 'SKU-2', qty: 1, price: 19.99 }
|
|
712
|
+
]);
|
|
713
|
+
|
|
714
|
+
// Remove items from cart
|
|
715
|
+
beacon.storage.cart.remove([
|
|
716
|
+
{ uid: 'p1', sku: 'SKU-1', qty: 1 }
|
|
717
|
+
]);
|
|
718
|
+
|
|
719
|
+
// Clear cart
|
|
720
|
+
beacon.storage.cart.clear();
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
### Viewed Products Storage API
|
|
724
|
+
|
|
725
|
+
Access and manipulate the viewed products history:
|
|
726
|
+
|
|
727
|
+
```typescript
|
|
728
|
+
// Get viewed products
|
|
729
|
+
const viewedItems = beacon.storage.viewed.get();
|
|
730
|
+
|
|
731
|
+
// Set viewed products
|
|
732
|
+
beacon.storage.viewed.set([
|
|
733
|
+
{ uid: 'p1', sku: 'SKU-1' }
|
|
734
|
+
]);
|
|
735
|
+
|
|
736
|
+
// Add to viewed products
|
|
737
|
+
beacon.storage.viewed.add([
|
|
738
|
+
{ uid: 'p2', sku: 'SKU-2' }
|
|
739
|
+
]);
|
|
740
|
+
```
|
|
741
|
+
|
|
742
|
+
## Public API Methods
|
|
743
|
+
|
|
744
|
+
### `setCurrency(currency: Currency)`
|
|
745
|
+
|
|
746
|
+
Set or change the currency for tracking transactions.
|
|
747
|
+
|
|
748
|
+
```typescript
|
|
749
|
+
const beacon = new Beacon({ siteId: 'abc123' });
|
|
750
|
+
|
|
751
|
+
// Set currency if not provided in globals
|
|
752
|
+
beacon.setCurrency({ code: 'EUR' });
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
| Parameter | Type | Description |
|
|
756
|
+
|-----------|------|-------------|
|
|
757
|
+
| `currency.code` | `string` | ISO 4217 currency code |
|
|
758
|
+
|
|
759
|
+
### `getContext(): Context`
|
|
760
|
+
|
|
761
|
+
Get the current tracking context including user, session, and page information.
|
|
762
|
+
|
|
763
|
+
```typescript
|
|
764
|
+
const context = beacon.getContext();
|
|
765
|
+
// Returns: {
|
|
766
|
+
// userId: 'uuid-...',
|
|
767
|
+
// sessionId: 'uuid-...',
|
|
768
|
+
// pageLoadId: 'uuid-...',
|
|
769
|
+
// pageUrl: 'https://...',
|
|
770
|
+
// userAgent: '...',
|
|
771
|
+
// timestamp: '2024-01-01T...',
|
|
772
|
+
// ...
|
|
773
|
+
// }
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
### `updateContext(key: keyof Context, value: any)`
|
|
777
|
+
|
|
778
|
+
Update specific context properties.
|
|
779
|
+
|
|
780
|
+
```typescript
|
|
781
|
+
beacon.updateContext('userId', 'custom-user-id');
|
|
782
|
+
beacon.updateContext('dev', 'development');
|
|
783
|
+
beacon.updateContext('pageUrl', 'https://example.com/new-page');
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
### User ID Management
|
|
787
|
+
|
|
788
|
+
#### `getUserId(): string`
|
|
789
|
+
|
|
790
|
+
Get or generate the current user ID.
|
|
791
|
+
|
|
792
|
+
```typescript
|
|
793
|
+
const userId = beacon.getUserId();
|
|
794
|
+
```
|
|
795
|
+
|
|
796
|
+
#### `getSessionId(): string`
|
|
797
|
+
|
|
798
|
+
Get or generate the current session ID (expires after 30 minutes of inactivity).
|
|
799
|
+
|
|
800
|
+
```typescript
|
|
801
|
+
const sessionId = beacon.getSessionId();
|
|
802
|
+
```
|
|
803
|
+
|
|
804
|
+
#### `getShopperId(): string`
|
|
805
|
+
|
|
806
|
+
Get the current shopper ID if set.
|
|
807
|
+
|
|
808
|
+
```typescript
|
|
809
|
+
const shopperId = beacon.getShopperId();
|
|
810
|
+
```
|
|
811
|
+
|
|
812
|
+
#### `setShopperId(shopperId: string): string | void`
|
|
813
|
+
|
|
814
|
+
Set the shopper ID and triggers both a login event to the beacon and preflight request for personalization.
|
|
815
|
+
|
|
816
|
+
```typescript
|
|
817
|
+
const result = beacon.setShopperId('shopper-12345');
|
|
818
|
+
```
|
|
819
|
+
|
|
820
|
+
### `getPageLoadId(): string`
|
|
821
|
+
|
|
822
|
+
Get the current page load ID. Generate a new one with `pageLoad()`.
|
|
823
|
+
|
|
824
|
+
```typescript
|
|
825
|
+
const pageLoadId = beacon.getPageLoadId();
|
|
826
|
+
```
|
|
827
|
+
|
|
828
|
+
### `pageLoad(): string`
|
|
829
|
+
|
|
830
|
+
Generate a new page load ID. Call this method when tracking page transitions or navigation within a single-page application.
|
|
831
|
+
|
|
832
|
+
```typescript
|
|
833
|
+
const newPageLoadId = beacon.pageLoad();
|
|
834
|
+
```
|
|
835
|
+
|
|
836
|
+
### `getTimestamp(): string`
|
|
837
|
+
|
|
838
|
+
Get the current timestamp in ISO 8601 format.
|
|
839
|
+
|
|
840
|
+
```typescript
|
|
841
|
+
const timestamp = beacon.getTimestamp();
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
### `sendPreflight(overrides?: PreflightRequestModel): void`
|
|
845
|
+
|
|
846
|
+
Send preflight data to the personalization API. This is automatically called when cart or shopper state changes, but can be manually triggered if needed.
|
|
847
|
+
|
|
848
|
+
```typescript
|
|
849
|
+
beacon.sendPreflight();
|
|
850
|
+
|
|
851
|
+
// With overrides
|
|
852
|
+
beacon.sendPreflight({
|
|
853
|
+
userId: 'custom-user-id',
|
|
854
|
+
siteId: 'custom-site-id',
|
|
855
|
+
shopper: 'shopper-123',
|
|
856
|
+
cart: [/* products */],
|
|
857
|
+
lastViewed: [/* products */]
|
|
858
|
+
});
|
|
859
|
+
```
|
|
860
|
+
|
|
861
|
+
### `generateId(): string`
|
|
862
|
+
|
|
863
|
+
Generate and returns a new UUID.
|
|
864
|
+
|
|
865
|
+
```typescript
|
|
866
|
+
const id = beacon.generateId();
|
|
867
|
+
```
|
|
868
|
+
|
|
869
|
+
## Advanced Usage
|
|
870
|
+
|
|
871
|
+
### Custom Fetch Implementation
|
|
872
|
+
|
|
873
|
+
For environments where the standard `fetch` API is unavailable or needs to be customized (e.g., adding authentication, request interception), provide a custom fetch implementation:
|
|
874
|
+
|
|
875
|
+
```typescript
|
|
876
|
+
// Custom fetch that adds authentication
|
|
877
|
+
const customFetch = async (url, options) => {
|
|
878
|
+
const response = await fetch(url, {
|
|
879
|
+
...options,
|
|
880
|
+
headers: {
|
|
881
|
+
...options.headers,
|
|
882
|
+
'Authorization': `Bearer ${token}`
|
|
883
|
+
}
|
|
884
|
+
});
|
|
885
|
+
return response;
|
|
886
|
+
};
|
|
887
|
+
|
|
888
|
+
const beacon = new Beacon(
|
|
889
|
+
{ siteId: 'abc123' },
|
|
890
|
+
{
|
|
891
|
+
apis: {
|
|
892
|
+
fetch: customFetch
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
);
|
|
896
|
+
```
|
|
897
|
+
|
|
898
|
+
### Custom API Endpoints
|
|
899
|
+
|
|
900
|
+
Override default API endpoints for internal proxying or custom infrastructure:
|
|
901
|
+
|
|
902
|
+
```typescript
|
|
903
|
+
const beacon = new Beacon(
|
|
904
|
+
{ siteId: 'abc123' },
|
|
905
|
+
{
|
|
906
|
+
requesters: {
|
|
907
|
+
beacon: {
|
|
908
|
+
origin: 'https://internal-api.example.com/beacon/v2',
|
|
909
|
+
headers: { 'X-Internal-Key': 'secret' }
|
|
910
|
+
},
|
|
911
|
+
personalization: {
|
|
912
|
+
origin: 'https://internal-api.example.com/personalization',
|
|
913
|
+
headers: { 'X-Internal-Key': 'secret' }
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
);
|
|
918
|
+
```
|
|
919
|
+
|
|
920
|
+
|
|
921
|
+
### Single Page Application (SPA) Support
|
|
922
|
+
|
|
923
|
+
For single-page applications, generate a new page load ID when the page/view changes:
|
|
924
|
+
|
|
925
|
+
```typescript
|
|
926
|
+
// On navigation
|
|
927
|
+
const newPageLoadId = beacon.pageLoad();
|
|
928
|
+
console.log('New page load:', newPageLoadId);
|
|
929
|
+
|
|
930
|
+
// Track that we're now viewing a new product
|
|
931
|
+
window.athos.tracker.events.product.pageView({
|
|
932
|
+
data: {
|
|
933
|
+
result: { uid: 'new-product', sku: 'SKU-123' }
|
|
934
|
+
}
|
|
935
|
+
});
|
|
936
|
+
```
|
|
937
|
+
|
|
938
|
+
### Context Updates
|
|
939
|
+
|
|
940
|
+
Update tracking context dynamically as user behavior or application state changes:
|
|
941
|
+
|
|
942
|
+
```typescript
|
|
943
|
+
// Update page URL for client-side routing
|
|
944
|
+
beacon.updateContext('pageUrl', window.location.href);
|
|
945
|
+
```
|
|
946
|
+
|
|
947
|
+
|
|
948
|
+
### Attribution Tracking
|
|
949
|
+
|
|
950
|
+
Attribution is automatically captured from url parameters (ie. https://example.com/products?ss_attribution=email:campaign-123) and will be placed on the beacon context.
|
|
951
|
+
|
|
952
|
+
|
|
953
|
+
## Error Handling
|
|
954
|
+
|
|
955
|
+
### Development Mode
|
|
956
|
+
|
|
957
|
+
Enabling development mode will prevent beacon events from appearing in reports in the Athos console.
|
|
958
|
+
|
|
959
|
+
```typescript
|
|
960
|
+
const beacon = new Beacon(
|
|
961
|
+
{ siteId: 'abc123' },
|
|
962
|
+
{ mode: 'development' }
|
|
963
|
+
);
|
|
964
|
+
```
|
|
965
|
+
|
|
966
|
+
## License
|
|
967
|
+
|
|
968
|
+
MIT - See LICENSE file for details
|
|
969
|
+
|
|
970
|
+
|