shopkit-analytics 1.0.1 → 1.0.3

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.
Files changed (71) hide show
  1. package/README.md +193 -3
  2. package/dist/adapters/index.d.mts +3 -2
  3. package/dist/adapters/index.d.ts +3 -2
  4. package/dist/adapters/index.js +1220 -615
  5. package/dist/adapters/index.js.map +1 -1
  6. package/dist/adapters/index.mjs +4 -2
  7. package/dist/{chunk-3TQR5DOP.mjs → chunk-3NR2AKE4.mjs} +1 -31
  8. package/dist/chunk-3NR2AKE4.mjs.map +1 -0
  9. package/dist/chunk-4RDPDMGW.mjs +68 -0
  10. package/dist/chunk-4RDPDMGW.mjs.map +1 -0
  11. package/dist/{chunk-JVEGG6JV.mjs → chunk-HCA4E2RA.mjs} +19 -13
  12. package/dist/chunk-HCA4E2RA.mjs.map +1 -0
  13. package/dist/chunk-NC25KOAF.mjs +156 -0
  14. package/dist/chunk-NC25KOAF.mjs.map +1 -0
  15. package/dist/chunk-NGPUKV7E.mjs +46 -0
  16. package/dist/chunk-NGPUKV7E.mjs.map +1 -0
  17. package/dist/{chunk-4MZH5OLR.mjs → chunk-NJQ2MOM2.mjs} +1145 -618
  18. package/dist/chunk-NJQ2MOM2.mjs.map +1 -0
  19. package/dist/chunk-NKDB4KX2.mjs +2 -0
  20. package/dist/{chunk-P4OJDCEZ.mjs → chunk-QCS5UARA.mjs} +3 -3
  21. package/dist/events/index.d.mts +9 -41
  22. package/dist/events/index.d.ts +9 -41
  23. package/dist/events/index.js +973 -498
  24. package/dist/events/index.js.map +1 -1
  25. package/dist/events/index.mjs +11 -11
  26. package/dist/experiment/index.d.mts +25 -0
  27. package/dist/experiment/index.d.ts +25 -0
  28. package/dist/experiment/index.js +74 -0
  29. package/dist/experiment/index.js.map +1 -0
  30. package/dist/experiment/index.mjs +15 -0
  31. package/dist/experiment/index.mjs.map +1 -0
  32. package/dist/{index-BnNRgdUv.d.ts → index-D_8w5bL_.d.ts} +87 -17
  33. package/dist/{index-GODWc1s6.d.mts → index-th6sBtE3.d.mts} +87 -17
  34. package/dist/index.d.mts +10 -6
  35. package/dist/index.d.ts +10 -6
  36. package/dist/index.js +1408 -660
  37. package/dist/index.js.map +1 -1
  38. package/dist/index.mjs +31 -10
  39. package/dist/index.mjs.map +1 -1
  40. package/dist/services/index.d.mts +51 -0
  41. package/dist/services/index.d.ts +51 -0
  42. package/dist/services/index.js +180 -0
  43. package/dist/services/index.js.map +1 -0
  44. package/dist/services/index.mjs +11 -0
  45. package/dist/services/index.mjs.map +1 -0
  46. package/dist/{subscriber-43gnCKWe.d.ts → subscriber-BDAm_BAi.d.ts} +38 -2
  47. package/dist/{subscriber-sWesj_5p.d.mts → subscriber-BoyOlh9t.d.mts} +38 -2
  48. package/dist/subscriber-VF3IYUCU.mjs +8 -0
  49. package/dist/subscriber-VF3IYUCU.mjs.map +1 -0
  50. package/dist/types-C__2IBCj.d.mts +7 -0
  51. package/dist/types-C__2IBCj.d.ts +7 -0
  52. package/dist/types.d.mts +4 -340
  53. package/dist/types.d.ts +4 -340
  54. package/dist/types.js +0 -30
  55. package/dist/types.js.map +1 -1
  56. package/dist/types.mjs +1 -1
  57. package/dist/utils/index.d.mts +19 -0
  58. package/dist/utils/index.d.ts +19 -0
  59. package/dist/utils/index.js +93 -0
  60. package/dist/utils/index.js.map +1 -0
  61. package/dist/utils/index.mjs +12 -0
  62. package/dist/utils/index.mjs.map +1 -0
  63. package/package.json +21 -8
  64. package/templates/nextjs/README.md +206 -0
  65. package/templates/nextjs/api-events-route.ts +62 -0
  66. package/dist/chunk-3TQR5DOP.mjs.map +0 -1
  67. package/dist/chunk-4MZH5OLR.mjs.map +0 -1
  68. package/dist/chunk-JVEGG6JV.mjs.map +0 -1
  69. package/dist/subscriber-IFZJU57V.mjs +0 -8
  70. /package/dist/{subscriber-IFZJU57V.mjs.map → chunk-NKDB4KX2.mjs.map} +0 -0
  71. /package/dist/{chunk-P4OJDCEZ.mjs.map → chunk-QCS5UARA.mjs.map} +0 -0
