From 9ee431ff3e651364b038218ffbe665b112b06650 Mon Sep 17 00:00:00 2001 From: Sarika Vanapalli Date: Fri, 24 Oct 2025 13:56:28 -0500 Subject: [PATCH] feat: update snowplow Urls to be dynamic based on environment than hardcoded --- .../storefront-events-collector/src/index.ts | 26 +++++++++++++++++-- .../src/types/index.d.ts | 3 --- .../webpack.dev.js | 7 ----- .../webpack.prod.js | 7 ----- .../storefront-events-collector/webpack.qa.js | 7 ----- 5 files changed, 24 insertions(+), 26 deletions(-) diff --git a/packages/storefront-events-collector/src/index.ts b/packages/storefront-events-collector/src/index.ts index b6c1660a..544f8c52 100644 --- a/packages/storefront-events-collector/src/index.ts +++ b/packages/storefront-events-collector/src/index.ts @@ -5,6 +5,18 @@ import { configure, hasConfig, setConsent, setExistingAlloy } from "./alloy"; import { subscribeToEvents } from "./events"; import { configureSnowplow } from "./snowplow"; +// Snowplow configuration constants +const SNOWPLOW_CONFIG = { + production: { + collectorUrl: "https://commerce.adobedc.net", + collectorPath: "/collector/tp2", + }, + qa: { + collectorUrl: "https://com-magento-qa1.collector.snplow.net", + collectorPath: "/com.snowplowanalytics.snowplow/tp2", + }, +}; + /** * this is the script added to an external build if a user is adding a custom name * see https://experienceleague.adobe.com/docs/experience-platform/edge/fundamentals/installing-the-sdk.html?lang=en @@ -73,15 +85,25 @@ const initializeAlloy = async () => { const initialize = async () => { const { context } = window.magentoStorefrontEvents; const eventForwarding = context.getEventForwarding(); + const storefrontInstance = context.getStorefrontInstance(); const sendToSnowplow = eventForwarding?.commerce === false ? false : true; const sendToAEP = eventForwarding?.aep && hasConfig() ? true : false; if (sendToSnowplow) { + // Dynamic Snowplow routing based on environment + const environment = storefrontInstance?.environment?.toLowerCase() || "production"; + const isQAEnvironment = + environment.includes("stage") || environment.includes("qa") || environment.includes("test"); + + const config = isQAEnvironment ? SNOWPLOW_CONFIG.qa : SNOWPLOW_CONFIG.production; + const collectorUrl = config.collectorUrl; + const collectorPath = config.collectorPath; + configureSnowplow({ appId: "magento-storefront-event-collector", - collectorUrl: SNOWPLOW_COLLECTOR_URL, - collectorPath: SNOWPLOW_COLLECTOR_PATH, + collectorUrl, + collectorPath, }); } diff --git a/packages/storefront-events-collector/src/types/index.d.ts b/packages/storefront-events-collector/src/types/index.d.ts index d5bfed04..cf70819b 100644 --- a/packages/storefront-events-collector/src/types/index.d.ts +++ b/packages/storefront-events-collector/src/types/index.d.ts @@ -3,9 +3,6 @@ import { MagentoStorefrontEvents } from "@adobe/magento-storefront-events-sdk"; import { AlloyInstance } from "../aep/types"; declare global { - const SNOWPLOW_COLLECTOR_URL: string; - const SNOWPLOW_COLLECTOR_PATH: string; - interface Window { __alloyNS: string[]; magentoStorefrontEvents: MagentoStorefrontEvents; diff --git a/packages/storefront-events-collector/webpack.dev.js b/packages/storefront-events-collector/webpack.dev.js index 74cdf4fb..6e5007bf 100644 --- a/packages/storefront-events-collector/webpack.dev.js +++ b/packages/storefront-events-collector/webpack.dev.js @@ -1,14 +1,7 @@ -const webpack = require("webpack"); const { merge } = require("webpack-merge"); const common = require("./webpack.common.js"); module.exports = merge(common, { mode: "development", devtool: "eval-source-map", - plugins: [ - new webpack.DefinePlugin({ - SNOWPLOW_COLLECTOR_URL: JSON.stringify("https://com-magento-qa1.collector.snplow.net"), - SNOWPLOW_COLLECTOR_PATH: JSON.stringify("/com.snowplowanalytics.snowplow/tp2"), - }), - ], }); diff --git a/packages/storefront-events-collector/webpack.prod.js b/packages/storefront-events-collector/webpack.prod.js index 37bbf4e7..95b8303e 100644 --- a/packages/storefront-events-collector/webpack.prod.js +++ b/packages/storefront-events-collector/webpack.prod.js @@ -1,13 +1,6 @@ -const webpack = require("webpack"); const { merge } = require("webpack-merge"); const common = require("./webpack.common.js"); module.exports = merge(common, { mode: "production", - plugins: [ - new webpack.DefinePlugin({ - SNOWPLOW_COLLECTOR_URL: JSON.stringify("https://commerce.adobedc.net"), - SNOWPLOW_COLLECTOR_PATH: JSON.stringify("/collector/tp2"), - }), - ], }); diff --git a/packages/storefront-events-collector/webpack.qa.js b/packages/storefront-events-collector/webpack.qa.js index 74cdf4fb..6e5007bf 100644 --- a/packages/storefront-events-collector/webpack.qa.js +++ b/packages/storefront-events-collector/webpack.qa.js @@ -1,14 +1,7 @@ -const webpack = require("webpack"); const { merge } = require("webpack-merge"); const common = require("./webpack.common.js"); module.exports = merge(common, { mode: "development", devtool: "eval-source-map", - plugins: [ - new webpack.DefinePlugin({ - SNOWPLOW_COLLECTOR_URL: JSON.stringify("https://com-magento-qa1.collector.snplow.net"), - SNOWPLOW_COLLECTOR_PATH: JSON.stringify("/com.snowplowanalytics.snowplow/tp2"), - }), - ], });