@@ -43,7 +43,14 @@ __export(adapters_exports, {
43
43
  module.exports = __toCommonJS(adapters_exports);
44
44
 
45
45
  // src/logger/index.ts
46
- var import_pino = __toESM(require("pino"));
46
+ var LOG_LEVELS = {
47
+ trace: 10,
48
+ debug: 20,
49
+ info: 30,
50
+ warn: 40,
51
+ error: 50,
52
+ fatal: 60
53
+ };
47
54
  var NoOpLogger = class _NoOpLogger {
48
55
  trace() {
49
56
  }
@@ -61,92 +68,109 @@ var NoOpLogger = class _NoOpLogger {
61
68
  return new _NoOpLogger();
62
69
  }
63
70
  };
64
- var PinoLogger = class _PinoLogger {
65
- constructor(logger2) {
66
- this.logger = logger2;
71
+ var UniversalLogger = class _UniversalLogger {
72
+ constructor(config, bindings = {}) {
73
+ this.config = config;
74
+ this.bindings = bindings;
75
+ }
76
+ shouldLog(level) {
77
+ return LOG_LEVELS[level] >= LOG_LEVELS[this.config.level];
78
+ }
79
+ formatMessage(level, message, args, error) {
80
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
81
+ const name = this.config.name;
82
+ let logMessage = this.config.prettyPrint ? `[${timestamp}] ${level.toUpperCase()} [${name}]: ${message}` : JSON.stringify({
83
+ timestamp,
84
+ level,
85
+ name,
86
+ message,
87
+ ...this.bindings,
88
+ ...args.length > 0 && { args },
89
+ ...error && {
90
+ error: { message: error.message, stack: error.stack }
91
+ }
92
+ });
93
+ if (this.config.prettyPrint && args.length > 0) {
94
+ logMessage += ` ${args.map(
95
+ (arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
96
+ ).join(" ")}`;
97
+ }
98
+ if (this.config.prettyPrint && error) {
99
+ logMessage += ` Error: ${error.message}`;
100
+ if (error.stack) {
101
+ logMessage += `
102
+ ${error.stack}`;
103
+ }
104
+ }
105
+ return this.redactSensitiveData(logMessage);
106
+ }
107
+ redactSensitiveData(message) {
108
+ let redactedMessage = message;
109
+ for (const field of this.config.redact) {
110
+ const regex = new RegExp(`"${field}"\\s*:\\s*"[^"]*"`, "gi");
111
+ redactedMessage = redactedMessage.replace(
112
+ regex,
113
+ `"${field}":"[REDACTED]"`
114
+ );
115
+ }
116
+ return redactedMessage;
117
+ }
118
+ log(level, message, args, error) {
119
+ if (!this.shouldLog(level)) return;
120
+ const formattedMessage = this.formatMessage(level, message, args, error);
121
+ switch (level) {
122
+ case "trace":
123
+ console.trace(formattedMessage);
124
+ break;
125
+ case "debug":
126
+ console.debug(formattedMessage);
127
+ break;
128
+ case "info":
129
+ console.info(formattedMessage);
130
+ break;
131
+ case "warn":
132
+ console.warn(formattedMessage);
133
+ break;
134
+ case "error":
135
+ case "fatal":
136
+ console.error(formattedMessage);
137
+ break;
138
+ }
67
139
  }
68
140
  trace(message, ...args) {
69
- this.logger.trace({ args }, message);
141
+ this.log("trace", message, args);
70
142
  }
71
143
  debug(message, ...args) {
72
- this.logger.debug({ args }, message);
144
+ this.log("debug", message, args);
73
145
  }
74
146
  info(message, ...args) {
75
- this.logger.info({ args }, message);
147
+ this.log("info", message, args);
76
148
  }
77
149
  warn(message, ...args) {
78
- this.logger.warn({ args }, message);
150
+ this.log("warn", message, args);
79
151
  }
80
152
  error(message, error, ...args) {
81
- this.logger.error({ error, args }, message);
153
+ this.log("error", message, args, error);
82
154
  }
83
155
  fatal(message, error, ...args) {
84
- this.logger.fatal({ error, args }, message);
156
+ this.log("fatal", message, args, error);
85
157
  }
86
158
  child(bindings) {
87
- return new _PinoLogger(this.logger.child(bindings));
159
+ return new _UniversalLogger(this.config, { ...this.bindings, ...bindings });
88
160
  }
89
161
  };
90
162
  function createLogger(config = {}) {
91
- const {
92
- level = "info",
93
- enabled = true,
94
- name = "@shopkit/analytics",
95
- prettyPrint = false,
96
- redact = []
97
- } = config;
98
- if (!enabled) {
99
- return new NoOpLogger();
100
- }
101
- const pinoConfig = {
102
- name,
103
- level,
104
- redact,
105
- browser: {
106
- asObject: true,
107
- serialize: true,
108
- write: {
109
- trace: (o) => console.trace(formatBrowserLog(o)),
110
- debug: (o) => console.debug(formatBrowserLog(o)),
111
- info: (o) => console.info(formatBrowserLog(o)),
112
- warn: (o) => console.warn(formatBrowserLog(o)),
113
- error: (o) => console.error(formatBrowserLog(o)),
114
- fatal: (o) => console.error(formatBrowserLog(o))
115
- }
116
- }
163
+ const fullConfig = {
164
+ level: config.level || "info",
165
+ enabled: config.enabled !== false,
166
+ name: config.name || "@shopkit/analytics",
167
+ prettyPrint: config.prettyPrint || false,
168
+ redact: config.redact || []
117
169
  };
118
- if (prettyPrint && typeof window === "undefined") {
119
- pinoConfig.transport = {
120
- target: "pino-pretty",
121
- options: {
122
- colorize: true,
123
- translateTime: "HH:MM:ss Z",
124
- ignore: "pid,hostname"
125
- }
126
- };
127
- }
128
- const pinoLogger = (0, import_pino.default)(pinoConfig);
129
- return new PinoLogger(pinoLogger);
130
- }
131
- function formatBrowserLog(logObj) {
132
- const { level, time, msg, name, args, error, ...rest } = logObj;
133
- let message = `[${name}] ${msg}`;
134
- if (args && args.length > 0) {
135
- message += ` ${args.map(
136
- (arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
137
- ).join(" ")}`;
138
- }
139
- if (error) {
140
- message += ` Error: ${error.message}`;
141
- if (error.stack) {
142
- message += `
143
- ${error.stack}`;
144
- }
145
- }
146
- if (Object.keys(rest).length > 0) {
147
- message += ` ${JSON.stringify(rest)}`;
170
+ if (!fullConfig.enabled) {
171
+ return new NoOpLogger();
148
172
  }
149
- return message;
173
+ return new UniversalLogger(fullConfig);
150
174
  }
151
175
  var logger = createLogger({
152
176
  enabled: true,
@@ -158,6 +182,38 @@ function createAdapterLogger(adapterName, config = {}) {
158
182
  return baseLogger.child({ adapter: adapterName });
159
183
  }
160
184
 
185
+ // src/experiment/constants.ts
186
+ var PRIMA_EXPERIMENT_COOKIES = {
187
+ HOME: "_prima_pr_ab_home",
188
+ COLLECTION: "_prima_pr_ab_collection",
189
+ PRODUCT: "_prima_pr_ab_product"
190
+ };
191
+ var PRIMA_EXPERIMENT_COOKIE_NAMES = Object.values(
192
+ PRIMA_EXPERIMENT_COOKIES
193
+ );
194
+
195
+ // src/experiment/experiment-tracker.ts
196
+ function getCookie(name) {
197
+ if (typeof document === "undefined") return null;
198
+ const value = `; ${document.cookie}`;
199
+ const parts = value.split(`; ${name}=`);
200
+ if (parts.length === 2) {
201
+ return parts.pop()?.split(";").shift() || null;
202
+ }
203
+ return null;
204
+ }
205
+ function getExperimentParams() {
206
+ return {
207
+ [PRIMA_EXPERIMENT_COOKIES.HOME]: getCookie(PRIMA_EXPERIMENT_COOKIES.HOME),
208
+ [PRIMA_EXPERIMENT_COOKIES.COLLECTION]: getCookie(
209
+ PRIMA_EXPERIMENT_COOKIES.COLLECTION
210
+ ),
211
+ [PRIMA_EXPERIMENT_COOKIES.PRODUCT]: getCookie(
212
+ PRIMA_EXPERIMENT_COOKIES.PRODUCT
213
+ )
214
+ };
215
+ }
216
+
161
217
  // src/adapters/base-adapter.ts
162
218
  var BaseAdapter = class {
163
219
  /**
@@ -195,6 +251,38 @@ var BaseAdapter = class {
195
251
  isEnabled() {
196
252
  return this.initialized;
197
253
  }
254
+ /**
255
+ * Extract adapter-specific parameters for this adapter
256
+ * @param params The adapter parameters object
257
+ * @returns Adapter-specific parameters or empty object
258
+ */
259
+ getAdapterParams(params) {
260
+ return params?.[this.name] || {};
261
+ }
262
+ /**
263
+ * Get custom event name or fall back to default
264
+ * @param params The adapter parameters object
265
+ * @param defaultName The default event name to use
266
+ * @returns Custom event name or default
267
+ */
268
+ getEventName(params, defaultName) {
269
+ const adapterParams = this.getAdapterParams(params);
270
+ return adapterParams.event_name || defaultName;
271
+ }
272
+ /**
273
+ * Merge standard event data with adapter-specific parameters
274
+ * @param params The adapter parameters object
275
+ * @param standardData The standard event data
276
+ * @returns Merged data with adapter-specific overrides
277
+ */
278
+ mergeEventData(standardData, params) {
279
+ const adapterParams = this.getAdapterParams(params);
280
+ const { event_name, ...customParams } = adapterParams;
281
+ return {
282
+ ...standardData,
283
+ ...customParams
284
+ };
285
+ }
198
286
  /**
199
287
  * Get a configuration value
200
288
  * @param key The configuration key
@@ -211,6 +299,21 @@ var BaseAdapter = class {
211
299
  getAffiliateParams() {
212
300
  return null;
213
301
  }
302
+ /**
303
+ * Get experiment parameters from cookies
304
+ * @returns Experiment parameters
305
+ */
306
+ getExperimentParams() {
307
+ try {
308
+ return getExperimentParams();
309
+ } catch (error) {
310
+ return {
311
+ _prima_pr_ab_home: null,
312
+ _prima_pr_ab_collection: null,
313
+ _prima_pr_ab_product: null
314
+ };
315
+ }
316
+ }
214
317
  /**
215
318
  * Enhance event parameters with affiliate data
216
319
  * @param params The original parameters
@@ -225,8 +328,71 @@ var BaseAdapter = class {
225
328
  ...affiliateParams
226
329
  };
227
330
  }
331
+ /**
332
+ * Enhance event parameters with experiment data
333
+ * @param params The original parameters
334
+ * @returns Parameters enhanced with experiment data
335
+ */
336
+ enhanceWithExperimentParams(params) {
337
+ const experimentParams = this.getExperimentParams();
338
+ return {
339
+ ...params,
340
+ experiment: experimentParams
341
+ };
342
+ }
228
343
  };
229
344
 
345
+ // src/utils/event-id.ts
346
+ function generateEventId(eventType) {
347
+ const timestamp = Date.now();
348
+ const randomString = Math.random().toString(36).substring(2, 8);
349
+ return `${timestamp}_${randomString}_${eventType}`;
350
+ }
351
+ function getBrowserInfo() {
352
+ if (typeof window === "undefined") {
353
+ return {};
354
+ }
355
+ const userAgent = navigator.userAgent;
356
+ const fbc = getFacebookClickId();
357
+ const fbp = getFacebookBrowserId();
358
+ return {
359
+ clientUserAgent: userAgent,
360
+ fbc,
361
+ fbp
362
+ };
363
+ }
364
+ function getFacebookClickId() {
365
+ if (typeof window === "undefined") {
366
+ return void 0;
367
+ }
368
+ const urlParams = new URLSearchParams(window.location.search);
369
+ const fbclid = urlParams.get("fbclid");
370
+ if (fbclid) {
371
+ return `fb.1.${Date.now()}.${fbclid}`;
372
+ }
373
+ const cookies = document.cookie.split(";");
374
+ for (const cookie of cookies) {
375
+ const [name, value] = cookie.trim().split("=");
376
+ if (name === "_fbc") {
377
+ return value;
378
+ }
379
+ }
380
+ return void 0;
381
+ }
382
+ function getFacebookBrowserId() {
383
+ if (typeof window === "undefined") {
384
+ return void 0;
385
+ }
386
+ const cookies = document.cookie.split(";");
387
+ for (const cookie of cookies) {
388
+ const [name, value] = cookie.trim().split("=");
389
+ if (name === "_fbp") {
390
+ return value;
391
+ }
392
+ }
393
+ return void 0;
394
+ }
395
+
230
396
  // src/adapters/pixel-adapter.ts
231
397
  var PixelAdapter = class extends BaseAdapter {
232
398
  constructor(config) {
@@ -252,18 +418,34 @@ var PixelAdapter = class extends BaseAdapter {
252
418
  );
253
419
  return;
254
420
  }
255
- const pixelId = this.getConfig("pixelId");
256
421
  this.logger.info("Successfully initialized", { pixelId: "***" });
257
422
  this.initialized = true;
258
423
  }
259
424
  /**
260
425
  * Track an event with Facebook Pixel
261
426
  * @param event The event to track
427
+ * @param adapterParams Optional adapter-specific parameters
262
428
  */
263
- async trackEvent(event) {
429
+ async trackEvent(event, adapterParams) {
430
+ if (!event.eventId) {
431
+ event.eventId = generateEventId(event.type);
432
+ }
433
+ this.logger.debug("Tracking event", {
434
+ eventType: event.type,
435
+ eventId: event.eventId
436
+ });
437
+ await this.trackClientSide(event, adapterParams);
438
+ if (this.getConfig("enableCAPI", true)) {
439
+ await this.trackServerSide(event);
440
+ }
441
+ }
442
+ /**
443
+ * Track event on client-side (browser pixel)
444
+ */
445
+ async trackClientSide(event, adapterParams) {
264
446
  if (!this.initialized || typeof window === "undefined" || !window.fbq) {
265
447
  this.logger.warn(
266
- "Cannot track event, adapter not initialized or fbq not available",
448
+ "Cannot track client-side event, adapter not initialized or fbq not available",
267
449
  {
268
450
  eventType: event.type,
269
451
  initialized: this.initialized,
@@ -273,55 +455,96 @@ var PixelAdapter = class extends BaseAdapter {
273
455
  );
274
456
  return;
275
457
  }
276
- this.logger.debug("Tracking event", { eventType: event.type });
277
458
  switch (event.type) {
278
459
  case "page_view" /* PAGE_VIEW */:
279
- this.trackPageView(event);
460
+ this.trackPageView(event, adapterParams);
280
461
  break;
281
462
  case "view_content" /* VIEW_CONTENT */:
282
- this.trackViewContent(event);
463
+ this.trackViewContent(event, adapterParams);
283
464
  break;
284
465
  case "product_view" /* PRODUCT_VIEW */:
285
- this.trackProductView(event);
466
+ this.trackProductView(event, adapterParams);
286
467
  break;
287
468
  case "add_to_cart" /* ADD_TO_CART */:
288
- this.trackAddToCart(event);
469
+ this.trackAddToCart(event, adapterParams);
289
470
  break;
290
471
  case "checkout_started" /* CHECKOUT_STARTED */:
291
- this.trackCheckoutStarted(event);
472
+ this.trackCheckoutStarted(event, adapterParams);
292
473
  break;
293
474
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
294
- this.trackCheckoutCompleted(event);
475
+ this.trackCheckoutCompleted(event, adapterParams);
295
476
  break;
296
477
  case "purchase" /* PURCHASE */:
297
- this.trackPurchase(event);
478
+ this.trackPurchase(event, adapterParams);
298
479
  break;
299
480
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
300
- this.trackAddPaymentInfo(event);
481
+ this.trackAddPaymentInfo(event, adapterParams);
301
482
  break;
302
483
  case "search" /* SEARCH */:
303
- this.trackSearch(event);
484
+ this.trackSearch(event, adapterParams);
304
485
  break;
305
486
  default:
306
487
  this.logger.debug("Unhandled event type", { eventType: event.type });
307
488
  break;
308
489
  }
309
490
  }
491
+ /**
492
+ * Track event on server-side (CAPI) as backup
493
+ */
494
+ async trackServerSide(event) {
495
+ try {
496
+ const browserInfo = getBrowserInfo();
497
+ const payload = {
498
+ events: [event],
499
+ userInfo: browserInfo
500
+ };
501
+ const response = await fetch("/api/events", {
502
+ method: "POST",
503
+ headers: {
504
+ "Content-Type": "application/json"
505
+ },
506
+ body: JSON.stringify(payload)
507
+ });
508
+ if (!response.ok) {
509
+ throw new Error(`Server-side tracking failed: ${response.status}`);
510
+ }
511
+ this.logger.debug(
512
+ `FB Pixel: Server-side backup sent for event ${event.type}`
513
+ );
514
+ } catch (error) {
515
+ this.logger.error(
516
+ `FB Pixel: Server-side backup failed for event ${event.type}: ${error instanceof Error ? error.message : String(error)}`
517
+ );
518
+ }
519
+ }
310
520
  /**
311
521
  * Track a page view event
312
522
  * @param event The page view event
313
523
  */
314
- trackPageView(event) {
315
- const params = this.enhanceWithAffiliateParams({});
316
- window.fbq?.("track", "PageView", params);
317
- this.logger.debug("PageView event tracked", { params });
524
+ trackPageView(event, adapterParams) {
525
+ const eventName = this.getEventName(adapterParams, "PageView");
526
+ const affiliateParams = this.enhanceWithAffiliateParams({});
527
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
528
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
529
+ if (event.eventId) {
530
+ window.fbq?.("track", eventName, enhancedParams, {
531
+ eventID: event.eventId
532
+ });
533
+ } else {
534
+ window.fbq?.("track", eventName, enhancedParams);
535
+ }
536
+ this.logger.debug("PageView event tracked", {
537
+ eventName,
538
+ params: enhancedParams
539
+ });
318
540
  }
319
541
  /**
320
542
  * Track a product view event
321
543
  * @param event The product view event
322
544
  */
323
- trackProductView(event) {
324
- const params = {
545
+ trackProductView(event, adapterParams) {
546
+ const eventName = this.getEventName(adapterParams, "ViewContent");
547
+ const baseParams = {
325
548
  content_type: "product_group",
326
549
  content_ids: [event.productId],
327
550
  content_name: event.productName,
@@ -329,34 +552,56 @@ var PixelAdapter = class extends BaseAdapter {
329
552
  value: event.price,
330
553
  currency: event.currency || "INR"
331
554
  };
332
- window.fbq?.(
333
- "track",
334
- "ViewContent",
335
- this.enhanceWithAffiliateParams(params)
336
- );
555
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
556
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
557
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
558
+ if (event.eventId) {
559
+ window.fbq?.("track", eventName, enhancedParams, {
560
+ eventID: event.eventId
561
+ });
562
+ } else {
563
+ window.fbq?.("track", eventName, enhancedParams);
564
+ }
565
+ this.logger.debug("ProductView event tracked", {
566
+ eventName,
567
+ params: enhancedParams
568
+ });
337
569
  }
338
570
  /**
339
571
  * Track an add to cart event
340
572
  * @param event The add to cart event
341
573
  */
342
- trackAddToCart(event) {
343
- const params = {
574
+ trackAddToCart(event, adapterParams) {
575
+ const eventName = this.getEventName(adapterParams, "AddToCart");
576
+ const baseParams = {
344
577
  content_type: "product_group",
345
578
  content_ids: [event.productId],
346
579
  content_name: event.productName,
347
580
  value: event.price,
348
581
  currency: event.currency || "INR"
349
582
  };
350
- const enhancedParams = this.enhanceWithAffiliateParams(params);
351
- window.fbq?.("track", "AddToCart", enhancedParams);
352
- this.logger.debug("AddToCart event tracked", { params: enhancedParams });
583
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
584
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
585
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
586
+ if (event.eventId) {
587
+ window.fbq?.("track", eventName, enhancedParams, {
588
+ eventID: event.eventId
589
+ });
590
+ } else {
591
+ window.fbq?.("track", eventName, enhancedParams);
592
+ }
593
+ this.logger.debug("AddToCart event tracked", {
594
+ eventName,
595
+ params: enhancedParams
596
+ });
353
597
  }
354
598
  /**
355
599
  * Track a checkout started event
356
600
  * @param event The checkout started event
357
601
  */
358
- trackCheckoutStarted(event) {
359
- const params = {
602
+ trackCheckoutStarted(event, adapterParams) {
603
+ const eventName = this.getEventName(adapterParams, "InitiateCheckout");
604
+ const baseParams = {
360
605
  content_ids: event.items.map((item) => item.productId),
361
606
  content_type: "product_group",
362
607
  value: event.cartValue,
@@ -368,18 +613,28 @@ var PixelAdapter = class extends BaseAdapter {
368
613
  item_price: item.price
369
614
  }))
370
615
  };
371
- window.fbq?.(
372
- "track",
373
- "InitiateCheckout",
374
- this.enhanceWithAffiliateParams(params)
375
- );
616
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
617
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
618
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
619
+ if (event.eventId) {
620
+ window.fbq?.("track", eventName, enhancedParams, {
621
+ eventID: event.eventId
622
+ });
623
+ } else {
624
+ window.fbq?.("track", eventName, enhancedParams);
625
+ }
626
+ this.logger.debug("CheckoutStarted event tracked", {
627
+ eventName,
628
+ params: enhancedParams
629
+ });
376
630
  }
377
631
  /**
378
632
  * Track a checkout completed event
379
633
  * @param event The checkout completed event
380
634
  */
381
- trackCheckoutCompleted(event) {
382
- const params = {
635
+ trackCheckoutCompleted(event, adapterParams) {
636
+ const eventName = this.getEventName(adapterParams, "Purchase");
637
+ const baseParams = {
383
638
  value: event.cartValue,
384
639
  currency: event.currency || "INR",
385
640
  content_type: "product_group",
@@ -391,26 +646,54 @@ var PixelAdapter = class extends BaseAdapter {
391
646
  item_price: item.price
392
647
  }))
393
648
  };
394
- window.fbq?.("track", "Purchase", this.enhanceWithAffiliateParams(params));
649
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
650
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
651
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
652
+ if (event.eventId) {
653
+ window.fbq?.("track", eventName, enhancedParams, {
654
+ eventID: event.eventId
655
+ });
656
+ } else {
657
+ window.fbq?.("track", eventName, enhancedParams);
658
+ }
659
+ this.logger.debug("CheckoutCompleted event tracked", {
660
+ eventName,
661
+ params: enhancedParams
662
+ });
395
663
  }
396
664
  /**
397
665
  * Track a search event
398
666
  * @param event The search event
399
667
  */
400
- trackSearch(event) {
401
- const params = {
668
+ trackSearch(event, adapterParams) {
669
+ const eventName = this.getEventName(adapterParams, "Search");
670
+ const baseParams = {
402
671
  search_string: event.searchTerm,
403
672
  content_category: "product",
404
673
  content_ids: event.content_ids || []
405
674
  };
406
- window.fbq?.("track", "Search", this.enhanceWithAffiliateParams(params));
675
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
676
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
677
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
678
+ if (event.eventId) {
679
+ window.fbq?.("track", eventName, enhancedParams, {
680
+ eventID: event.eventId
681
+ });
682
+ } else {
683
+ window.fbq?.("track", eventName, enhancedParams);
684
+ }
685
+ this.logger.debug("Search event tracked", {
686
+ eventName,
687
+ params: enhancedParams
688
+ });
407
689
  }
408
690
  /**
409
691
  * Track an add payment info event
410
692
  * @param event The add payment info event
411
693
  */
412
- trackAddPaymentInfo(event) {
413
- const params = {
694
+ trackAddPaymentInfo(event, adapterParams) {
695
+ const eventName = this.getEventName(adapterParams, "AddPaymentInfo");
696
+ const baseParams = {
414
697
  value: event.cartValue,
415
698
  currency: event.currency || "INR",
416
699
  content_type: "product_group",
@@ -422,18 +705,28 @@ var PixelAdapter = class extends BaseAdapter {
422
705
  })),
423
706
  payment_type: event.paymentType || ""
424
707
  };
425
- window.fbq?.(
426
- "track",
427
- "AddPaymentInfo",
428
- this.enhanceWithAffiliateParams(params)
429
- );
708
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
709
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
710
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
711
+ if (event.eventId) {
712
+ window.fbq?.("track", eventName, enhancedParams, {
713
+ eventID: event.eventId
714
+ });
715
+ } else {
716
+ window.fbq?.("track", eventName, enhancedParams);
717
+ }
718
+ this.logger.debug("AddPaymentInfo event tracked", {
719
+ eventName,
720
+ params: enhancedParams
721
+ });
430
722
  }
431
723
  /**
432
724
  * Track a view content event
433
725
  * @param event The view content event
434
726
  */
435
- trackViewContent(event) {
436
- const params = {
727
+ trackViewContent(event, adapterParams) {
728
+ const eventName = this.getEventName(adapterParams, "ViewContent");
729
+ const baseParams = {
437
730
  content_type: event.content_type || "product",
438
731
  content_ids: event.content_ids || [],
439
732
  content_name: event.content_name || "",
@@ -441,18 +734,28 @@ var PixelAdapter = class extends BaseAdapter {
441
734
  value: event.value || 0,
442
735
  currency: event.currency || "INR"
443
736
  };
444
- window.fbq?.(
445
- "track",
446
- "ViewContent",
447
- this.enhanceWithAffiliateParams(params)
448
- );
737
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
738
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
739
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
740
+ if (event.eventId) {
741
+ window.fbq?.("track", eventName, enhancedParams, {
742
+ eventID: event.eventId
743
+ });
744
+ } else {
745
+ window.fbq?.("track", eventName, enhancedParams);
746
+ }
747
+ this.logger.debug("ViewContent event tracked", {
748
+ eventName,
749
+ params: enhancedParams
750
+ });
449
751
  }
450
752
  /**
451
753
  * Track a purchase event
452
754
  * @param event The purchase event
453
755
  */
454
- trackPurchase(event) {
455
- const params = {
756
+ trackPurchase(event, adapterParams) {
757
+ const eventName = this.getEventName(adapterParams, "Purchase");
758
+ const baseParams = {
456
759
  value: event.value,
457
760
  currency: event.currency || "INR",
458
761
  content_type: event.content_type || "product_group",
@@ -460,15 +763,20 @@ var PixelAdapter = class extends BaseAdapter {
460
763
  num_items: event.num_items || 1,
461
764
  contents: event.contents || []
462
765
  };
463
- window.fbq?.("track", "Purchase", this.enhanceWithAffiliateParams(params));
464
- }
465
- /**
466
- * Convert an event to Facebook Pixel parameters
467
- * @param event The event to convert
468
- */
469
- eventToParams(event) {
470
- const { type, timestamp, ...params } = event;
471
- return this.enhanceWithAffiliateParams(params);
766
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
767
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
768
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
769
+ if (event.eventId) {
770
+ window.fbq?.("track", eventName, enhancedParams, {
771
+ eventID: event.eventId
772
+ });
773
+ } else {
774
+ window.fbq?.("track", eventName, enhancedParams);
775
+ }
776
+ this.logger.debug("Purchase event tracked", {
777
+ eventName,
778
+ params: enhancedParams
779
+ });
472
780
  }
473
781
  };
474
782
 
@@ -517,8 +825,9 @@ var GoogleAdapter = class extends BaseAdapter {
517
825
  /**
518
826
  * Track an event with Google Analytics
519
827
  * @param event The event to track
828
+ * @param adapterParams Optional adapter-specific parameters
520
829
  */
521
- async trackEvent(event) {
830
+ async trackEvent(event, adapterParams) {
522
831
  this.logger.debug("Attempting to track event", {
523
832
  initialized: this.initialized,
524
833
  hasWindow: typeof window !== "undefined",
@@ -544,76 +853,94 @@ var GoogleAdapter = class extends BaseAdapter {
544
853
  });
545
854
  switch (event.type) {
546
855
  case "page_view" /* PAGE_VIEW */:
547
- this.trackPageView(event, measurementId);
856
+ this.trackPageView(
857
+ event,
858
+ measurementId,
859
+ adapterParams
860
+ );
548
861
  break;
549
862
  case "user_engagement" /* USER_ENGAGEMENT */:
550
- this.trackUserEngagement();
863
+ this.trackUserEngagement(adapterParams);
551
864
  break;
552
865
  case "session_start" /* SESSION_START */:
553
- this.trackSessionStart();
866
+ this.trackSessionStart(adapterParams);
554
867
  break;
555
868
  case "first_visit" /* FIRST_VISIT */:
556
- this.trackFirstVisit();
869
+ this.trackFirstVisit(adapterParams);
557
870
  break;
558
871
  case "view_item" /* VIEW_ITEM */:
559
- this.trackViewItem(event);
872
+ this.trackViewItem(event, adapterParams);
560
873
  break;
561
874
  case "viewed_product" /* VIEWED_PRODUCT */:
562
- this.trackViewedProduct(event);
875
+ this.trackViewedProduct(event, adapterParams);
563
876
  break;
564
877
  case "checkout_payment" /* CHECKOUT_PAYMENT */:
565
- this.trackCheckoutPayment(event);
878
+ this.trackCheckoutPayment(
879
+ event,
880
+ adapterParams
881
+ );
566
882
  break;
567
883
  case "scroll" /* SCROLL */:
568
- this.trackScroll();
884
+ this.trackScroll(adapterParams);
569
885
  break;
570
886
  case "add_to_cart" /* ADD_TO_CART */:
571
- case "shopify_add_to_cart" /* SHOPIFY_ADD_TO_CART */:
572
- this.trackAddToCart(event);
887
+ this.trackAddToCart(event, adapterParams);
573
888
  break;
574
889
  case "form_start" /* FORM_START */:
575
- this.trackFormStart();
890
+ this.trackFormStart(adapterParams);
576
891
  break;
577
892
  case "checkout_started" /* CHECKOUT_STARTED */:
578
- this.trackCheckoutStarted(event);
893
+ this.trackCheckoutStarted(
894
+ event,
895
+ adapterParams
896
+ );
579
897
  break;
580
898
  case "form_submission" /* FORM_SUBMISSION */:
581
- this.trackFormSubmission(event);
899
+ this.trackFormSubmission(event, adapterParams);
582
900
  break;
583
901
  case "search" /* SEARCH */:
584
- this.trackSearch(event);
902
+ this.trackSearch(event, adapterParams);
585
903
  break;
586
904
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
587
- this.trackCheckoutCompleted(event);
905
+ this.trackCheckoutCompleted(
906
+ event,
907
+ adapterParams
908
+ );
588
909
  break;
589
910
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
590
- this.trackAddPaymentInfo(event);
911
+ this.trackAddPaymentInfo(event, adapterParams);
591
912
  break;
592
913
  case "view_content" /* VIEW_CONTENT */:
593
- this.trackViewContent(event);
914
+ this.trackViewContent(event, adapterParams);
594
915
  break;
595
916
  case "purchase" /* PURCHASE */:
596
- this.trackPurchase(event);
917
+ this.trackPurchase(event, adapterParams);
597
918
  break;
598
919
  case "view_search_results" /* VIEW_SEARCH_RESULTS */:
599
- this.trackViewSearchResults(event);
920
+ this.trackViewSearchResults(
921
+ event,
922
+ adapterParams
923
+ );
600
924
  break;
601
925
  case "order_placed" /* ORDER_PLACED */:
602
- this.trackOrderPlaced(event);
926
+ this.trackOrderPlaced(event, adapterParams);
603
927
  break;
604
928
  case "begin_checkout" /* BEGIN_CHECKOUT */:
605
- this.trackBeginCheckout(event);
929
+ this.trackBeginCheckout(event, adapterParams);
606
930
  break;
607
931
  case "custom" /* CUSTOM */:
608
- this.trackCustomEvent(event);
932
+ this.trackCustomEvent(event, adapterParams);
609
933
  break;
610
934
  default: {
611
- const params = this.eventToParams(event);
612
- window.gtag(
613
- "event",
614
- event.type,
615
- this.enhanceWithAffiliateParams(params)
935
+ const eventName = this.getEventName(adapterParams, event.type);
936
+ const baseParams = this.eventToParams(event);
937
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
938
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
939
+ const enhancedParams = this.mergeEventData(
940
+ experimentParams,
941
+ adapterParams
616
942
  );
943
+ window.gtag("event", eventName, enhancedParams);
617
944
  break;
618
945
  }
619
946
  }
@@ -623,8 +950,9 @@ var GoogleAdapter = class extends BaseAdapter {
623
950
  * @param event The page view event
624
951
  * @param measurementId The Google Analytics measurement ID
625
952
  */
626
- trackPageView(event, measurementId) {
627
- const params = {
953
+ trackPageView(event, measurementId, adapterParams) {
954
+ const eventName = this.getEventName(adapterParams, "page_view");
955
+ const baseParams = {
628
956
  page_path: event.path,
629
957
  page_title: event.title || document.title,
630
958
  page_location: event.page_location || window.location.href,
@@ -647,14 +975,14 @@ var GoogleAdapter = class extends BaseAdapter {
647
975
  user_properties: event.user_properties,
648
976
  session_engaged: event.session_engaged
649
977
  };
650
- window.gtag?.(
651
- "event",
652
- "page_view",
653
- this.enhanceWithAffiliateParams(params)
654
- );
655
- }
656
- trackUserEngagement() {
657
- const params = {
978
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
979
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
980
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
981
+ window.gtag?.("event", eventName, enhancedParams);
982
+ }
983
+ trackUserEngagement(adapterParams) {
984
+ const eventName = this.getEventName(adapterParams, "user_engagement");
985
+ const baseParams = {
658
986
  batch_ordering_id: "",
659
987
  batch_page_id: "",
660
988
  campaign: "",
@@ -671,14 +999,14 @@ var GoogleAdapter = class extends BaseAdapter {
671
999
  srsltid: "",
672
1000
  term: ""
673
1001
  };
674
- window.gtag?.(
675
- "event",
676
- "user_engagement",
677
- this.enhanceWithAffiliateParams(params)
678
- );
679
- }
680
- trackSessionStart() {
681
- const params = {
1002
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1003
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1004
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1005
+ window.gtag?.("event", eventName, enhancedParams);
1006
+ }
1007
+ trackSessionStart(adapterParams) {
1008
+ const eventName = this.getEventName(adapterParams, "session_start");
1009
+ const baseParams = {
682
1010
  batch_ordering_id: "",
683
1011
  batch_page_id: "",
684
1012
  campaign: "",
@@ -697,14 +1025,14 @@ var GoogleAdapter = class extends BaseAdapter {
697
1025
  srsltid: "",
698
1026
  term: ""
699
1027
  };
700
- window.gtag?.(
701
- "event",
702
- "session_start",
703
- this.enhanceWithAffiliateParams(params)
704
- );
705
- }
706
- trackFirstVisit() {
707
- const params = {
1028
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1029
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1030
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1031
+ window.gtag?.("event", eventName, enhancedParams);
1032
+ }
1033
+ trackFirstVisit(adapterParams) {
1034
+ const eventName = this.getEventName(adapterParams, "first_visit");
1035
+ const baseParams = {
708
1036
  batch_ordering_id: "",
709
1037
  batch_page_id: "",
710
1038
  campaign: "",
@@ -725,25 +1053,26 @@ var GoogleAdapter = class extends BaseAdapter {
725
1053
  page_source: "",
726
1054
  page_term: ""
727
1055
  };
728
- window.gtag?.(
729
- "event",
730
- "first_visit",
731
- this.enhanceWithAffiliateParams(params)
732
- );
733
- }
734
- trackViewItem(event) {
735
- window.gtag?.(
736
- "event",
737
- "view_item",
738
- this.enhanceWithAffiliateParams({
739
- currency: event.currency,
740
- value: event.value,
741
- items: event.items
742
- })
743
- );
744
- }
745
- trackScroll() {
746
- const params = {
1056
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1057
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1058
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1059
+ window.gtag?.("event", eventName, enhancedParams);
1060
+ }
1061
+ trackViewItem(event, adapterParams) {
1062
+ const eventName = this.getEventName(adapterParams, "view_item");
1063
+ const baseParams = {
1064
+ currency: event.currency,
1065
+ value: event.value,
1066
+ items: event.items
1067
+ };
1068
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1069
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1070
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1071
+ window.gtag?.("event", eventName, enhancedParams);
1072
+ }
1073
+ trackScroll(adapterParams) {
1074
+ const eventName = this.getEventName(adapterParams, "scroll");
1075
+ const baseParams = {
747
1076
  batch_ordering_id: "",
748
1077
  batch_page_id: "",
749
1078
  engagement_time_msec: void 0,
@@ -757,46 +1086,52 @@ var GoogleAdapter = class extends BaseAdapter {
757
1086
  percent_scrolled: 90
758
1087
  // or dynamically captured
759
1088
  };
760
- window.gtag?.("event", "scroll", this.enhanceWithAffiliateParams(params));
761
- }
762
- trackCheckoutPayment(event) {
763
- window.gtag?.(
764
- "event",
765
- "checkout_payment",
766
- this.enhanceWithAffiliateParams({
767
- currency: event.currency,
768
- value: event.cartValue,
769
- items: event.items.map((item) => ({
770
- item_id: item.productId,
771
- item_name: item.productName,
772
- price: item.price,
773
- quantity: item.quantity
774
- }))
775
- })
776
- );
777
- }
778
- trackViewedProduct(event) {
779
- window.gtag?.(
780
- "event",
781
- "viewed_product",
782
- this.enhanceWithAffiliateParams({
783
- currency: event.currency,
784
- value: event.price,
785
- items: [
786
- {
787
- item_id: event.productId,
788
- item_name: event.productName,
789
- price: event.price,
790
- currency: event.currency
791
- }
792
- ],
793
- view_duration: event.viewDuration
794
- })
795
- );
1089
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1090
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1091
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1092
+ window.gtag?.("event", eventName, enhancedParams);
1093
+ }
1094
+ trackCheckoutPayment(event, adapterParams) {
1095
+ const eventName = this.getEventName(adapterParams, "checkout_payment");
1096
+ const baseParams = {
1097
+ currency: event.currency,
1098
+ value: event.cartValue,
1099
+ items: event.items.map((item) => ({
1100
+ item_id: item.productId,
1101
+ item_name: item.productName,
1102
+ price: item.price,
1103
+ quantity: item.quantity
1104
+ }))
1105
+ };
1106
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1107
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1108
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1109
+ window.gtag?.("event", eventName, enhancedParams);
1110
+ }
1111
+ trackViewedProduct(event, adapterParams) {
1112
+ const eventName = this.getEventName(adapterParams, "viewed_product");
1113
+ const baseParams = {
1114
+ currency: event.currency,
1115
+ value: event.price,
1116
+ items: [
1117
+ {
1118
+ item_id: event.productId,
1119
+ item_name: event.productName,
1120
+ price: event.price,
1121
+ currency: event.currency
1122
+ }
1123
+ ],
1124
+ view_duration: event.viewDuration
1125
+ };
1126
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1127
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1128
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1129
+ window.gtag?.("event", eventName, enhancedParams);
796
1130
  }
797
- trackAddToCart(event) {
1131
+ trackAddToCart(event, adapterParams) {
798
1132
  this.logger.debug("Processing add_to_cart event", { event });
799
- const params = {
1133
+ const eventName = this.getEventName(adapterParams, "add_to_cart");
1134
+ const baseParams = {
800
1135
  currency: event.currency || "INR",
801
1136
  value: event.price * (event.quantity || 1),
802
1137
  // Calculate total value
@@ -822,14 +1157,18 @@ var GoogleAdapter = class extends BaseAdapter {
822
1157
  user_id: event.user_id,
823
1158
  user_properties: event.user_properties
824
1159
  };
825
- const enhancedParams = this.enhanceWithAffiliateParams(params);
1160
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1161
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1162
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
826
1163
  this.logger.debug("Sending add_to_cart event to gtag", {
1164
+ eventName,
827
1165
  params: enhancedParams
828
1166
  });
829
- window.gtag?.("event", "add_to_cart", enhancedParams);
1167
+ window.gtag?.("event", eventName, enhancedParams);
830
1168
  }
831
- trackFormStart() {
832
- const params = {
1169
+ trackFormStart(adapterParams) {
1170
+ const eventName = this.getEventName(adapterParams, "form_start");
1171
+ const baseParams = {
833
1172
  batch_ordering_id: "",
834
1173
  batch_page_id: "",
835
1174
  engagement_time_msec: void 0,
@@ -847,14 +1186,14 @@ var GoogleAdapter = class extends BaseAdapter {
847
1186
  page_referrer: document.referrer,
848
1187
  page_title: document.title
849
1188
  };
850
- window.gtag?.(
851
- "event",
852
- "form_start",
853
- this.enhanceWithAffiliateParams(params)
854
- );
855
- }
856
- trackCheckoutStarted(event) {
857
- const params = {
1189
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1190
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1191
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1192
+ window.gtag?.("event", eventName, enhancedParams);
1193
+ }
1194
+ trackCheckoutStarted(event, adapterParams) {
1195
+ const eventName = this.getEventName(adapterParams, "begin_checkout");
1196
+ const baseParams = {
858
1197
  batch_ordering_id: "",
859
1198
  batch_page_id: "",
860
1199
  currency: event.currency || "INR",
@@ -877,14 +1216,14 @@ var GoogleAdapter = class extends BaseAdapter {
877
1216
  item_variant: item.variant
878
1217
  }))
879
1218
  };
880
- window.gtag?.(
881
- "event",
882
- "begin_checkout",
883
- this.enhanceWithAffiliateParams(params)
884
- );
885
- }
886
- trackFormSubmission(event) {
887
- const params = {
1219
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1220
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1221
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1222
+ window.gtag?.("event", eventName, enhancedParams);
1223
+ }
1224
+ trackFormSubmission(event, adapterParams) {
1225
+ const eventName = this.getEventName(adapterParams, "form_submit");
1226
+ const baseParams = {
888
1227
  batch_ordering_id: "",
889
1228
  batch_page_id: "",
890
1229
  engagement_time_msec: void 0,
@@ -898,14 +1237,14 @@ var GoogleAdapter = class extends BaseAdapter {
898
1237
  page_referrer: document.referrer,
899
1238
  page_title: document.title
900
1239
  };
901
- window.gtag?.(
902
- "event",
903
- "form_submit",
904
- this.enhanceWithAffiliateParams(params)
905
- );
906
- }
907
- trackSearch(event) {
908
- const params = {
1240
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1241
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1242
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1243
+ window.gtag?.("event", eventName, enhancedParams);
1244
+ }
1245
+ trackSearch(event, adapterParams) {
1246
+ const eventName = this.getEventName(adapterParams, "search");
1247
+ const baseParams = {
909
1248
  batch_ordering_id: "",
910
1249
  batch_page_id: "",
911
1250
  engagement_time_msec: void 0,
@@ -917,14 +1256,18 @@ var GoogleAdapter = class extends BaseAdapter {
917
1256
  page_title: document.title,
918
1257
  search_term: event.searchTerm
919
1258
  };
920
- window.gtag?.("event", "search", this.enhanceWithAffiliateParams(params));
1259
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1260
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1261
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1262
+ window.gtag?.("event", eventName, enhancedParams);
921
1263
  }
922
1264
  /**
923
1265
  * Track a checkout completed event
924
1266
  * @param event The checkout completed event
925
1267
  */
926
- trackCheckoutCompleted(event) {
927
- const params = {
1268
+ trackCheckoutCompleted(event, adapterParams) {
1269
+ const eventName = this.getEventName(adapterParams, "purchase");
1270
+ const baseParams = {
928
1271
  transaction_id: event.orderId,
929
1272
  currency: event.currency || "INR",
930
1273
  value: event.cartValue,
@@ -936,22 +1279,30 @@ var GoogleAdapter = class extends BaseAdapter {
936
1279
  item_variant: item.variant
937
1280
  }))
938
1281
  };
939
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1282
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1283
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1284
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1285
+ window.gtag?.("event", eventName, enhancedParams);
940
1286
  }
941
1287
  /**
942
1288
  * Track a custom event
943
1289
  * @param event The custom event
944
1290
  */
945
- trackCustomEvent(event) {
946
- const params = event.properties || {};
947
- window.gtag?.("event", event.name, this.enhanceWithAffiliateParams(params));
1291
+ trackCustomEvent(event, adapterParams) {
1292
+ const eventName = this.getEventName(adapterParams, event.name);
1293
+ const baseParams = event.properties || {};
1294
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1295
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1296
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1297
+ window.gtag?.("event", eventName, enhancedParams);
948
1298
  }
949
1299
  /**
950
1300
  * Track an add payment info event
951
1301
  * @param event The add payment info event
952
1302
  */
953
- trackAddPaymentInfo(event) {
954
- const params = {
1303
+ trackAddPaymentInfo(event, adapterParams) {
1304
+ const eventName = this.getEventName(adapterParams, "add_payment_info");
1305
+ const baseParams = {
955
1306
  currency: event.currency || "INR",
956
1307
  value: event.cartValue,
957
1308
  payment_type: event.paymentType || "",
@@ -963,18 +1314,18 @@ var GoogleAdapter = class extends BaseAdapter {
963
1314
  item_variant: item.variant
964
1315
  }))
965
1316
  };
966
- window.gtag?.(
967
- "event",
968
- "add_payment_info",
969
- this.enhanceWithAffiliateParams(params)
970
- );
1317
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1318
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1319
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1320
+ window.gtag?.("event", eventName, enhancedParams);
971
1321
  }
972
1322
  /**
973
1323
  * Track a view content event
974
1324
  * @param event The view content event
975
1325
  */
976
- trackViewContent(event) {
977
- const params = {
1326
+ trackViewContent(event, adapterParams) {
1327
+ const eventName = this.getEventName(adapterParams, "view_item");
1328
+ const baseParams = {
978
1329
  currency: event.currency || "USD",
979
1330
  value: event.value || 0,
980
1331
  items: event.items?.map((item) => ({
@@ -1003,18 +1354,18 @@ var GoogleAdapter = class extends BaseAdapter {
1003
1354
  user_id: event.user_id,
1004
1355
  user_properties: event.user_properties
1005
1356
  };
1006
- window.gtag?.(
1007
- "event",
1008
- "view_item",
1009
- this.enhanceWithAffiliateParams(params)
1010
- );
1357
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1358
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1359
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1360
+ window.gtag?.("event", eventName, enhancedParams);
1011
1361
  }
1012
1362
  /**
1013
1363
  * Track a purchase event
1014
1364
  * @param event The purchase event
1015
1365
  */
1016
- trackPurchase(event) {
1017
- const params = {
1366
+ trackPurchase(event, adapterParams) {
1367
+ const eventName = this.getEventName(adapterParams, "purchase");
1368
+ const baseParams = {
1018
1369
  transaction_id: event.transaction_id,
1019
1370
  value: event.value,
1020
1371
  currency: event.currency || "USD",
@@ -1047,14 +1398,18 @@ var GoogleAdapter = class extends BaseAdapter {
1047
1398
  user_id: event.user_id,
1048
1399
  user_properties: event.user_properties
1049
1400
  };
1050
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1401
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1402
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1403
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1404
+ window.gtag?.("event", eventName, enhancedParams);
1051
1405
  }
1052
1406
  /**
1053
1407
  * Track a view search results event
1054
1408
  * @param event The view search results event
1055
1409
  */
1056
- trackViewSearchResults(event) {
1057
- const params = {
1410
+ trackViewSearchResults(event, adapterParams) {
1411
+ const eventName = this.getEventName(adapterParams, "view_search_results");
1412
+ const baseParams = {
1058
1413
  search_term: event.search_term,
1059
1414
  // GA4-specific parameters
1060
1415
  batch_ordering_id: event.batch_ordering_id || "",
@@ -1069,18 +1424,18 @@ var GoogleAdapter = class extends BaseAdapter {
1069
1424
  user_id: event.user_id,
1070
1425
  user_properties: event.user_properties
1071
1426
  };
1072
- window.gtag?.(
1073
- "event",
1074
- "view_search_results",
1075
- this.enhanceWithAffiliateParams(params)
1076
- );
1427
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1428
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1429
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1430
+ window.gtag?.("event", eventName, enhancedParams);
1077
1431
  }
1078
1432
  /**
1079
1433
  * Track an order placed event
1080
1434
  * @param event The order placed event
1081
1435
  */
1082
- trackOrderPlaced(event) {
1083
- const params = {
1436
+ trackOrderPlaced(event, adapterParams) {
1437
+ const eventName = this.getEventName(adapterParams, "purchase");
1438
+ const baseParams = {
1084
1439
  transaction_id: event.order_id,
1085
1440
  value: event.total_amount,
1086
1441
  currency: event.currency || "USD",
@@ -1106,14 +1461,18 @@ var GoogleAdapter = class extends BaseAdapter {
1106
1461
  user_id: event.user_id,
1107
1462
  user_properties: event.user_properties
1108
1463
  };
1109
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1464
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1465
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1466
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1467
+ window.gtag?.("event", eventName, enhancedParams);
1110
1468
  }
1111
1469
  /**
1112
1470
  * Track a begin checkout event
1113
1471
  * @param event The begin checkout event
1114
1472
  */
1115
- trackBeginCheckout(event) {
1116
- const params = {
1473
+ trackBeginCheckout(event, adapterParams) {
1474
+ const eventName = this.getEventName(adapterParams, "begin_checkout");
1475
+ const baseParams = {
1117
1476
  currency: event.currency || "USD",
1118
1477
  value: event.value || 0,
1119
1478
  coupon: event.coupon,
@@ -1143,11 +1502,10 @@ var GoogleAdapter = class extends BaseAdapter {
1143
1502
  user_id: event.user_id,
1144
1503
  user_properties: event.user_properties
1145
1504
  };
1146
- window.gtag?.(
1147
- "event",
1148
- "begin_checkout",
1149
- this.enhanceWithAffiliateParams(params)
1150
- );
1505
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1506
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1507
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1508
+ window.gtag?.("event", eventName, enhancedParams);
1151
1509
  }
1152
1510
  /**
1153
1511
  * Convert an event to Google Analytics parameters
@@ -1155,7 +1513,8 @@ var GoogleAdapter = class extends BaseAdapter {
1155
1513
  */
1156
1514
  eventToParams(event) {
1157
1515
  const { type, timestamp, ...params } = event;
1158
- return this.enhanceWithAffiliateParams(params);
1516
+ const affiliateParams = this.enhanceWithAffiliateParams(params);
1517
+ return this.enhanceWithExperimentParams(affiliateParams);
1159
1518
  }
1160
1519
  };
1161
1520
 
@@ -1177,41 +1536,7 @@ var EventNames = {
1177
1536
  SEARCH: "Search",
1178
1537
  // User events
1179
1538
  USER_SIGNED_UP: "User Signed Up",
1180
- USER_LOGGED_IN: "User Logged In",
1181
- // MoEngage events
1182
- ITEM_PURCHASED: "Item Purchased",
1183
- UPDATE_CART: "Update Cart",
1184
- CUSTOMER_REGISTERED: "Customer Registered",
1185
- CUSTOMER_LOGGED_IN: "Customer Logged In",
1186
- SHOPIFY_CHECKOUT_UPDATED: "Shopify - Checkout Updated",
1187
- SHOPIFY_ABANDONED_CHECKOUT: "Shopify - Abandoned Checkout",
1188
- SHOPIFY_ORDER_FULFILLED: "Shopify - Order Fulfilled",
1189
- SHOPIFY_CHECKOUT_STARTED: "Shopify - Checkout Started",
1190
- SHOPIFY_ADD_TO_CART: "Shopify - Add To Cart",
1191
- SHOPIFY_REMOVED_FROM_CART: "Shopify - Removed From Cart",
1192
- SHOPIFY_UPDATE_CART: "Shopify - Update Cart",
1193
- SPINFORM_RESULT: "Spinform Result",
1194
- COUPON_COPIED: "Coupon Copied",
1195
- STARTED_CHECKOUT_GK: "Started Checkout GK",
1196
- MOBILE_ADDED_GK: "Mobile Added GK",
1197
- ADDRESS_SELECTED_GK: "Address Selected GK",
1198
- ADDRESS_COMPLETED_GK: "Address Completed GK",
1199
- PAYMENT_METHOD_SELECTED_GK: "Payment Method Selected GK",
1200
- PAYMENT_COMPLETED_GK: "Payment Completed GK",
1201
- ORDER_SUCCESS: "Order Success",
1202
- ORDER_COMPLETED: "Order Completed",
1203
- PIN_CODE_ADDED_GK: "PIN Code Added GK",
1204
- ADDRESS_ADDED_GK: "Address Added GK",
1205
- KP_MP_PHONE_NUMBER_LOGGED_IN: "KP MP Phone Number Logged In",
1206
- KP_PHONE_NUMBER_LOGGED_IN: "KP Phone Number Logged In",
1207
- KP_MP_SHOPIFY_LOGGED_IN: "KP MP Shopify Logged In",
1208
- KP_MP_SUCCESSFULLY_LOGGED_OUT: "KP MP Successfully Logged Out",
1209
- KP_WHATSAPP_LOGGED_IN: "KP Whatsapp Logged In",
1210
- KP_MP_TRUECALLER_LOGGED_IN: "KP MP Truecaller Logged In",
1211
- KP_MP_WHATSAPP_LOGGED_IN: "KP MP Whatsapp Logged In",
1212
- KP_TRUECALLER_LOGGED_IN: "KP Truecaller Logged In",
1213
- KP_SHOPIFY_LOGGED_IN: "KP Shopify Logged In",
1214
- KP_SUCCESSFULLY_LOGGED_OUT: "KP Successfully Logged Out"
1539
+ USER_LOGGED_IN: "User Logged In"
1215
1540
  };
1216
1541
  var DEFAULT_CURRENCY = "INR";
1217
1542
 
@@ -1265,8 +1590,9 @@ var MoengageAdapter = class extends BaseAdapter {
1265
1590
  /**
1266
1591
  * Track an event with MoenGage SDK
1267
1592
  * @param event The event to track
1593
+ * @param adapterParams Optional adapter-specific parameters
1268
1594
  */
1269
- async trackEvent(event) {
1595
+ async trackEvent(event, adapterParams) {
1270
1596
  if (!this.initialized || typeof window === "undefined" || !this.sdk) {
1271
1597
  this.logger.warn(
1272
1598
  "Cannot track event, adapter not initialized or SDK not available",
@@ -1282,106 +1608,172 @@ var MoengageAdapter = class extends BaseAdapter {
1282
1608
  this.logger.debug("Tracking event", { eventType: event.type });
1283
1609
  switch (event.type) {
1284
1610
  case "page_view" /* PAGE_VIEW */:
1285
- this.trackPageView(event);
1611
+ this.trackPageView(event, adapterParams);
1286
1612
  break;
1287
1613
  case "button_click" /* BUTTON_CLICK */:
1288
- this.trackButtonClick(event);
1614
+ this.trackButtonClick(event, adapterParams);
1289
1615
  break;
1290
1616
  case "form_submission" /* FORM_SUBMISSION */:
1291
- this.trackFormSubmission(event);
1617
+ this.trackFormSubmission(event, adapterParams);
1292
1618
  break;
1293
1619
  case "product_view" /* PRODUCT_VIEW */:
1294
- this.trackProductView(event);
1620
+ this.trackProductView(event, adapterParams);
1295
1621
  break;
1296
1622
  case "add_to_cart" /* ADD_TO_CART */:
1297
- this.trackAddToCart(event);
1623
+ this.trackAddToCart(event, adapterParams);
1298
1624
  break;
1299
1625
  case "remove_from_cart" /* REMOVE_FROM_CART */:
1300
- this.trackRemoveFromCart(event);
1626
+ this.trackRemoveFromCart(event, adapterParams);
1301
1627
  break;
1302
1628
  case "checkout_started" /* CHECKOUT_STARTED */:
1303
- this.trackCheckoutStarted(event);
1629
+ this.trackCheckoutStarted(
1630
+ event,
1631
+ adapterParams
1632
+ );
1304
1633
  break;
1305
1634
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
1306
- this.trackCheckoutCompleted(event);
1635
+ this.trackCheckoutCompleted(
1636
+ event,
1637
+ adapterParams
1638
+ );
1307
1639
  break;
1308
1640
  case "search" /* SEARCH */:
1309
- this.trackSearch(event);
1641
+ this.trackSearch(event, adapterParams);
1310
1642
  break;
1311
1643
  case "user_signup" /* USER_SIGNUP */:
1312
- this.trackUserSignup(event);
1644
+ this.trackUserSignup(event, adapterParams);
1313
1645
  break;
1314
1646
  case "user_login" /* USER_LOGIN */:
1315
- this.trackUserLogin(event);
1647
+ this.trackUserLogin(event, adapterParams);
1316
1648
  break;
1317
1649
  case "custom" /* CUSTOM */:
1318
- this.trackCustomEvent(event);
1650
+ this.trackCustomEvent(event, adapterParams);
1319
1651
  break;
1320
1652
  default:
1321
- this.sdk.track_event(event.type, this.eventToParams(event));
1653
+ const eventName = this.getEventName(adapterParams, event.type);
1654
+ const baseParams = this.eventToParams(event);
1655
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1656
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1657
+ const enhancedParams = this.mergeEventData(
1658
+ experimentParams,
1659
+ adapterParams
1660
+ );
1661
+ this.sdk.track_event(eventName, enhancedParams);
1322
1662
  break;
1323
1663
  }
1324
1664
  }
1325
1665
  /**
1326
1666
  * Track a page view event
1327
1667
  * @param event The page view event
1668
+ * @param adapterParams Optional adapter-specific parameters
1328
1669
  */
1329
- trackPageView(event) {
1670
+ trackPageView(event, adapterParams) {
1330
1671
  if (!this.sdk?.track_event) {
1331
1672
  this.logger.warn("track_event not available for PageView event");
1332
1673
  return;
1333
1674
  }
1334
- const eventData = {
1675
+ const eventName = this.getEventName(adapterParams, EventNames.PAGE_VIEWED);
1676
+ const baseEventData = {
1335
1677
  page_path: event.path,
1336
1678
  page_title: event.title,
1337
1679
  page_url: window.location.href,
1338
1680
  referrer: event.referrer || document.referrer
1339
1681
  };
1340
- this.sdk.track_event(EventNames.PAGE_VIEWED, eventData);
1341
- this.logger.debug("PageView event tracked", { eventData });
1682
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1683
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1684
+ const enhancedEventData = this.mergeEventData(
1685
+ experimentParams,
1686
+ adapterParams
1687
+ );
1688
+ this.sdk.track_event(eventName, enhancedEventData);
1689
+ this.logger.debug("PageView event tracked", {
1690
+ eventName,
1691
+ eventData: enhancedEventData
1692
+ });
1342
1693
  }
1343
1694
  /**
1344
1695
  * Track a button click event
1345
1696
  * @param event The button click event
1697
+ * @param adapterParams Optional adapter-specific parameters
1346
1698
  */
1347
- trackButtonClick(event) {
1348
- this.sdk?.track_event(EventNames.BUTTON_CLICKED, {
1699
+ trackButtonClick(event, adapterParams) {
1700
+ const eventName = this.getEventName(
1701
+ adapterParams,
1702
+ EventNames.BUTTON_CLICKED
1703
+ );
1704
+ const baseEventData = {
1349
1705
  button_id: event.buttonId,
1350
1706
  button_text: event.buttonText,
1351
1707
  location: event.location
1352
- });
1708
+ };
1709
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1710
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1711
+ const enhancedEventData = this.mergeEventData(
1712
+ experimentParams,
1713
+ adapterParams
1714
+ );
1715
+ this.sdk?.track_event(eventName, enhancedEventData);
1353
1716
  }
1354
1717
  /**
1355
1718
  * Track a form submission event
1356
1719
  * @param event The form submission event
1720
+ * @param adapterParams Optional adapter-specific parameters
1357
1721
  */
1358
- trackFormSubmission(event) {
1359
- this.sdk?.track_event(EventNames.FORM_SUBMITTED, {
1722
+ trackFormSubmission(event, adapterParams) {
1723
+ const eventName = this.getEventName(
1724
+ adapterParams,
1725
+ EventNames.FORM_SUBMITTED
1726
+ );
1727
+ const baseEventData = {
1360
1728
  form_id: event.formId,
1361
1729
  form_name: event.formName,
1362
1730
  success: event.success
1363
- });
1731
+ };
1732
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1733
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1734
+ const enhancedEventData = this.mergeEventData(
1735
+ experimentParams,
1736
+ adapterParams
1737
+ );
1738
+ this.sdk?.track_event(eventName, enhancedEventData);
1364
1739
  }
1365
1740
  /**
1366
1741
  * Track a product view event
1367
1742
  * @param event The product view event
1743
+ * @param adapterParams Optional adapter-specific parameters
1368
1744
  */
1369
- trackProductView(event) {
1370
- this.sdk?.track_event(EventNames.PRODUCT_VIEWED, {
1745
+ trackProductView(event, adapterParams) {
1746
+ const eventName = this.getEventName(
1747
+ adapterParams,
1748
+ EventNames.PRODUCT_VIEWED
1749
+ );
1750
+ const baseEventData = {
1371
1751
  product_id: event.productId,
1372
1752
  product_name: event.productName,
1373
1753
  price: event.price,
1374
1754
  currency: event.currency || DEFAULT_CURRENCY,
1375
1755
  category: event.category
1376
- });
1756
+ };
1757
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1758
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1759
+ const enhancedEventData = this.mergeEventData(
1760
+ experimentParams,
1761
+ adapterParams
1762
+ );
1763
+ this.sdk?.track_event(eventName, enhancedEventData);
1377
1764
  }
1378
1765
  /**
1379
1766
  * Track an add to cart event
1380
1767
  * @param event The add to cart event
1768
+ * @param adapterParams Optional adapter-specific parameters
1381
1769
  */
1382
- trackAddToCart(event) {
1770
+ trackAddToCart(event, adapterParams) {
1383
1771
  const quantity = event.quantity ?? 1;
1384
- this.sdk?.track_event(EventNames.ADDED_TO_CART, {
1772
+ const eventName = this.getEventName(
1773
+ adapterParams,
1774
+ EventNames.ADDED_TO_CART
1775
+ );
1776
+ const baseEventData = {
1385
1777
  product_id: event.productId,
1386
1778
  product_name: event.productName,
1387
1779
  price: event.price,
@@ -1389,14 +1781,26 @@ var MoengageAdapter = class extends BaseAdapter {
1389
1781
  quantity,
1390
1782
  variant: event.variant,
1391
1783
  total_value: event.price * quantity
1392
- });
1784
+ };
1785
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1786
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1787
+ const enhancedEventData = this.mergeEventData(
1788
+ experimentParams,
1789
+ adapterParams
1790
+ );
1791
+ this.sdk?.track_event(eventName, enhancedEventData);
1393
1792
  }
1394
1793
  /**
1395
1794
  * Track a remove from cart event
1396
1795
  * @param event The remove from cart event
1796
+ * @param adapterParams Optional adapter-specific parameters
1397
1797
  */
1398
- trackRemoveFromCart(event) {
1399
- this.sdk?.track_event(EventNames.REMOVED_FROM_CART, {
1798
+ trackRemoveFromCart(event, adapterParams) {
1799
+ const eventName = this.getEventName(
1800
+ adapterParams,
1801
+ EventNames.REMOVED_FROM_CART
1802
+ );
1803
+ const baseEventData = {
1400
1804
  product_id: event.productId,
1401
1805
  product_name: event.productName,
1402
1806
  price: event.price,
@@ -1404,14 +1808,26 @@ var MoengageAdapter = class extends BaseAdapter {
1404
1808
  quantity: event.quantity,
1405
1809
  variant: event.variant,
1406
1810
  total_value: event.price * event.quantity
1407
- });
1811
+ };
1812
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1813
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1814
+ const enhancedEventData = this.mergeEventData(
1815
+ experimentParams,
1816
+ adapterParams
1817
+ );
1818
+ this.sdk?.track_event(eventName, enhancedEventData);
1408
1819
  }
1409
1820
  /**
1410
1821
  * Track a checkout started event
1411
1822
  * @param event The checkout started event
1823
+ * @param adapterParams Optional adapter-specific parameters
1412
1824
  */
1413
- trackCheckoutStarted(event) {
1414
- this.sdk?.track_event(EventNames.CHECKOUT_STARTED, {
1825
+ trackCheckoutStarted(event, adapterParams) {
1826
+ const eventName = this.getEventName(
1827
+ adapterParams,
1828
+ EventNames.CHECKOUT_STARTED
1829
+ );
1830
+ const baseEventData = {
1415
1831
  cart_value: event.cartValue,
1416
1832
  currency: event.currency || DEFAULT_CURRENCY,
1417
1833
  item_count: event.itemCount,
@@ -1422,14 +1838,26 @@ var MoengageAdapter = class extends BaseAdapter {
1422
1838
  quantity: item.quantity,
1423
1839
  variant: item.variant
1424
1840
  }))
1425
- });
1841
+ };
1842
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1843
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1844
+ const enhancedEventData = this.mergeEventData(
1845
+ experimentParams,
1846
+ adapterParams
1847
+ );
1848
+ this.sdk?.track_event(eventName, enhancedEventData);
1426
1849
  }
1427
1850
  /**
1428
1851
  * Track a checkout completed event
1429
1852
  * @param event The checkout completed event
1853
+ * @param adapterParams Optional adapter-specific parameters
1430
1854
  */
1431
- trackCheckoutCompleted(event) {
1432
- this.sdk?.track_event(EventNames.PURCHASE_COMPLETED, {
1855
+ trackCheckoutCompleted(event, adapterParams) {
1856
+ const eventName = this.getEventName(
1857
+ adapterParams,
1858
+ EventNames.PURCHASE_COMPLETED
1859
+ );
1860
+ const baseEventData = {
1433
1861
  order_id: event.orderId,
1434
1862
  cart_value: event.cartValue,
1435
1863
  currency: event.currency || DEFAULT_CURRENCY,
@@ -1441,28 +1869,56 @@ var MoengageAdapter = class extends BaseAdapter {
1441
1869
  quantity: item.quantity,
1442
1870
  variant: item.variant
1443
1871
  }))
1444
- });
1872
+ };
1873
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1874
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1875
+ const enhancedEventData = this.mergeEventData(
1876
+ experimentParams,
1877
+ adapterParams
1878
+ );
1879
+ this.sdk?.track_event(eventName, enhancedEventData);
1445
1880
  }
1446
1881
  /**
1447
1882
  * Track a search event
1448
1883
  * @param event The search event
1884
+ * @param adapterParams Optional adapter-specific parameters
1449
1885
  */
1450
- trackSearch(event) {
1451
- this.sdk?.track_event(EventNames.SEARCH, {
1886
+ trackSearch(event, adapterParams) {
1887
+ const eventName = this.getEventName(adapterParams, EventNames.SEARCH);
1888
+ const baseEventData = {
1452
1889
  search_term: event.searchTerm,
1453
1890
  results_count: event.resultsCount
1454
- });
1891
+ };
1892
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1893
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1894
+ const enhancedEventData = this.mergeEventData(
1895
+ experimentParams,
1896
+ adapterParams
1897
+ );
1898
+ this.sdk?.track_event(eventName, enhancedEventData);
1455
1899
  }
1456
1900
  /**
1457
1901
  * Track a user signup event
1458
1902
  * @param event The user signup event
1903
+ * @param adapterParams Optional adapter-specific parameters
1459
1904
  */
1460
- trackUserSignup(event) {
1461
- this.sdk?.track_event(EventNames.USER_SIGNED_UP, {
1905
+ trackUserSignup(event, adapterParams) {
1906
+ const eventName = this.getEventName(
1907
+ adapterParams,
1908
+ EventNames.USER_SIGNED_UP
1909
+ );
1910
+ const baseEventData = {
1462
1911
  user_id: event.userId,
1463
1912
  method: event.method,
1464
1913
  success: event.success
1465
- });
1914
+ };
1915
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1916
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1917
+ const enhancedEventData = this.mergeEventData(
1918
+ experimentParams,
1919
+ adapterParams
1920
+ );
1921
+ this.sdk?.track_event(eventName, enhancedEventData);
1466
1922
  if (event.userId && this.getConfig("enableUserIdentification", true)) {
1467
1923
  this.sdk?.add_unique_user_id(event.userId);
1468
1924
  }
@@ -1470,13 +1926,25 @@ var MoengageAdapter = class extends BaseAdapter {
1470
1926
  /**
1471
1927
  * Track a user login event
1472
1928
  * @param event The user login event
1929
+ * @param adapterParams Optional adapter-specific parameters
1473
1930
  */
1474
- trackUserLogin(event) {
1475
- this.sdk?.track_event(EventNames.USER_LOGGED_IN, {
1931
+ trackUserLogin(event, adapterParams) {
1932
+ const eventName = this.getEventName(
1933
+ adapterParams,
1934
+ EventNames.USER_LOGGED_IN
1935
+ );
1936
+ const baseEventData = {
1476
1937
  user_id: event.userId,
1477
1938
  method: event.method,
1478
1939
  success: event.success
1479
- });
1940
+ };
1941
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1942
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1943
+ const enhancedEventData = this.mergeEventData(
1944
+ experimentParams,
1945
+ adapterParams
1946
+ );
1947
+ this.sdk?.track_event(eventName, enhancedEventData);
1480
1948
  if (event.userId && this.getConfig("enableUserIdentification", true)) {
1481
1949
  this.sdk?.add_unique_user_id(event.userId);
1482
1950
  }
@@ -1484,9 +1952,18 @@ var MoengageAdapter = class extends BaseAdapter {
1484
1952
  /**
1485
1953
  * Track a custom event
1486
1954
  * @param event The custom event
1487
- */
1488
- trackCustomEvent(event) {
1489
- this.sdk?.track_event(event.name, event.properties);
1955
+ * @param adapterParams Optional adapter-specific parameters
1956
+ */
1957
+ trackCustomEvent(event, adapterParams) {
1958
+ const eventName = this.getEventName(adapterParams, event.name);
1959
+ const baseEventData = event.properties || {};
1960
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1961
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1962
+ const enhancedEventData = this.mergeEventData(
1963
+ experimentParams,
1964
+ adapterParams
1965
+ );
1966
+ this.sdk?.track_event(eventName, enhancedEventData);
1490
1967
  }
1491
1968
  /**
1492
1969
  * Convert an event to MoenGage parameters
@@ -1573,8 +2050,9 @@ var PostHogAdapter = class extends BaseAdapter {
1573
2050
  /**
1574
2051
  * Track an event with PostHog
1575
2052
  * @param event The event to track
2053
+ * @param adapterParams Optional adapter-specific parameters
1576
2054
  */
1577
- async trackEvent(event) {
2055
+ async trackEvent(event, adapterParams) {
1578
2056
  if (!this.initialized || typeof window === "undefined" || !window.posthog) {
1579
2057
  this.logger.warn(
1580
2058
  "Cannot track event, adapter not initialized or posthog not available",
@@ -1590,74 +2068,84 @@ var PostHogAdapter = class extends BaseAdapter {
1590
2068
  this.logger.debug("Tracking event", { eventType: event.type });
1591
2069
  switch (event.type) {
1592
2070
  case "page_view" /* PAGE_VIEW */:
1593
- this.trackPageView(event);
2071
+ this.trackPageView(event, adapterParams);
1594
2072
  break;
1595
2073
  case "product_view" /* PRODUCT_VIEW */:
1596
- this.trackProductView(event);
2074
+ this.trackProductView(event, adapterParams);
1597
2075
  break;
1598
2076
  case "add_to_cart" /* ADD_TO_CART */:
1599
- this.trackAddToCart(event);
2077
+ this.trackAddToCart(event, adapterParams);
1600
2078
  break;
1601
2079
  case "checkout_started" /* CHECKOUT_STARTED */:
1602
- this.trackCheckoutStarted(event);
2080
+ this.trackCheckoutStarted(event, adapterParams);
1603
2081
  break;
1604
2082
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
1605
- this.trackCheckoutCompleted(event);
2083
+ this.trackCheckoutCompleted(event, adapterParams);
1606
2084
  break;
1607
2085
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
1608
- this.trackAddPaymentInfo(event);
2086
+ this.trackAddPaymentInfo(event, adapterParams);
1609
2087
  break;
1610
2088
  case "search" /* SEARCH */:
1611
- this.trackSearch(event);
2089
+ this.trackSearch(event, adapterParams);
1612
2090
  break;
1613
2091
  default:
1614
- const params = this.eventToParams(event);
1615
- window.posthog?.capture(
1616
- event.type,
1617
- this.enhanceWithAffiliateParams(params)
2092
+ const eventName = this.getEventName(adapterParams, event.type);
2093
+ const baseParams = this.eventToParams(event);
2094
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2095
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2096
+ const enhancedParams = this.mergeEventData(
2097
+ experimentParams,
2098
+ adapterParams
1618
2099
  );
2100
+ window.posthog?.capture(eventName, enhancedParams);
1619
2101
  break;
1620
2102
  }
1621
2103
  }
1622
2104
  /**
1623
2105
  * Track a page view event
1624
2106
  * @param event The page view event
2107
+ * @param adapterParams Optional adapter-specific parameters
1625
2108
  */
1626
- trackPageView(event) {
1627
- const params = {
2109
+ trackPageView(event, adapterParams) {
2110
+ const eventName = this.getEventName(adapterParams, "$pageview");
2111
+ const baseParams = {
1628
2112
  path: event.path,
1629
2113
  title: event.title,
1630
2114
  referrer: event.referrer
1631
2115
  };
1632
- window.posthog?.capture(
1633
- "$pageview",
1634
- this.enhanceWithAffiliateParams(params)
1635
- );
2116
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2117
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2118
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2119
+ window.posthog?.capture(eventName, enhancedParams);
1636
2120
  }
1637
2121
  /**
1638
2122
  * Track a product view event
1639
2123
  * @param event The product view event
2124
+ * @param adapterParams Optional adapter-specific parameters
1640
2125
  */
1641
- trackProductView(event) {
1642
- const params = {
2126
+ trackProductView(event, adapterParams) {
2127
+ const eventName = this.getEventName(adapterParams, "product_viewed");
2128
+ const baseParams = {
1643
2129
  product_id: event.productId,
1644
2130
  product_name: event.productName,
1645
2131
  category: event.category,
1646
2132
  price: event.price,
1647
2133
  currency: event.currency || "INR"
1648
2134
  };
1649
- window.posthog?.capture(
1650
- "product_viewed",
1651
- this.enhanceWithAffiliateParams(params)
1652
- );
2135
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2136
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2137
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2138
+ window.posthog?.capture(eventName, enhancedParams);
1653
2139
  }
1654
2140
  /**
1655
2141
  * Track an add to cart event
1656
2142
  * @param event The add to cart event
2143
+ * @param adapterParams Optional adapter-specific parameters
1657
2144
  */
1658
- trackAddToCart(event) {
2145
+ trackAddToCart(event, adapterParams) {
1659
2146
  this.logger.debug("Handling ADD_TO_CART event", { event });
1660
- const params = {
2147
+ const eventName = this.getEventName(adapterParams, "add_to_cart");
2148
+ const baseParams = {
1661
2149
  product_id: event.productId,
1662
2150
  product_name: event.productName,
1663
2151
  price: event.price,
@@ -1665,23 +2153,28 @@ var PostHogAdapter = class extends BaseAdapter {
1665
2153
  quantity: event.quantity,
1666
2154
  variant: event.variant
1667
2155
  };
1668
- this.logger.debug("Sending to PostHog with params", { params });
2156
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2157
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2158
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2159
+ this.logger.debug("Sending to PostHog with params", {
2160
+ eventName,
2161
+ params: enhancedParams
2162
+ });
1669
2163
  if (!window.posthog) {
1670
2164
  this.logger.error("window.posthog is not available");
1671
2165
  return;
1672
2166
  }
1673
- window.posthog.capture(
1674
- "add_to_cart",
1675
- this.enhanceWithAffiliateParams(params)
1676
- );
2167
+ window.posthog.capture(eventName, enhancedParams);
1677
2168
  this.logger.debug("Event sent to PostHog successfully");
1678
2169
  }
1679
2170
  /**
1680
2171
  * Track a checkout started event
1681
2172
  * @param event The checkout started event
2173
+ * @param adapterParams Optional adapter-specific parameters
1682
2174
  */
1683
- trackCheckoutStarted(event) {
1684
- const params = {
2175
+ trackCheckoutStarted(event, adapterParams) {
2176
+ const eventName = this.getEventName(adapterParams, "checkout_started");
2177
+ const baseParams = {
1685
2178
  cart_value: event.cartValue,
1686
2179
  currency: event.currency || "INR",
1687
2180
  item_count: event.itemCount,
@@ -1693,17 +2186,19 @@ var PostHogAdapter = class extends BaseAdapter {
1693
2186
  variant: item.variant
1694
2187
  }))
1695
2188
  };
1696
- window.posthog?.capture(
1697
- "checkout_started",
1698
- this.enhanceWithAffiliateParams(params)
1699
- );
2189
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2190
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2191
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2192
+ window.posthog?.capture(eventName, enhancedParams);
1700
2193
  }
1701
2194
  /**
1702
2195
  * Track a checkout completed event
1703
2196
  * @param event The checkout completed event
2197
+ * @param adapterParams Optional adapter-specific parameters
1704
2198
  */
1705
- trackCheckoutCompleted(event) {
1706
- const params = {
2199
+ trackCheckoutCompleted(event, adapterParams) {
2200
+ const eventName = this.getEventName(adapterParams, "purchase");
2201
+ const baseParams = {
1707
2202
  order_id: event.orderId,
1708
2203
  cart_value: event.cartValue,
1709
2204
  currency: event.currency || "INR",
@@ -1716,29 +2211,36 @@ var PostHogAdapter = class extends BaseAdapter {
1716
2211
  variant: item.variant
1717
2212
  }))
1718
2213
  };
1719
- window.posthog?.capture(
1720
- "purchase",
1721
- this.enhanceWithAffiliateParams(params)
1722
- );
2214
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2215
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2216
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2217
+ window.posthog?.capture(eventName, enhancedParams);
1723
2218
  }
1724
2219
  /**
1725
2220
  * Track a search event
1726
2221
  * @param event The search event
2222
+ * @param adapterParams Optional adapter-specific parameters
1727
2223
  */
1728
- trackSearch(event) {
1729
- const params = {
2224
+ trackSearch(event, adapterParams) {
2225
+ const eventName = this.getEventName(adapterParams, "search");
2226
+ const baseParams = {
1730
2227
  search_term: event.searchTerm,
1731
2228
  results_count: event.resultsCount,
1732
2229
  content_ids: event.content_ids
1733
2230
  };
1734
- window.posthog?.capture("search", this.enhanceWithAffiliateParams(params));
2231
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2232
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2233
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2234
+ window.posthog?.capture(eventName, enhancedParams);
1735
2235
  }
1736
2236
  /**
1737
2237
  * Track an add payment info event
1738
2238
  * @param event The add payment info event
2239
+ * @param adapterParams Optional adapter-specific parameters
1739
2240
  */
1740
- trackAddPaymentInfo(event) {
1741
- const params = {
2241
+ trackAddPaymentInfo(event, adapterParams) {
2242
+ const eventName = this.getEventName(adapterParams, "add_payment_info");
2243
+ const baseParams = {
1742
2244
  cart_value: event.cartValue,
1743
2245
  currency: event.currency || "INR",
1744
2246
  payment_type: event.paymentType,
@@ -1751,10 +2253,10 @@ var PostHogAdapter = class extends BaseAdapter {
1751
2253
  variant: item.variant
1752
2254
  }))
1753
2255
  };
1754
- window.posthog?.capture(
1755
- "add_payment_info",
1756
- this.enhanceWithAffiliateParams(params)
1757
- );
2256
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2257
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2258
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2259
+ window.posthog?.capture(eventName, enhancedParams);
1758
2260
  }
1759
2261
  /**
1760
2262
  * Convert an event to PostHog parameters
@@ -1873,43 +2375,62 @@ var ShopifyAdapter = class extends BaseAdapter {
1873
2375
  shopId: `gid://shopify/Shop/${this.shopId}`,
1874
2376
  currency: this.currency,
1875
2377
  acceptedLanguage: DEFAULT_LANGUAGE,
1876
- ...this.enhanceWithAffiliateParams({})
2378
+ ...this.enhanceWithExperimentParams(this.enhanceWithAffiliateParams({}))
1877
2379
  };
1878
2380
  }
1879
2381
  /**
1880
2382
  * Track an event using Shopify Analytics
1881
2383
  */
1882
- async trackEvent(event) {
2384
+ async trackEvent(event, adapterParams) {
1883
2385
  if (!this.initialized || typeof window === "undefined") {
1884
2386
  this.logger.warn(
1885
2387
  "Shopify Analytics not initialized or not in browser environment"
1886
2388
  );
1887
2389
  return;
1888
2390
  }
2391
+ const params = this.getAdapterParams(adapterParams);
2392
+ const customEventName = this.getEventName(params, event.type);
1889
2393
  this.logger.debug("Processing Shopify Analytics event", {
1890
2394
  eventType: event.type,
1891
- eventData: event
2395
+ customEventName,
2396
+ eventData: event,
2397
+ adapterParams: params
1892
2398
  });
2399
+ const affiliateParams = this.enhanceWithAffiliateParams(event);
2400
+ const enhancedEvent = this.enhanceWithExperimentParams(affiliateParams);
1893
2401
  try {
1894
2402
  switch (event.type) {
1895
2403
  case "page_view" /* PAGE_VIEW */:
1896
- this.sendPageView(import_hydrogen_react.AnalyticsEventName.PAGE_VIEW);
1897
- this.logger.debug("Sent PAGE_VIEW event to Shopify Analytics");
2404
+ const pageViewPayload = this.mergeEventData(enhancedEvent, params);
2405
+ this.sendPageView(import_hydrogen_react.AnalyticsEventName.PAGE_VIEW, pageViewPayload);
2406
+ this.logger.debug("Sent PAGE_VIEW event to Shopify Analytics", {
2407
+ payload: pageViewPayload
2408
+ });
1898
2409
  break;
1899
2410
  case "view_content" /* VIEW_CONTENT */:
1900
- this.sendPageView(import_hydrogen_react.AnalyticsEventName.PRODUCT_VIEW);
1901
- this.logger.debug("Sent PRODUCT_VIEW event to Shopify Analytics");
2411
+ const viewContentPayload = this.mergeEventData(enhancedEvent, params);
2412
+ this.sendPageView(
2413
+ import_hydrogen_react.AnalyticsEventName.PRODUCT_VIEW,
2414
+ viewContentPayload
2415
+ );
2416
+ this.logger.debug("Sent PRODUCT_VIEW event to Shopify Analytics", {
2417
+ payload: viewContentPayload
2418
+ });
1902
2419
  break;
1903
2420
  case "add_to_cart" /* ADD_TO_CART */:
1904
- this.trackAddToCart(event);
2421
+ const addToCartPayload = this.mergeEventData(enhancedEvent, params);
2422
+ this.trackAddToCart(addToCartPayload);
1905
2423
  break;
1906
2424
  case "checkout_started" /* CHECKOUT_STARTED */:
1907
2425
  case "begin_checkout" /* BEGIN_CHECKOUT */:
1908
- this.sendPageView(import_hydrogen_react.AnalyticsEventName.PAGE_VIEW, {
1909
- pageType: "checkout"
1910
- });
2426
+ const checkoutPayload = this.mergeEventData(
2427
+ { ...enhancedEvent, pageType: "checkout" },
2428
+ params
2429
+ );
2430
+ this.sendPageView(import_hydrogen_react.AnalyticsEventName.PAGE_VIEW, checkoutPayload);
1911
2431
  this.logger.debug(
1912
- "Sent checkout PAGE_VIEW event to Shopify Analytics"
2432
+ "Sent checkout PAGE_VIEW event to Shopify Analytics",
2433
+ { payload: checkoutPayload }
1913
2434
  );
1914
2435
  break;
1915
2436
  default:
@@ -2035,8 +2556,10 @@ var KwikPassAdapter = class extends BaseAdapter {
2035
2556
  }
2036
2557
  /**
2037
2558
  * Track an event using KwikPass
2559
+ * @param event The event to track
2560
+ * @param adapterParams Optional adapter-specific parameters
2038
2561
  */
2039
- async trackEvent(event) {
2562
+ async trackEvent(event, adapterParams) {
2040
2563
  if (!this.initialized || typeof window === "undefined") {
2041
2564
  this.logger.warn(
2042
2565
  "KwikPass adapter not initialized or not in browser environment"
@@ -2049,18 +2572,19 @@ var KwikPassAdapter = class extends BaseAdapter {
2049
2572
  });
2050
2573
  return;
2051
2574
  }
2575
+ const affiliateParams = this.enhanceWithAffiliateParams(event);
2576
+ const enhancedEvent = this.enhanceWithExperimentParams(affiliateParams);
2052
2577
  try {
2053
2578
  this.logger.debug("Processing event", { eventType: event.type });
2054
- const enhancedEvent = this.enhanceWithAffiliateParams(event);
2055
2579
  switch (event.type) {
2056
2580
  case "product_view" /* PRODUCT_VIEW */:
2057
- this.trackProductView(enhancedEvent);
2581
+ this.trackProductView(enhancedEvent, adapterParams);
2058
2582
  break;
2059
2583
  case "collection_view" /* COLLECTION_VIEW */:
2060
- this.trackCollectionView(enhancedEvent);
2584
+ this.trackCollectionView(enhancedEvent, adapterParams);
2061
2585
  break;
2062
2586
  case "page_view" /* PAGE_VIEW */:
2063
- this.trackPageView(enhancedEvent);
2587
+ this.trackPageView(enhancedEvent, adapterParams);
2064
2588
  break;
2065
2589
  default:
2066
2590
  this.logger.debug("Event not supported", { eventType: event.type });
@@ -2075,55 +2599,71 @@ var KwikPassAdapter = class extends BaseAdapter {
2075
2599
  /**
2076
2600
  * Send event to KwikPass platform
2077
2601
  */
2078
- sendKwikPassEvent(type, eventData) {
2079
- this.logger.debug(`Sending ${type}`, { eventData });
2602
+ sendKwikPassEvent(type, eventData, adapterParams) {
2603
+ const customEventType = this.getEventName(adapterParams, type);
2604
+ const enhancedEventData = this.mergeEventData(eventData, adapterParams);
2605
+ this.logger.debug(`Sending ${customEventType}`, {
2606
+ eventData: enhancedEventData
2607
+ });
2080
2608
  if (typeof window !== "undefined") {
2081
2609
  const customEvent = new CustomEvent(`page_view_kp`, {
2082
2610
  detail: {
2083
- type,
2084
- detail: eventData
2611
+ type: customEventType,
2612
+ detail: enhancedEventData
2085
2613
  }
2086
2614
  });
2087
2615
  window.dispatchEvent(customEvent);
2088
- this.logger.debug(`${type} sent successfully`);
2616
+ this.logger.debug(`${customEventType} sent successfully`);
2089
2617
  }
2090
2618
  }
2091
2619
  /**
2092
- * Track product view event
2620
+ * Track collection view event
2093
2621
  */
2094
- trackCollectionView(event) {
2095
- this.sendKwikPassEvent("collection", {
2096
- product_id: event.productId,
2097
- product_name: event.productName,
2098
- price: event.price,
2099
- currency: event.currency,
2100
- category: event.category,
2101
- timestamp: event.timestamp || Date.now()
2102
- });
2622
+ trackCollectionView(event, adapterParams) {
2623
+ this.sendKwikPassEvent(
2624
+ "collection",
2625
+ {
2626
+ product_id: event.productId,
2627
+ product_name: event.productName,
2628
+ price: event.price,
2629
+ currency: event.currency,
2630
+ category: event.category,
2631
+ timestamp: event.timestamp || Date.now()
2632
+ },
2633
+ adapterParams
2634
+ );
2103
2635
  }
2104
2636
  /**
2105
- * Track collection view event
2637
+ * Track product view event
2106
2638
  */
2107
- trackProductView(event) {
2108
- this.sendKwikPassEvent("product", {
2109
- product_id: event.productId,
2110
- product_name: event.productName,
2111
- price: event.price,
2112
- currency: event.currency,
2113
- category: event.category,
2114
- timestamp: event.timestamp || Date.now()
2115
- });
2639
+ trackProductView(event, adapterParams) {
2640
+ this.sendKwikPassEvent(
2641
+ "product",
2642
+ {
2643
+ product_id: event.productId,
2644
+ product_name: event.productName,
2645
+ price: event.price,
2646
+ currency: event.currency,
2647
+ category: event.category,
2648
+ timestamp: event.timestamp || Date.now()
2649
+ },
2650
+ adapterParams
2651
+ );
2116
2652
  }
2117
2653
  /**
2118
2654
  * Track page view event
2119
2655
  */
2120
- trackPageView(event) {
2121
- this.sendKwikPassEvent("other", {
2122
- path: event.path,
2123
- title: event.title,
2124
- referrer: event.referrer,
2125
- timestamp: event.timestamp || Date.now()
2126
- });
2656
+ trackPageView(event, adapterParams) {
2657
+ this.sendKwikPassEvent(
2658
+ "other",
2659
+ {
2660
+ path: event.path,
2661
+ title: event.title,
2662
+ referrer: event.referrer,
2663
+ timestamp: event.timestamp || Date.now()
2664
+ },
2665
+ adapterParams
2666
+ );
2127
2667
  }
2128
2668
  };
2129
2669
 
@@ -2157,8 +2697,10 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
2157
2697
  }
2158
2698
  /**
2159
2699
  * Track an event using GoKwik
2700
+ * @param event The event to track
2701
+ * @param adapterParams Optional adapter-specific parameters
2160
2702
  */
2161
- async trackEvent(event) {
2703
+ async trackEvent(event, adapterParams) {
2162
2704
  if (!this.initialized || typeof window === "undefined") {
2163
2705
  this.logger.warn(
2164
2706
  "GoKwik adapter not initialized or not in browser environment"
@@ -2167,49 +2709,50 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
2167
2709
  }
2168
2710
  try {
2169
2711
  this.logger.debug("Processing event", { eventType: event.type });
2170
- const enhancedEvent = this.enhanceWithAffiliateParams(event);
2712
+ const affiliateEnhanced = this.enhanceWithAffiliateParams(event);
2713
+ const enhancedEvent = this.enhanceWithExperimentParams(affiliateEnhanced);
2171
2714
  switch (event.type) {
2172
2715
  case "started_checkout_gk" /* STARTED_CHECKOUT_GK */:
2173
- this.trackStartedCheckoutGK(enhancedEvent);
2716
+ this.trackStartedCheckoutGK(enhancedEvent, adapterParams);
2174
2717
  break;
2175
2718
  case "mobile_added_gk" /* MOBILE_ADDED_GK */:
2176
- this.trackMobileAddedGK(enhancedEvent);
2719
+ this.trackMobileAddedGK(enhancedEvent, adapterParams);
2177
2720
  break;
2178
2721
  case "address_selected_gk" /* ADDRESS_SELECTED_GK */:
2179
- this.trackAddressSelectedGK(enhancedEvent);
2722
+ this.trackAddressSelectedGK(enhancedEvent, adapterParams);
2180
2723
  break;
2181
2724
  case "address_completed_gk" /* ADDRESS_COMPLETED_GK */:
2182
- this.trackAddressCompletedGK(enhancedEvent);
2725
+ this.trackAddressCompletedGK(enhancedEvent, adapterParams);
2183
2726
  break;
2184
2727
  case "address_added_gk" /* ADDRESS_ADDED_GK */:
2185
- this.trackAddressAddedGK(enhancedEvent);
2728
+ this.trackAddressAddedGK(enhancedEvent, adapterParams);
2186
2729
  break;
2187
2730
  case "pin_code_added_gk" /* PIN_CODE_ADDED_GK */:
2188
- this.trackPinCodeAddedGK(enhancedEvent);
2731
+ this.trackPinCodeAddedGK(enhancedEvent, adapterParams);
2189
2732
  break;
2190
2733
  case "payment_method_selected_gk" /* PAYMENT_METHOD_SELECTED_GK */:
2191
- this.trackPaymentMethodSelectedGK(enhancedEvent);
2734
+ this.trackPaymentMethodSelectedGK(enhancedEvent, adapterParams);
2192
2735
  break;
2193
2736
  case "payment_completed_gk" /* PAYMENT_COMPLETED_GK */:
2194
- this.trackPaymentCompletedGK(enhancedEvent);
2737
+ this.trackPaymentCompletedGK(enhancedEvent, adapterParams);
2195
2738
  break;
2196
2739
  case "order_success" /* ORDER_SUCCESS */:
2197
- this.trackOrderSuccess(enhancedEvent);
2740
+ this.trackOrderSuccess(enhancedEvent, adapterParams);
2198
2741
  break;
2199
2742
  case "order_completed" /* ORDER_COMPLETED */:
2200
- this.trackOrderCompleted(enhancedEvent);
2743
+ this.trackOrderCompleted(enhancedEvent, adapterParams);
2201
2744
  break;
2202
2745
  case "cart_viewed" /* CART_VIEWED */:
2203
- this.trackCartViewed(enhancedEvent);
2746
+ this.trackCartViewed(enhancedEvent, adapterParams);
2204
2747
  break;
2205
2748
  case "checkout_started" /* CHECKOUT_STARTED */:
2206
- this.trackCheckoutStarted(enhancedEvent);
2749
+ this.trackCheckoutStarted(enhancedEvent, adapterParams);
2207
2750
  break;
2208
2751
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
2209
- this.trackCheckoutCompleted(enhancedEvent);
2752
+ this.trackCheckoutCompleted(enhancedEvent, adapterParams);
2210
2753
  break;
2211
2754
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
2212
- this.trackAddPaymentInfo(enhancedEvent);
2755
+ this.trackAddPaymentInfo(enhancedEvent, adapterParams);
2213
2756
  break;
2214
2757
  default:
2215
2758
  this.logger.debug("Event not supported", { eventType: event.type });
@@ -2224,171 +2767,233 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
2224
2767
  /**
2225
2768
  * Send event to GoKwik platform
2226
2769
  */
2227
- sendGoKwikEvent(eventName, eventData) {
2228
- this.logger.debug(`Sending ${eventName}`, { eventData });
2770
+ sendGoKwikEvent(eventName, eventData, adapterParams) {
2771
+ const customEventName = this.getEventName(adapterParams, eventName);
2772
+ const enhancedEventData = this.mergeEventData(eventData, adapterParams);
2773
+ this.logger.debug(`Sending ${customEventName}`, {
2774
+ eventData: enhancedEventData
2775
+ });
2229
2776
  if (typeof window !== "undefined" && window.gokwikSdk) {
2230
2777
  try {
2231
- window.gokwikSdk.track?.(eventName, eventData);
2232
- this.logger.debug(`${eventName} sent via SDK successfully`);
2778
+ window.gokwikSdk.track?.(customEventName, enhancedEventData);
2779
+ this.logger.debug(`${customEventName} sent via SDK successfully`);
2233
2780
  } catch (error) {
2234
2781
  this.logger.error(
2235
- `Error sending GoKwik event ${eventName} via SDK`,
2782
+ `Error sending GoKwik event ${customEventName} via SDK`,
2236
2783
  error
2237
2784
  );
2238
2785
  }
2239
2786
  } else {
2240
2787
  if (typeof window !== "undefined") {
2241
- const customEvent = new CustomEvent(`gokwik_${eventName}`, {
2242
- detail: eventData
2788
+ const customEvent = new CustomEvent(`gokwik_${customEventName}`, {
2789
+ detail: enhancedEventData
2243
2790
  });
2244
2791
  window.dispatchEvent(customEvent);
2245
- this.logger.debug(`${eventName} sent via custom event successfully`);
2792
+ this.logger.debug(
2793
+ `${customEventName} sent via custom event successfully`
2794
+ );
2246
2795
  }
2247
2796
  }
2248
2797
  }
2249
2798
  /**
2250
2799
  * Track started checkout GK event
2251
2800
  */
2252
- trackStartedCheckoutGK(event) {
2253
- this.sendGoKwikEvent("started_checkout", {
2254
- cart_value: event.cartValue,
2255
- currency: event.currency,
2256
- timestamp: event.timestamp || Date.now()
2257
- });
2801
+ trackStartedCheckoutGK(event, adapterParams) {
2802
+ this.sendGoKwikEvent(
2803
+ "started_checkout",
2804
+ {
2805
+ cart_value: event.cartValue,
2806
+ currency: event.currency,
2807
+ timestamp: event.timestamp || Date.now()
2808
+ },
2809
+ adapterParams
2810
+ );
2258
2811
  }
2259
2812
  /**
2260
2813
  * Track mobile added GK event
2261
2814
  */
2262
- trackMobileAddedGK(event) {
2263
- this.sendGoKwikEvent("mobile_added", {
2264
- mobile: event.mobile,
2265
- timestamp: event.timestamp || Date.now()
2266
- });
2815
+ trackMobileAddedGK(event, adapterParams) {
2816
+ this.sendGoKwikEvent(
2817
+ "mobile_added",
2818
+ {
2819
+ mobile: event.mobile,
2820
+ timestamp: event.timestamp || Date.now()
2821
+ },
2822
+ adapterParams
2823
+ );
2267
2824
  }
2268
2825
  /**
2269
2826
  * Track address selected GK event
2270
2827
  */
2271
- trackAddressSelectedGK(event) {
2272
- this.sendGoKwikEvent("address_selected", {
2273
- address_id: event.addressId,
2274
- timestamp: event.timestamp || Date.now()
2275
- });
2828
+ trackAddressSelectedGK(event, adapterParams) {
2829
+ this.sendGoKwikEvent(
2830
+ "address_selected",
2831
+ {
2832
+ address_id: event.addressId,
2833
+ timestamp: event.timestamp || Date.now()
2834
+ },
2835
+ adapterParams
2836
+ );
2276
2837
  }
2277
2838
  /**
2278
2839
  * Track address completed GK event
2279
2840
  */
2280
- trackAddressCompletedGK(event) {
2281
- this.sendGoKwikEvent("address_completed", {
2282
- address_id: event.addressId,
2283
- timestamp: event.timestamp || Date.now()
2284
- });
2841
+ trackAddressCompletedGK(event, adapterParams) {
2842
+ this.sendGoKwikEvent(
2843
+ "address_completed",
2844
+ {
2845
+ address_id: event.addressId,
2846
+ timestamp: event.timestamp || Date.now()
2847
+ },
2848
+ adapterParams
2849
+ );
2285
2850
  }
2286
2851
  /**
2287
2852
  * Track address added GK event
2288
2853
  */
2289
- trackAddressAddedGK(event) {
2290
- this.sendGoKwikEvent("address_added", {
2291
- address_id: event.addressId,
2292
- timestamp: event.timestamp || Date.now()
2293
- });
2854
+ trackAddressAddedGK(event, adapterParams) {
2855
+ this.sendGoKwikEvent(
2856
+ "address_added",
2857
+ {
2858
+ address_id: event.addressId,
2859
+ timestamp: event.timestamp || Date.now()
2860
+ },
2861
+ adapterParams
2862
+ );
2294
2863
  }
2295
2864
  /**
2296
2865
  * Track PIN code added GK event
2297
2866
  */
2298
- trackPinCodeAddedGK(event) {
2299
- this.sendGoKwikEvent("pin_code_added", {
2300
- pin_code: event.pinCode,
2301
- timestamp: event.timestamp || Date.now()
2302
- });
2867
+ trackPinCodeAddedGK(event, adapterParams) {
2868
+ this.sendGoKwikEvent(
2869
+ "pin_code_added",
2870
+ {
2871
+ pin_code: event.pinCode,
2872
+ timestamp: event.timestamp || Date.now()
2873
+ },
2874
+ adapterParams
2875
+ );
2303
2876
  }
2304
2877
  /**
2305
2878
  * Track payment method selected GK event
2306
2879
  */
2307
- trackPaymentMethodSelectedGK(event) {
2308
- this.sendGoKwikEvent("payment_method_selected", {
2309
- payment_method: event.paymentMethod,
2310
- timestamp: event.timestamp || Date.now()
2311
- });
2880
+ trackPaymentMethodSelectedGK(event, adapterParams) {
2881
+ this.sendGoKwikEvent(
2882
+ "payment_method_selected",
2883
+ {
2884
+ payment_method: event.paymentMethod,
2885
+ timestamp: event.timestamp || Date.now()
2886
+ },
2887
+ adapterParams
2888
+ );
2312
2889
  }
2313
2890
  /**
2314
2891
  * Track payment completed GK event
2315
2892
  */
2316
- trackPaymentCompletedGK(event) {
2317
- this.sendGoKwikEvent("payment_completed", {
2318
- amount: event.amount,
2319
- currency: event.currency,
2320
- timestamp: event.timestamp || Date.now()
2321
- });
2893
+ trackPaymentCompletedGK(event, adapterParams) {
2894
+ this.sendGoKwikEvent(
2895
+ "payment_completed",
2896
+ {
2897
+ amount: event.amount,
2898
+ currency: event.currency,
2899
+ timestamp: event.timestamp || Date.now()
2900
+ },
2901
+ adapterParams
2902
+ );
2322
2903
  }
2323
2904
  /**
2324
2905
  * Track order success event
2325
2906
  */
2326
- trackOrderSuccess(event) {
2327
- this.sendGoKwikEvent("order_success", {
2328
- order_id: event.orderId,
2329
- amount: event.amount,
2330
- currency: event.currency,
2331
- timestamp: event.timestamp || Date.now()
2332
- });
2907
+ trackOrderSuccess(event, adapterParams) {
2908
+ this.sendGoKwikEvent(
2909
+ "order_success",
2910
+ {
2911
+ order_id: event.orderId,
2912
+ amount: event.amount,
2913
+ currency: event.currency,
2914
+ timestamp: event.timestamp || Date.now()
2915
+ },
2916
+ adapterParams
2917
+ );
2333
2918
  }
2334
2919
  /**
2335
2920
  * Track order completed event
2336
2921
  */
2337
- trackOrderCompleted(event) {
2338
- this.sendGoKwikEvent("order_completed", {
2339
- order_id: event.orderId,
2340
- amount: event.amount,
2341
- currency: event.currency,
2342
- timestamp: event.timestamp || Date.now()
2343
- });
2922
+ trackOrderCompleted(event, adapterParams) {
2923
+ this.sendGoKwikEvent(
2924
+ "order_completed",
2925
+ {
2926
+ order_id: event.orderId,
2927
+ amount: event.amount,
2928
+ currency: event.currency,
2929
+ timestamp: event.timestamp || Date.now()
2930
+ },
2931
+ adapterParams
2932
+ );
2344
2933
  }
2345
2934
  /**
2346
2935
  * Track cart viewed event
2347
2936
  */
2348
- trackCartViewed(event) {
2349
- this.sendGoKwikEvent("cart_viewed", {
2350
- cart_id: event.cartId,
2351
- products: event.products,
2352
- timestamp: event.timestamp || Date.now()
2353
- });
2937
+ trackCartViewed(event, adapterParams) {
2938
+ this.sendGoKwikEvent(
2939
+ "cart_viewed",
2940
+ {
2941
+ cart_id: event.cartId,
2942
+ products: event.products,
2943
+ timestamp: event.timestamp || Date.now()
2944
+ },
2945
+ adapterParams
2946
+ );
2354
2947
  }
2355
2948
  /**
2356
2949
  * Track checkout started event
2357
2950
  */
2358
- trackCheckoutStarted(event) {
2359
- this.sendGoKwikEvent("checkout_started", {
2360
- cart_value: event.cartValue,
2361
- currency: event.currency,
2362
- item_count: event.itemCount,
2363
- items: event.items,
2364
- timestamp: event.timestamp || Date.now()
2365
- });
2951
+ trackCheckoutStarted(event, adapterParams) {
2952
+ this.sendGoKwikEvent(
2953
+ "checkout_started",
2954
+ {
2955
+ cart_value: event.cartValue,
2956
+ currency: event.currency,
2957
+ item_count: event.itemCount,
2958
+ items: event.items,
2959
+ timestamp: event.timestamp || Date.now()
2960
+ },
2961
+ adapterParams
2962
+ );
2366
2963
  }
2367
2964
  /**
2368
2965
  * Track checkout completed event
2369
2966
  */
2370
- trackCheckoutCompleted(event) {
2371
- this.sendGoKwikEvent("checkout_completed", {
2372
- order_id: event.orderId,
2373
- cart_value: event.cartValue,
2374
- currency: event.currency,
2375
- item_count: event.itemCount,
2376
- items: event.items,
2377
- timestamp: event.timestamp || Date.now()
2378
- });
2967
+ trackCheckoutCompleted(event, adapterParams) {
2968
+ this.sendGoKwikEvent(
2969
+ "checkout_completed",
2970
+ {
2971
+ order_id: event.orderId,
2972
+ cart_value: event.cartValue,
2973
+ currency: event.currency,
2974
+ item_count: event.itemCount,
2975
+ items: event.items,
2976
+ timestamp: event.timestamp || Date.now()
2977
+ },
2978
+ adapterParams
2979
+ );
2379
2980
  }
2380
2981
  /**
2381
2982
  * Track add payment info event
2382
2983
  */
2383
- trackAddPaymentInfo(event) {
2384
- this.sendGoKwikEvent("add_payment_info", {
2385
- cart_value: event.cartValue,
2386
- currency: event.currency,
2387
- item_count: event.itemCount,
2388
- payment_type: event.paymentType,
2389
- items: event.items,
2390
- timestamp: event.timestamp || Date.now()
2391
- });
2984
+ trackAddPaymentInfo(event, adapterParams) {
2985
+ this.sendGoKwikEvent(
2986
+ "add_payment_info",
2987
+ {
2988
+ cart_value: event.cartValue,
2989
+ currency: event.currency,
2990
+ item_count: event.itemCount,
2991
+ payment_type: event.paymentType,
2992
+ items: event.items,
2993
+ timestamp: event.timestamp || Date.now()
2994
+ },
2995
+ adapterParams
2996
+ );
2392
2997
  }
2393
2998
  };
2394
2999
  // Annotate the CommonJS export names for ESM import in node: