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
@@ -1,7 +1,21 @@
1
1
  "use client";
2
+ import {
3
+ getExperimentParams
4
+ } from "./chunk-NGPUKV7E.mjs";
5
+ import {
6
+ generateEventId,
7
+ getBrowserInfo
8
+ } from "./chunk-4RDPDMGW.mjs";
2
9
 
3
10
  // src/logger/index.ts
4
- import pino from "pino";
11
+ var LOG_LEVELS = {
12
+ trace: 10,
13
+ debug: 20,
14
+ info: 30,
15
+ warn: 40,
16
+ error: 50,
17
+ fatal: 60
18
+ };
5
19
  var NoOpLogger = class _NoOpLogger {
6
20
  trace() {
7
21
  }
@@ -19,92 +33,109 @@ var NoOpLogger = class _NoOpLogger {
19
33
  return new _NoOpLogger();
20
34
  }
21
35
  };
22
- var PinoLogger = class _PinoLogger {
23
- constructor(logger2) {
24
- this.logger = logger2;
36
+ var UniversalLogger = class _UniversalLogger {
37
+ constructor(config, bindings = {}) {
38
+ this.config = config;
39
+ this.bindings = bindings;
40
+ }
41
+ shouldLog(level) {
42
+ return LOG_LEVELS[level] >= LOG_LEVELS[this.config.level];
43
+ }
44
+ formatMessage(level, message, args, error) {
45
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
46
+ const name = this.config.name;
47
+ let logMessage = this.config.prettyPrint ? `[${timestamp}] ${level.toUpperCase()} [${name}]: ${message}` : JSON.stringify({
48
+ timestamp,
49
+ level,
50
+ name,
51
+ message,
52
+ ...this.bindings,
53
+ ...args.length > 0 && { args },
54
+ ...error && {
55
+ error: { message: error.message, stack: error.stack }
56
+ }
57
+ });
58
+ if (this.config.prettyPrint && args.length > 0) {
59
+ logMessage += ` ${args.map(
60
+ (arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
61
+ ).join(" ")}`;
62
+ }
63
+ if (this.config.prettyPrint && error) {
64
+ logMessage += ` Error: ${error.message}`;
65
+ if (error.stack) {
66
+ logMessage += `
67
+ ${error.stack}`;
68
+ }
69
+ }
70
+ return this.redactSensitiveData(logMessage);
71
+ }
72
+ redactSensitiveData(message) {
73
+ let redactedMessage = message;
74
+ for (const field of this.config.redact) {
75
+ const regex = new RegExp(`"${field}"\\s*:\\s*"[^"]*"`, "gi");
76
+ redactedMessage = redactedMessage.replace(
77
+ regex,
78
+ `"${field}":"[REDACTED]"`
79
+ );
80
+ }
81
+ return redactedMessage;
82
+ }
83
+ log(level, message, args, error) {
84
+ if (!this.shouldLog(level)) return;
85
+ const formattedMessage = this.formatMessage(level, message, args, error);
86
+ switch (level) {
87
+ case "trace":
88
+ console.trace(formattedMessage);
89
+ break;
90
+ case "debug":
91
+ console.debug(formattedMessage);
92
+ break;
93
+ case "info":
94
+ console.info(formattedMessage);
95
+ break;
96
+ case "warn":
97
+ console.warn(formattedMessage);
98
+ break;
99
+ case "error":
100
+ case "fatal":
101
+ console.error(formattedMessage);
102
+ break;
103
+ }
25
104
  }
26
105
  trace(message, ...args) {
27
- this.logger.trace({ args }, message);
106
+ this.log("trace", message, args);
28
107
  }
29
108
  debug(message, ...args) {
30
- this.logger.debug({ args }, message);
109
+ this.log("debug", message, args);
31
110
  }
32
111
  info(message, ...args) {
33
- this.logger.info({ args }, message);
112
+ this.log("info", message, args);
34
113
  }
35
114
  warn(message, ...args) {
36
- this.logger.warn({ args }, message);
115
+ this.log("warn", message, args);
37
116
  }
38
117
  error(message, error, ...args) {
39
- this.logger.error({ error, args }, message);
118
+ this.log("error", message, args, error);
40
119
  }
41
120
  fatal(message, error, ...args) {
42
- this.logger.fatal({ error, args }, message);
121
+ this.log("fatal", message, args, error);
43
122
  }
44
123
  child(bindings) {
45
- return new _PinoLogger(this.logger.child(bindings));
124
+ return new _UniversalLogger(this.config, { ...this.bindings, ...bindings });
46
125
  }
47
126
  };
48
127
  function createLogger(config = {}) {
49
- const {
50
- level = "info",
51
- enabled = true,
52
- name = "@shopkit/analytics",
53
- prettyPrint = false,
54
- redact = []
55
- } = config;
56
- if (!enabled) {
57
- return new NoOpLogger();
58
- }
59
- const pinoConfig = {
60
- name,
61
- level,
62
- redact,
63
- browser: {
64
- asObject: true,
65
- serialize: true,
66
- write: {
67
- trace: (o) => console.trace(formatBrowserLog(o)),
68
- debug: (o) => console.debug(formatBrowserLog(o)),
69
- info: (o) => console.info(formatBrowserLog(o)),
70
- warn: (o) => console.warn(formatBrowserLog(o)),
71
- error: (o) => console.error(formatBrowserLog(o)),
72
- fatal: (o) => console.error(formatBrowserLog(o))
73
- }
74
- }
128
+ const fullConfig = {
129
+ level: config.level || "info",
130
+ enabled: config.enabled !== false,
131
+ name: config.name || "@shopkit/analytics",
132
+ prettyPrint: config.prettyPrint || false,
133
+ redact: config.redact || []
75
134
  };
76
- if (prettyPrint && typeof window === "undefined") {
77
- pinoConfig.transport = {
78
- target: "pino-pretty",
79
- options: {
80
- colorize: true,
81
- translateTime: "HH:MM:ss Z",
82
- ignore: "pid,hostname"
83
- }
84
- };
85
- }
86
- const pinoLogger = pino(pinoConfig);
87
- return new PinoLogger(pinoLogger);
88
- }
89
- function formatBrowserLog(logObj) {
90
- const { level, time, msg, name, args, error, ...rest } = logObj;
91
- let message = `[${name}] ${msg}`;
92
- if (args && args.length > 0) {
93
- message += ` ${args.map(
94
- (arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
95
- ).join(" ")}`;
96
- }
97
- if (error) {
98
- message += ` Error: ${error.message}`;
99
- if (error.stack) {
100
- message += `
101
- ${error.stack}`;
102
- }
103
- }
104
- if (Object.keys(rest).length > 0) {
105
- message += ` ${JSON.stringify(rest)}`;
135
+ if (!fullConfig.enabled) {
136
+ return new NoOpLogger();
106
137
  }
107
- return message;
138
+ return new UniversalLogger(fullConfig);
108
139
  }
109
140
  var logger = createLogger({
110
141
  enabled: true,
@@ -153,6 +184,38 @@ var BaseAdapter = class {
153
184
  isEnabled() {
154
185
  return this.initialized;
155
186
  }
187
+ /**
188
+ * Extract adapter-specific parameters for this adapter
189
+ * @param params The adapter parameters object
190
+ * @returns Adapter-specific parameters or empty object
191
+ */
192
+ getAdapterParams(params) {
193
+ return params?.[this.name] || {};
194
+ }
195
+ /**
196
+ * Get custom event name or fall back to default
197
+ * @param params The adapter parameters object
198
+ * @param defaultName The default event name to use
199
+ * @returns Custom event name or default
200
+ */
201
+ getEventName(params, defaultName) {
202
+ const adapterParams = this.getAdapterParams(params);
203
+ return adapterParams.event_name || defaultName;
204
+ }
205
+ /**
206
+ * Merge standard event data with adapter-specific parameters
207
+ * @param params The adapter parameters object
208
+ * @param standardData The standard event data
209
+ * @returns Merged data with adapter-specific overrides
210
+ */
211
+ mergeEventData(standardData, params) {
212
+ const adapterParams = this.getAdapterParams(params);
213
+ const { event_name, ...customParams } = adapterParams;
214
+ return {
215
+ ...standardData,
216
+ ...customParams
217
+ };
218
+ }
156
219
  /**
157
220
  * Get a configuration value
158
221
  * @param key The configuration key
@@ -169,6 +232,21 @@ var BaseAdapter = class {
169
232
  getAffiliateParams() {
170
233
  return null;
171
234
  }
235
+ /**
236
+ * Get experiment parameters from cookies
237
+ * @returns Experiment parameters
238
+ */
239
+ getExperimentParams() {
240
+ try {
241
+ return getExperimentParams();
242
+ } catch (error) {
243
+ return {
244
+ _prima_pr_ab_home: null,
245
+ _prima_pr_ab_collection: null,
246
+ _prima_pr_ab_product: null
247
+ };
248
+ }
249
+ }
172
250
  /**
173
251
  * Enhance event parameters with affiliate data
174
252
  * @param params The original parameters
@@ -183,6 +261,18 @@ var BaseAdapter = class {
183
261
  ...affiliateParams
184
262
  };
185
263
  }
264
+ /**
265
+ * Enhance event parameters with experiment data
266
+ * @param params The original parameters
267
+ * @returns Parameters enhanced with experiment data
268
+ */
269
+ enhanceWithExperimentParams(params) {
270
+ const experimentParams = this.getExperimentParams();
271
+ return {
272
+ ...params,
273
+ experiment: experimentParams
274
+ };
275
+ }
186
276
  };
187
277
 
188
278
  // src/adapters/pixel-adapter.ts
@@ -210,18 +300,34 @@ var PixelAdapter = class extends BaseAdapter {
210
300
  );
211
301
  return;
212
302
  }
213
- const pixelId = this.getConfig("pixelId");
214
303
  this.logger.info("Successfully initialized", { pixelId: "***" });
215
304
  this.initialized = true;
216
305
  }
217
306
  /**
218
307
  * Track an event with Facebook Pixel
219
308
  * @param event The event to track
309
+ * @param adapterParams Optional adapter-specific parameters
220
310
  */
221
- async trackEvent(event) {
311
+ async trackEvent(event, adapterParams) {
312
+ if (!event.eventId) {
313
+ event.eventId = generateEventId(event.type);
314
+ }
315
+ this.logger.debug("Tracking event", {
316
+ eventType: event.type,
317
+ eventId: event.eventId
318
+ });
319
+ await this.trackClientSide(event, adapterParams);
320
+ if (this.getConfig("enableCAPI", true)) {
321
+ await this.trackServerSide(event);
322
+ }
323
+ }
324
+ /**
325
+ * Track event on client-side (browser pixel)
326
+ */
327
+ async trackClientSide(event, adapterParams) {
222
328
  if (!this.initialized || typeof window === "undefined" || !window.fbq) {
223
329
  this.logger.warn(
224
- "Cannot track event, adapter not initialized or fbq not available",
330
+ "Cannot track client-side event, adapter not initialized or fbq not available",
225
331
  {
226
332
  eventType: event.type,
227
333
  initialized: this.initialized,
@@ -231,55 +337,96 @@ var PixelAdapter = class extends BaseAdapter {
231
337
  );
232
338
  return;
233
339
  }
234
- this.logger.debug("Tracking event", { eventType: event.type });
235
340
  switch (event.type) {
236
341
  case "page_view" /* PAGE_VIEW */:
237
- this.trackPageView(event);
342
+ this.trackPageView(event, adapterParams);
238
343
  break;
239
344
  case "view_content" /* VIEW_CONTENT */:
240
- this.trackViewContent(event);
345
+ this.trackViewContent(event, adapterParams);
241
346
  break;
242
347
  case "product_view" /* PRODUCT_VIEW */:
243
- this.trackProductView(event);
348
+ this.trackProductView(event, adapterParams);
244
349
  break;
245
350
  case "add_to_cart" /* ADD_TO_CART */:
246
- this.trackAddToCart(event);
351
+ this.trackAddToCart(event, adapterParams);
247
352
  break;
248
353
  case "checkout_started" /* CHECKOUT_STARTED */:
249
- this.trackCheckoutStarted(event);
354
+ this.trackCheckoutStarted(event, adapterParams);
250
355
  break;
251
356
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
252
- this.trackCheckoutCompleted(event);
357
+ this.trackCheckoutCompleted(event, adapterParams);
253
358
  break;
254
359
  case "purchase" /* PURCHASE */:
255
- this.trackPurchase(event);
360
+ this.trackPurchase(event, adapterParams);
256
361
  break;
257
362
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
258
- this.trackAddPaymentInfo(event);
363
+ this.trackAddPaymentInfo(event, adapterParams);
259
364
  break;
260
365
  case "search" /* SEARCH */:
261
- this.trackSearch(event);
366
+ this.trackSearch(event, adapterParams);
262
367
  break;
263
368
  default:
264
369
  this.logger.debug("Unhandled event type", { eventType: event.type });
265
370
  break;
266
371
  }
267
372
  }
373
+ /**
374
+ * Track event on server-side (CAPI) as backup
375
+ */
376
+ async trackServerSide(event) {
377
+ try {
378
+ const browserInfo = getBrowserInfo();
379
+ const payload = {
380
+ events: [event],
381
+ userInfo: browserInfo
382
+ };
383
+ const response = await fetch("/api/events", {
384
+ method: "POST",
385
+ headers: {
386
+ "Content-Type": "application/json"
387
+ },
388
+ body: JSON.stringify(payload)
389
+ });
390
+ if (!response.ok) {
391
+ throw new Error(`Server-side tracking failed: ${response.status}`);
392
+ }
393
+ this.logger.debug(
394
+ `FB Pixel: Server-side backup sent for event ${event.type}`
395
+ );
396
+ } catch (error) {
397
+ this.logger.error(
398
+ `FB Pixel: Server-side backup failed for event ${event.type}: ${error instanceof Error ? error.message : String(error)}`
399
+ );
400
+ }
401
+ }
268
402
  /**
269
403
  * Track a page view event
270
404
  * @param event The page view event
271
405
  */
272
- trackPageView(event) {
273
- const params = this.enhanceWithAffiliateParams({});
274
- window.fbq?.("track", "PageView", params);
275
- this.logger.debug("PageView event tracked", { params });
406
+ trackPageView(event, adapterParams) {
407
+ const eventName = this.getEventName(adapterParams, "PageView");
408
+ const affiliateParams = this.enhanceWithAffiliateParams({});
409
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
410
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
411
+ if (event.eventId) {
412
+ window.fbq?.("track", eventName, enhancedParams, {
413
+ eventID: event.eventId
414
+ });
415
+ } else {
416
+ window.fbq?.("track", eventName, enhancedParams);
417
+ }
418
+ this.logger.debug("PageView event tracked", {
419
+ eventName,
420
+ params: enhancedParams
421
+ });
276
422
  }
277
423
  /**
278
424
  * Track a product view event
279
425
  * @param event The product view event
280
426
  */
281
- trackProductView(event) {
282
- const params = {
427
+ trackProductView(event, adapterParams) {
428
+ const eventName = this.getEventName(adapterParams, "ViewContent");
429
+ const baseParams = {
283
430
  content_type: "product_group",
284
431
  content_ids: [event.productId],
285
432
  content_name: event.productName,
@@ -287,34 +434,56 @@ var PixelAdapter = class extends BaseAdapter {
287
434
  value: event.price,
288
435
  currency: event.currency || "INR"
289
436
  };
290
- window.fbq?.(
291
- "track",
292
- "ViewContent",
293
- this.enhanceWithAffiliateParams(params)
294
- );
437
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
438
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
439
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
440
+ if (event.eventId) {
441
+ window.fbq?.("track", eventName, enhancedParams, {
442
+ eventID: event.eventId
443
+ });
444
+ } else {
445
+ window.fbq?.("track", eventName, enhancedParams);
446
+ }
447
+ this.logger.debug("ProductView event tracked", {
448
+ eventName,
449
+ params: enhancedParams
450
+ });
295
451
  }
296
452
  /**
297
453
  * Track an add to cart event
298
454
  * @param event The add to cart event
299
455
  */
300
- trackAddToCart(event) {
301
- const params = {
456
+ trackAddToCart(event, adapterParams) {
457
+ const eventName = this.getEventName(adapterParams, "AddToCart");
458
+ const baseParams = {
302
459
  content_type: "product_group",
303
460
  content_ids: [event.productId],
304
461
  content_name: event.productName,
305
462
  value: event.price,
306
463
  currency: event.currency || "INR"
307
464
  };
308
- const enhancedParams = this.enhanceWithAffiliateParams(params);
309
- window.fbq?.("track", "AddToCart", enhancedParams);
310
- this.logger.debug("AddToCart event tracked", { params: enhancedParams });
465
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
466
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
467
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
468
+ if (event.eventId) {
469
+ window.fbq?.("track", eventName, enhancedParams, {
470
+ eventID: event.eventId
471
+ });
472
+ } else {
473
+ window.fbq?.("track", eventName, enhancedParams);
474
+ }
475
+ this.logger.debug("AddToCart event tracked", {
476
+ eventName,
477
+ params: enhancedParams
478
+ });
311
479
  }
312
480
  /**
313
481
  * Track a checkout started event
314
482
  * @param event The checkout started event
315
483
  */
316
- trackCheckoutStarted(event) {
317
- const params = {
484
+ trackCheckoutStarted(event, adapterParams) {
485
+ const eventName = this.getEventName(adapterParams, "InitiateCheckout");
486
+ const baseParams = {
318
487
  content_ids: event.items.map((item) => item.productId),
319
488
  content_type: "product_group",
320
489
  value: event.cartValue,
@@ -326,18 +495,28 @@ var PixelAdapter = class extends BaseAdapter {
326
495
  item_price: item.price
327
496
  }))
328
497
  };
329
- window.fbq?.(
330
- "track",
331
- "InitiateCheckout",
332
- this.enhanceWithAffiliateParams(params)
333
- );
498
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
499
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
500
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
501
+ if (event.eventId) {
502
+ window.fbq?.("track", eventName, enhancedParams, {
503
+ eventID: event.eventId
504
+ });
505
+ } else {
506
+ window.fbq?.("track", eventName, enhancedParams);
507
+ }
508
+ this.logger.debug("CheckoutStarted event tracked", {
509
+ eventName,
510
+ params: enhancedParams
511
+ });
334
512
  }
335
513
  /**
336
514
  * Track a checkout completed event
337
515
  * @param event The checkout completed event
338
516
  */
339
- trackCheckoutCompleted(event) {
340
- const params = {
517
+ trackCheckoutCompleted(event, adapterParams) {
518
+ const eventName = this.getEventName(adapterParams, "Purchase");
519
+ const baseParams = {
341
520
  value: event.cartValue,
342
521
  currency: event.currency || "INR",
343
522
  content_type: "product_group",
@@ -349,26 +528,54 @@ var PixelAdapter = class extends BaseAdapter {
349
528
  item_price: item.price
350
529
  }))
351
530
  };
352
- window.fbq?.("track", "Purchase", this.enhanceWithAffiliateParams(params));
531
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
532
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
533
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
534
+ if (event.eventId) {
535
+ window.fbq?.("track", eventName, enhancedParams, {
536
+ eventID: event.eventId
537
+ });
538
+ } else {
539
+ window.fbq?.("track", eventName, enhancedParams);
540
+ }
541
+ this.logger.debug("CheckoutCompleted event tracked", {
542
+ eventName,
543
+ params: enhancedParams
544
+ });
353
545
  }
354
546
  /**
355
547
  * Track a search event
356
548
  * @param event The search event
357
549
  */
358
- trackSearch(event) {
359
- const params = {
550
+ trackSearch(event, adapterParams) {
551
+ const eventName = this.getEventName(adapterParams, "Search");
552
+ const baseParams = {
360
553
  search_string: event.searchTerm,
361
554
  content_category: "product",
362
555
  content_ids: event.content_ids || []
363
556
  };
364
- window.fbq?.("track", "Search", this.enhanceWithAffiliateParams(params));
557
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
558
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
559
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
560
+ if (event.eventId) {
561
+ window.fbq?.("track", eventName, enhancedParams, {
562
+ eventID: event.eventId
563
+ });
564
+ } else {
565
+ window.fbq?.("track", eventName, enhancedParams);
566
+ }
567
+ this.logger.debug("Search event tracked", {
568
+ eventName,
569
+ params: enhancedParams
570
+ });
365
571
  }
366
572
  /**
367
573
  * Track an add payment info event
368
574
  * @param event The add payment info event
369
575
  */
370
- trackAddPaymentInfo(event) {
371
- const params = {
576
+ trackAddPaymentInfo(event, adapterParams) {
577
+ const eventName = this.getEventName(adapterParams, "AddPaymentInfo");
578
+ const baseParams = {
372
579
  value: event.cartValue,
373
580
  currency: event.currency || "INR",
374
581
  content_type: "product_group",
@@ -380,18 +587,28 @@ var PixelAdapter = class extends BaseAdapter {
380
587
  })),
381
588
  payment_type: event.paymentType || ""
382
589
  };
383
- window.fbq?.(
384
- "track",
385
- "AddPaymentInfo",
386
- this.enhanceWithAffiliateParams(params)
387
- );
590
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
591
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
592
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
593
+ if (event.eventId) {
594
+ window.fbq?.("track", eventName, enhancedParams, {
595
+ eventID: event.eventId
596
+ });
597
+ } else {
598
+ window.fbq?.("track", eventName, enhancedParams);
599
+ }
600
+ this.logger.debug("AddPaymentInfo event tracked", {
601
+ eventName,
602
+ params: enhancedParams
603
+ });
388
604
  }
389
605
  /**
390
606
  * Track a view content event
391
607
  * @param event The view content event
392
608
  */
393
- trackViewContent(event) {
394
- const params = {
609
+ trackViewContent(event, adapterParams) {
610
+ const eventName = this.getEventName(adapterParams, "ViewContent");
611
+ const baseParams = {
395
612
  content_type: event.content_type || "product",
396
613
  content_ids: event.content_ids || [],
397
614
  content_name: event.content_name || "",
@@ -399,18 +616,28 @@ var PixelAdapter = class extends BaseAdapter {
399
616
  value: event.value || 0,
400
617
  currency: event.currency || "INR"
401
618
  };
402
- window.fbq?.(
403
- "track",
404
- "ViewContent",
405
- this.enhanceWithAffiliateParams(params)
406
- );
619
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
620
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
621
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
622
+ if (event.eventId) {
623
+ window.fbq?.("track", eventName, enhancedParams, {
624
+ eventID: event.eventId
625
+ });
626
+ } else {
627
+ window.fbq?.("track", eventName, enhancedParams);
628
+ }
629
+ this.logger.debug("ViewContent event tracked", {
630
+ eventName,
631
+ params: enhancedParams
632
+ });
407
633
  }
408
634
  /**
409
635
  * Track a purchase event
410
636
  * @param event The purchase event
411
637
  */
412
- trackPurchase(event) {
413
- const params = {
638
+ trackPurchase(event, adapterParams) {
639
+ const eventName = this.getEventName(adapterParams, "Purchase");
640
+ const baseParams = {
414
641
  value: event.value,
415
642
  currency: event.currency || "INR",
416
643
  content_type: event.content_type || "product_group",
@@ -418,15 +645,20 @@ var PixelAdapter = class extends BaseAdapter {
418
645
  num_items: event.num_items || 1,
419
646
  contents: event.contents || []
420
647
  };
421
- window.fbq?.("track", "Purchase", this.enhanceWithAffiliateParams(params));
422
- }
423
- /**
424
- * Convert an event to Facebook Pixel parameters
425
- * @param event The event to convert
426
- */
427
- eventToParams(event) {
428
- const { type, timestamp, ...params } = event;
429
- return this.enhanceWithAffiliateParams(params);
648
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
649
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
650
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
651
+ if (event.eventId) {
652
+ window.fbq?.("track", eventName, enhancedParams, {
653
+ eventID: event.eventId
654
+ });
655
+ } else {
656
+ window.fbq?.("track", eventName, enhancedParams);
657
+ }
658
+ this.logger.debug("Purchase event tracked", {
659
+ eventName,
660
+ params: enhancedParams
661
+ });
430
662
  }
431
663
  };
432
664
 
@@ -475,8 +707,9 @@ var GoogleAdapter = class extends BaseAdapter {
475
707
  /**
476
708
  * Track an event with Google Analytics
477
709
  * @param event The event to track
710
+ * @param adapterParams Optional adapter-specific parameters
478
711
  */
479
- async trackEvent(event) {
712
+ async trackEvent(event, adapterParams) {
480
713
  this.logger.debug("Attempting to track event", {
481
714
  initialized: this.initialized,
482
715
  hasWindow: typeof window !== "undefined",
@@ -502,76 +735,94 @@ var GoogleAdapter = class extends BaseAdapter {
502
735
  });
503
736
  switch (event.type) {
504
737
  case "page_view" /* PAGE_VIEW */:
505
- this.trackPageView(event, measurementId);
738
+ this.trackPageView(
739
+ event,
740
+ measurementId,
741
+ adapterParams
742
+ );
506
743
  break;
507
744
  case "user_engagement" /* USER_ENGAGEMENT */:
508
- this.trackUserEngagement();
745
+ this.trackUserEngagement(adapterParams);
509
746
  break;
510
747
  case "session_start" /* SESSION_START */:
511
- this.trackSessionStart();
748
+ this.trackSessionStart(adapterParams);
512
749
  break;
513
750
  case "first_visit" /* FIRST_VISIT */:
514
- this.trackFirstVisit();
751
+ this.trackFirstVisit(adapterParams);
515
752
  break;
516
753
  case "view_item" /* VIEW_ITEM */:
517
- this.trackViewItem(event);
754
+ this.trackViewItem(event, adapterParams);
518
755
  break;
519
756
  case "viewed_product" /* VIEWED_PRODUCT */:
520
- this.trackViewedProduct(event);
757
+ this.trackViewedProduct(event, adapterParams);
521
758
  break;
522
759
  case "checkout_payment" /* CHECKOUT_PAYMENT */:
523
- this.trackCheckoutPayment(event);
760
+ this.trackCheckoutPayment(
761
+ event,
762
+ adapterParams
763
+ );
524
764
  break;
525
765
  case "scroll" /* SCROLL */:
526
- this.trackScroll();
766
+ this.trackScroll(adapterParams);
527
767
  break;
528
768
  case "add_to_cart" /* ADD_TO_CART */:
529
- case "shopify_add_to_cart" /* SHOPIFY_ADD_TO_CART */:
530
- this.trackAddToCart(event);
769
+ this.trackAddToCart(event, adapterParams);
531
770
  break;
532
771
  case "form_start" /* FORM_START */:
533
- this.trackFormStart();
772
+ this.trackFormStart(adapterParams);
534
773
  break;
535
774
  case "checkout_started" /* CHECKOUT_STARTED */:
536
- this.trackCheckoutStarted(event);
775
+ this.trackCheckoutStarted(
776
+ event,
777
+ adapterParams
778
+ );
537
779
  break;
538
780
  case "form_submission" /* FORM_SUBMISSION */:
539
- this.trackFormSubmission(event);
781
+ this.trackFormSubmission(event, adapterParams);
540
782
  break;
541
783
  case "search" /* SEARCH */:
542
- this.trackSearch(event);
784
+ this.trackSearch(event, adapterParams);
543
785
  break;
544
786
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
545
- this.trackCheckoutCompleted(event);
787
+ this.trackCheckoutCompleted(
788
+ event,
789
+ adapterParams
790
+ );
546
791
  break;
547
792
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
548
- this.trackAddPaymentInfo(event);
793
+ this.trackAddPaymentInfo(event, adapterParams);
549
794
  break;
550
795
  case "view_content" /* VIEW_CONTENT */:
551
- this.trackViewContent(event);
796
+ this.trackViewContent(event, adapterParams);
552
797
  break;
553
798
  case "purchase" /* PURCHASE */:
554
- this.trackPurchase(event);
799
+ this.trackPurchase(event, adapterParams);
555
800
  break;
556
801
  case "view_search_results" /* VIEW_SEARCH_RESULTS */:
557
- this.trackViewSearchResults(event);
802
+ this.trackViewSearchResults(
803
+ event,
804
+ adapterParams
805
+ );
558
806
  break;
559
807
  case "order_placed" /* ORDER_PLACED */:
560
- this.trackOrderPlaced(event);
808
+ this.trackOrderPlaced(event, adapterParams);
561
809
  break;
562
810
  case "begin_checkout" /* BEGIN_CHECKOUT */:
563
- this.trackBeginCheckout(event);
811
+ this.trackBeginCheckout(event, adapterParams);
564
812
  break;
565
813
  case "custom" /* CUSTOM */:
566
- this.trackCustomEvent(event);
814
+ this.trackCustomEvent(event, adapterParams);
567
815
  break;
568
816
  default: {
569
- const params = this.eventToParams(event);
570
- window.gtag(
571
- "event",
572
- event.type,
573
- this.enhanceWithAffiliateParams(params)
817
+ const eventName = this.getEventName(adapterParams, event.type);
818
+ const baseParams = this.eventToParams(event);
819
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
820
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
821
+ const enhancedParams = this.mergeEventData(
822
+ experimentParams,
823
+ adapterParams
574
824
  );
825
+ window.gtag("event", eventName, enhancedParams);
575
826
  break;
576
827
  }
577
828
  }
@@ -581,8 +832,9 @@ var GoogleAdapter = class extends BaseAdapter {
581
832
  * @param event The page view event
582
833
  * @param measurementId The Google Analytics measurement ID
583
834
  */
584
- trackPageView(event, measurementId) {
585
- const params = {
835
+ trackPageView(event, measurementId, adapterParams) {
836
+ const eventName = this.getEventName(adapterParams, "page_view");
837
+ const baseParams = {
586
838
  page_path: event.path,
587
839
  page_title: event.title || document.title,
588
840
  page_location: event.page_location || window.location.href,
@@ -605,14 +857,14 @@ var GoogleAdapter = class extends BaseAdapter {
605
857
  user_properties: event.user_properties,
606
858
  session_engaged: event.session_engaged
607
859
  };
608
- window.gtag?.(
609
- "event",
610
- "page_view",
611
- this.enhanceWithAffiliateParams(params)
612
- );
613
- }
614
- trackUserEngagement() {
615
- const params = {
860
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
861
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
862
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
863
+ window.gtag?.("event", eventName, enhancedParams);
864
+ }
865
+ trackUserEngagement(adapterParams) {
866
+ const eventName = this.getEventName(adapterParams, "user_engagement");
867
+ const baseParams = {
616
868
  batch_ordering_id: "",
617
869
  batch_page_id: "",
618
870
  campaign: "",
@@ -629,14 +881,14 @@ var GoogleAdapter = class extends BaseAdapter {
629
881
  srsltid: "",
630
882
  term: ""
631
883
  };
632
- window.gtag?.(
633
- "event",
634
- "user_engagement",
635
- this.enhanceWithAffiliateParams(params)
636
- );
637
- }
638
- trackSessionStart() {
639
- const params = {
884
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
885
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
886
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
887
+ window.gtag?.("event", eventName, enhancedParams);
888
+ }
889
+ trackSessionStart(adapterParams) {
890
+ const eventName = this.getEventName(adapterParams, "session_start");
891
+ const baseParams = {
640
892
  batch_ordering_id: "",
641
893
  batch_page_id: "",
642
894
  campaign: "",
@@ -655,14 +907,14 @@ var GoogleAdapter = class extends BaseAdapter {
655
907
  srsltid: "",
656
908
  term: ""
657
909
  };
658
- window.gtag?.(
659
- "event",
660
- "session_start",
661
- this.enhanceWithAffiliateParams(params)
662
- );
663
- }
664
- trackFirstVisit() {
665
- const params = {
910
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
911
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
912
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
913
+ window.gtag?.("event", eventName, enhancedParams);
914
+ }
915
+ trackFirstVisit(adapterParams) {
916
+ const eventName = this.getEventName(adapterParams, "first_visit");
917
+ const baseParams = {
666
918
  batch_ordering_id: "",
667
919
  batch_page_id: "",
668
920
  campaign: "",
@@ -683,25 +935,26 @@ var GoogleAdapter = class extends BaseAdapter {
683
935
  page_source: "",
684
936
  page_term: ""
685
937
  };
686
- window.gtag?.(
687
- "event",
688
- "first_visit",
689
- this.enhanceWithAffiliateParams(params)
690
- );
691
- }
692
- trackViewItem(event) {
693
- window.gtag?.(
694
- "event",
695
- "view_item",
696
- this.enhanceWithAffiliateParams({
697
- currency: event.currency,
698
- value: event.value,
699
- items: event.items
700
- })
701
- );
702
- }
703
- trackScroll() {
704
- const params = {
938
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
939
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
940
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
941
+ window.gtag?.("event", eventName, enhancedParams);
942
+ }
943
+ trackViewItem(event, adapterParams) {
944
+ const eventName = this.getEventName(adapterParams, "view_item");
945
+ const baseParams = {
946
+ currency: event.currency,
947
+ value: event.value,
948
+ items: event.items
949
+ };
950
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
951
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
952
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
953
+ window.gtag?.("event", eventName, enhancedParams);
954
+ }
955
+ trackScroll(adapterParams) {
956
+ const eventName = this.getEventName(adapterParams, "scroll");
957
+ const baseParams = {
705
958
  batch_ordering_id: "",
706
959
  batch_page_id: "",
707
960
  engagement_time_msec: void 0,
@@ -715,46 +968,52 @@ var GoogleAdapter = class extends BaseAdapter {
715
968
  percent_scrolled: 90
716
969
  // or dynamically captured
717
970
  };
718
- window.gtag?.("event", "scroll", this.enhanceWithAffiliateParams(params));
719
- }
720
- trackCheckoutPayment(event) {
721
- window.gtag?.(
722
- "event",
723
- "checkout_payment",
724
- this.enhanceWithAffiliateParams({
725
- currency: event.currency,
726
- value: event.cartValue,
727
- items: event.items.map((item) => ({
728
- item_id: item.productId,
729
- item_name: item.productName,
730
- price: item.price,
731
- quantity: item.quantity
732
- }))
733
- })
734
- );
735
- }
736
- trackViewedProduct(event) {
737
- window.gtag?.(
738
- "event",
739
- "viewed_product",
740
- this.enhanceWithAffiliateParams({
741
- currency: event.currency,
742
- value: event.price,
743
- items: [
744
- {
745
- item_id: event.productId,
746
- item_name: event.productName,
747
- price: event.price,
748
- currency: event.currency
749
- }
750
- ],
751
- view_duration: event.viewDuration
752
- })
753
- );
971
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
972
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
973
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
974
+ window.gtag?.("event", eventName, enhancedParams);
975
+ }
976
+ trackCheckoutPayment(event, adapterParams) {
977
+ const eventName = this.getEventName(adapterParams, "checkout_payment");
978
+ const baseParams = {
979
+ currency: event.currency,
980
+ value: event.cartValue,
981
+ items: event.items.map((item) => ({
982
+ item_id: item.productId,
983
+ item_name: item.productName,
984
+ price: item.price,
985
+ quantity: item.quantity
986
+ }))
987
+ };
988
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
989
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
990
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
991
+ window.gtag?.("event", eventName, enhancedParams);
992
+ }
993
+ trackViewedProduct(event, adapterParams) {
994
+ const eventName = this.getEventName(adapterParams, "viewed_product");
995
+ const baseParams = {
996
+ currency: event.currency,
997
+ value: event.price,
998
+ items: [
999
+ {
1000
+ item_id: event.productId,
1001
+ item_name: event.productName,
1002
+ price: event.price,
1003
+ currency: event.currency
1004
+ }
1005
+ ],
1006
+ view_duration: event.viewDuration
1007
+ };
1008
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1009
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1010
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1011
+ window.gtag?.("event", eventName, enhancedParams);
754
1012
  }
755
- trackAddToCart(event) {
1013
+ trackAddToCart(event, adapterParams) {
756
1014
  this.logger.debug("Processing add_to_cart event", { event });
757
- const params = {
1015
+ const eventName = this.getEventName(adapterParams, "add_to_cart");
1016
+ const baseParams = {
758
1017
  currency: event.currency || "INR",
759
1018
  value: event.price * (event.quantity || 1),
760
1019
  // Calculate total value
@@ -780,14 +1039,18 @@ var GoogleAdapter = class extends BaseAdapter {
780
1039
  user_id: event.user_id,
781
1040
  user_properties: event.user_properties
782
1041
  };
783
- const enhancedParams = this.enhanceWithAffiliateParams(params);
1042
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1043
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1044
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
784
1045
  this.logger.debug("Sending add_to_cart event to gtag", {
1046
+ eventName,
785
1047
  params: enhancedParams
786
1048
  });
787
- window.gtag?.("event", "add_to_cart", enhancedParams);
1049
+ window.gtag?.("event", eventName, enhancedParams);
788
1050
  }
789
- trackFormStart() {
790
- const params = {
1051
+ trackFormStart(adapterParams) {
1052
+ const eventName = this.getEventName(adapterParams, "form_start");
1053
+ const baseParams = {
791
1054
  batch_ordering_id: "",
792
1055
  batch_page_id: "",
793
1056
  engagement_time_msec: void 0,
@@ -805,14 +1068,14 @@ var GoogleAdapter = class extends BaseAdapter {
805
1068
  page_referrer: document.referrer,
806
1069
  page_title: document.title
807
1070
  };
808
- window.gtag?.(
809
- "event",
810
- "form_start",
811
- this.enhanceWithAffiliateParams(params)
812
- );
813
- }
814
- trackCheckoutStarted(event) {
815
- const params = {
1071
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1072
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1073
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1074
+ window.gtag?.("event", eventName, enhancedParams);
1075
+ }
1076
+ trackCheckoutStarted(event, adapterParams) {
1077
+ const eventName = this.getEventName(adapterParams, "begin_checkout");
1078
+ const baseParams = {
816
1079
  batch_ordering_id: "",
817
1080
  batch_page_id: "",
818
1081
  currency: event.currency || "INR",
@@ -835,14 +1098,14 @@ var GoogleAdapter = class extends BaseAdapter {
835
1098
  item_variant: item.variant
836
1099
  }))
837
1100
  };
838
- window.gtag?.(
839
- "event",
840
- "begin_checkout",
841
- this.enhanceWithAffiliateParams(params)
842
- );
843
- }
844
- trackFormSubmission(event) {
845
- const params = {
1101
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1102
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1103
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1104
+ window.gtag?.("event", eventName, enhancedParams);
1105
+ }
1106
+ trackFormSubmission(event, adapterParams) {
1107
+ const eventName = this.getEventName(adapterParams, "form_submit");
1108
+ const baseParams = {
846
1109
  batch_ordering_id: "",
847
1110
  batch_page_id: "",
848
1111
  engagement_time_msec: void 0,
@@ -856,14 +1119,14 @@ var GoogleAdapter = class extends BaseAdapter {
856
1119
  page_referrer: document.referrer,
857
1120
  page_title: document.title
858
1121
  };
859
- window.gtag?.(
860
- "event",
861
- "form_submit",
862
- this.enhanceWithAffiliateParams(params)
863
- );
864
- }
865
- trackSearch(event) {
866
- const params = {
1122
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1123
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1124
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1125
+ window.gtag?.("event", eventName, enhancedParams);
1126
+ }
1127
+ trackSearch(event, adapterParams) {
1128
+ const eventName = this.getEventName(adapterParams, "search");
1129
+ const baseParams = {
867
1130
  batch_ordering_id: "",
868
1131
  batch_page_id: "",
869
1132
  engagement_time_msec: void 0,
@@ -875,14 +1138,18 @@ var GoogleAdapter = class extends BaseAdapter {
875
1138
  page_title: document.title,
876
1139
  search_term: event.searchTerm
877
1140
  };
878
- window.gtag?.("event", "search", this.enhanceWithAffiliateParams(params));
1141
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1142
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1143
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1144
+ window.gtag?.("event", eventName, enhancedParams);
879
1145
  }
880
1146
  /**
881
1147
  * Track a checkout completed event
882
1148
  * @param event The checkout completed event
883
1149
  */
884
- trackCheckoutCompleted(event) {
885
- const params = {
1150
+ trackCheckoutCompleted(event, adapterParams) {
1151
+ const eventName = this.getEventName(adapterParams, "purchase");
1152
+ const baseParams = {
886
1153
  transaction_id: event.orderId,
887
1154
  currency: event.currency || "INR",
888
1155
  value: event.cartValue,
@@ -894,22 +1161,30 @@ var GoogleAdapter = class extends BaseAdapter {
894
1161
  item_variant: item.variant
895
1162
  }))
896
1163
  };
897
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1164
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1165
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1166
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1167
+ window.gtag?.("event", eventName, enhancedParams);
898
1168
  }
899
1169
  /**
900
1170
  * Track a custom event
901
1171
  * @param event The custom event
902
1172
  */
903
- trackCustomEvent(event) {
904
- const params = event.properties || {};
905
- window.gtag?.("event", event.name, this.enhanceWithAffiliateParams(params));
1173
+ trackCustomEvent(event, adapterParams) {
1174
+ const eventName = this.getEventName(adapterParams, event.name);
1175
+ const baseParams = event.properties || {};
1176
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1177
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1178
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1179
+ window.gtag?.("event", eventName, enhancedParams);
906
1180
  }
907
1181
  /**
908
1182
  * Track an add payment info event
909
1183
  * @param event The add payment info event
910
1184
  */
911
- trackAddPaymentInfo(event) {
912
- const params = {
1185
+ trackAddPaymentInfo(event, adapterParams) {
1186
+ const eventName = this.getEventName(adapterParams, "add_payment_info");
1187
+ const baseParams = {
913
1188
  currency: event.currency || "INR",
914
1189
  value: event.cartValue,
915
1190
  payment_type: event.paymentType || "",
@@ -921,18 +1196,18 @@ var GoogleAdapter = class extends BaseAdapter {
921
1196
  item_variant: item.variant
922
1197
  }))
923
1198
  };
924
- window.gtag?.(
925
- "event",
926
- "add_payment_info",
927
- this.enhanceWithAffiliateParams(params)
928
- );
1199
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1200
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1201
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1202
+ window.gtag?.("event", eventName, enhancedParams);
929
1203
  }
930
1204
  /**
931
1205
  * Track a view content event
932
1206
  * @param event The view content event
933
1207
  */
934
- trackViewContent(event) {
935
- const params = {
1208
+ trackViewContent(event, adapterParams) {
1209
+ const eventName = this.getEventName(adapterParams, "view_item");
1210
+ const baseParams = {
936
1211
  currency: event.currency || "USD",
937
1212
  value: event.value || 0,
938
1213
  items: event.items?.map((item) => ({
@@ -961,18 +1236,18 @@ var GoogleAdapter = class extends BaseAdapter {
961
1236
  user_id: event.user_id,
962
1237
  user_properties: event.user_properties
963
1238
  };
964
- window.gtag?.(
965
- "event",
966
- "view_item",
967
- this.enhanceWithAffiliateParams(params)
968
- );
1239
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1240
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1241
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1242
+ window.gtag?.("event", eventName, enhancedParams);
969
1243
  }
970
1244
  /**
971
1245
  * Track a purchase event
972
1246
  * @param event The purchase event
973
1247
  */
974
- trackPurchase(event) {
975
- const params = {
1248
+ trackPurchase(event, adapterParams) {
1249
+ const eventName = this.getEventName(adapterParams, "purchase");
1250
+ const baseParams = {
976
1251
  transaction_id: event.transaction_id,
977
1252
  value: event.value,
978
1253
  currency: event.currency || "USD",
@@ -1005,14 +1280,18 @@ var GoogleAdapter = class extends BaseAdapter {
1005
1280
  user_id: event.user_id,
1006
1281
  user_properties: event.user_properties
1007
1282
  };
1008
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1283
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1284
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1285
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1286
+ window.gtag?.("event", eventName, enhancedParams);
1009
1287
  }
1010
1288
  /**
1011
1289
  * Track a view search results event
1012
1290
  * @param event The view search results event
1013
1291
  */
1014
- trackViewSearchResults(event) {
1015
- const params = {
1292
+ trackViewSearchResults(event, adapterParams) {
1293
+ const eventName = this.getEventName(adapterParams, "view_search_results");
1294
+ const baseParams = {
1016
1295
  search_term: event.search_term,
1017
1296
  // GA4-specific parameters
1018
1297
  batch_ordering_id: event.batch_ordering_id || "",
@@ -1027,18 +1306,18 @@ var GoogleAdapter = class extends BaseAdapter {
1027
1306
  user_id: event.user_id,
1028
1307
  user_properties: event.user_properties
1029
1308
  };
1030
- window.gtag?.(
1031
- "event",
1032
- "view_search_results",
1033
- this.enhanceWithAffiliateParams(params)
1034
- );
1309
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1310
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1311
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1312
+ window.gtag?.("event", eventName, enhancedParams);
1035
1313
  }
1036
1314
  /**
1037
1315
  * Track an order placed event
1038
1316
  * @param event The order placed event
1039
1317
  */
1040
- trackOrderPlaced(event) {
1041
- const params = {
1318
+ trackOrderPlaced(event, adapterParams) {
1319
+ const eventName = this.getEventName(adapterParams, "purchase");
1320
+ const baseParams = {
1042
1321
  transaction_id: event.order_id,
1043
1322
  value: event.total_amount,
1044
1323
  currency: event.currency || "USD",
@@ -1064,14 +1343,18 @@ var GoogleAdapter = class extends BaseAdapter {
1064
1343
  user_id: event.user_id,
1065
1344
  user_properties: event.user_properties
1066
1345
  };
1067
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1346
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1347
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1348
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1349
+ window.gtag?.("event", eventName, enhancedParams);
1068
1350
  }
1069
1351
  /**
1070
1352
  * Track a begin checkout event
1071
1353
  * @param event The begin checkout event
1072
1354
  */
1073
- trackBeginCheckout(event) {
1074
- const params = {
1355
+ trackBeginCheckout(event, adapterParams) {
1356
+ const eventName = this.getEventName(adapterParams, "begin_checkout");
1357
+ const baseParams = {
1075
1358
  currency: event.currency || "USD",
1076
1359
  value: event.value || 0,
1077
1360
  coupon: event.coupon,
@@ -1101,11 +1384,10 @@ var GoogleAdapter = class extends BaseAdapter {
1101
1384
  user_id: event.user_id,
1102
1385
  user_properties: event.user_properties
1103
1386
  };
1104
- window.gtag?.(
1105
- "event",
1106
- "begin_checkout",
1107
- this.enhanceWithAffiliateParams(params)
1108
- );
1387
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1388
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1389
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1390
+ window.gtag?.("event", eventName, enhancedParams);
1109
1391
  }
1110
1392
  /**
1111
1393
  * Convert an event to Google Analytics parameters
@@ -1113,7 +1395,8 @@ var GoogleAdapter = class extends BaseAdapter {
1113
1395
  */
1114
1396
  eventToParams(event) {
1115
1397
  const { type, timestamp, ...params } = event;
1116
- return this.enhanceWithAffiliateParams(params);
1398
+ const affiliateParams = this.enhanceWithAffiliateParams(params);
1399
+ return this.enhanceWithExperimentParams(affiliateParams);
1117
1400
  }
1118
1401
  };
1119
1402
 
@@ -1135,44 +1418,9 @@ var EventNames = {
1135
1418
  SEARCH: "Search",
1136
1419
  // User events
1137
1420
  USER_SIGNED_UP: "User Signed Up",
1138
- USER_LOGGED_IN: "User Logged In",
1139
- // MoEngage events
1140
- ITEM_PURCHASED: "Item Purchased",
1141
- UPDATE_CART: "Update Cart",
1142
- CUSTOMER_REGISTERED: "Customer Registered",
1143
- CUSTOMER_LOGGED_IN: "Customer Logged In",
1144
- SHOPIFY_CHECKOUT_UPDATED: "Shopify - Checkout Updated",
1145
- SHOPIFY_ABANDONED_CHECKOUT: "Shopify - Abandoned Checkout",
1146
- SHOPIFY_ORDER_FULFILLED: "Shopify - Order Fulfilled",
1147
- SHOPIFY_CHECKOUT_STARTED: "Shopify - Checkout Started",
1148
- SHOPIFY_ADD_TO_CART: "Shopify - Add To Cart",
1149
- SHOPIFY_REMOVED_FROM_CART: "Shopify - Removed From Cart",
1150
- SHOPIFY_UPDATE_CART: "Shopify - Update Cart",
1151
- SPINFORM_RESULT: "Spinform Result",
1152
- COUPON_COPIED: "Coupon Copied",
1153
- STARTED_CHECKOUT_GK: "Started Checkout GK",
1154
- MOBILE_ADDED_GK: "Mobile Added GK",
1155
- ADDRESS_SELECTED_GK: "Address Selected GK",
1156
- ADDRESS_COMPLETED_GK: "Address Completed GK",
1157
- PAYMENT_METHOD_SELECTED_GK: "Payment Method Selected GK",
1158
- PAYMENT_COMPLETED_GK: "Payment Completed GK",
1159
- ORDER_SUCCESS: "Order Success",
1160
- ORDER_COMPLETED: "Order Completed",
1161
- PIN_CODE_ADDED_GK: "PIN Code Added GK",
1162
- ADDRESS_ADDED_GK: "Address Added GK",
1163
- KP_MP_PHONE_NUMBER_LOGGED_IN: "KP MP Phone Number Logged In",
1164
- KP_PHONE_NUMBER_LOGGED_IN: "KP Phone Number Logged In",
1165
- KP_MP_SHOPIFY_LOGGED_IN: "KP MP Shopify Logged In",
1166
- KP_MP_SUCCESSFULLY_LOGGED_OUT: "KP MP Successfully Logged Out",
1167
- KP_WHATSAPP_LOGGED_IN: "KP Whatsapp Logged In",
1168
- KP_MP_TRUECALLER_LOGGED_IN: "KP MP Truecaller Logged In",
1169
- KP_MP_WHATSAPP_LOGGED_IN: "KP MP Whatsapp Logged In",
1170
- KP_TRUECALLER_LOGGED_IN: "KP Truecaller Logged In",
1171
- KP_SHOPIFY_LOGGED_IN: "KP Shopify Logged In",
1172
- KP_SUCCESSFULLY_LOGGED_OUT: "KP Successfully Logged Out"
1421
+ USER_LOGGED_IN: "User Logged In"
1173
1422
  };
1174
1423
  var DEFAULT_CURRENCY = "INR";
1175
- var HARDCODED_HANDLE = "ryze-gums";
1176
1424
 
1177
1425
  // src/adapters/moengage-adapter.ts
1178
1426
  import moengage from "@moengage/web-sdk";
@@ -1224,8 +1472,9 @@ var MoengageAdapter = class extends BaseAdapter {
1224
1472
  /**
1225
1473
  * Track an event with MoenGage SDK
1226
1474
  * @param event The event to track
1475
+ * @param adapterParams Optional adapter-specific parameters
1227
1476
  */
1228
- async trackEvent(event) {
1477
+ async trackEvent(event, adapterParams) {
1229
1478
  if (!this.initialized || typeof window === "undefined" || !this.sdk) {
1230
1479
  this.logger.warn(
1231
1480
  "Cannot track event, adapter not initialized or SDK not available",
@@ -1241,106 +1490,172 @@ var MoengageAdapter = class extends BaseAdapter {
1241
1490
  this.logger.debug("Tracking event", { eventType: event.type });
1242
1491
  switch (event.type) {
1243
1492
  case "page_view" /* PAGE_VIEW */:
1244
- this.trackPageView(event);
1493
+ this.trackPageView(event, adapterParams);
1245
1494
  break;
1246
1495
  case "button_click" /* BUTTON_CLICK */:
1247
- this.trackButtonClick(event);
1496
+ this.trackButtonClick(event, adapterParams);
1248
1497
  break;
1249
1498
  case "form_submission" /* FORM_SUBMISSION */:
1250
- this.trackFormSubmission(event);
1499
+ this.trackFormSubmission(event, adapterParams);
1251
1500
  break;
1252
1501
  case "product_view" /* PRODUCT_VIEW */:
1253
- this.trackProductView(event);
1502
+ this.trackProductView(event, adapterParams);
1254
1503
  break;
1255
1504
  case "add_to_cart" /* ADD_TO_CART */:
1256
- this.trackAddToCart(event);
1505
+ this.trackAddToCart(event, adapterParams);
1257
1506
  break;
1258
1507
  case "remove_from_cart" /* REMOVE_FROM_CART */:
1259
- this.trackRemoveFromCart(event);
1508
+ this.trackRemoveFromCart(event, adapterParams);
1260
1509
  break;
1261
1510
  case "checkout_started" /* CHECKOUT_STARTED */:
1262
- this.trackCheckoutStarted(event);
1511
+ this.trackCheckoutStarted(
1512
+ event,
1513
+ adapterParams
1514
+ );
1263
1515
  break;
1264
1516
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
1265
- this.trackCheckoutCompleted(event);
1517
+ this.trackCheckoutCompleted(
1518
+ event,
1519
+ adapterParams
1520
+ );
1266
1521
  break;
1267
1522
  case "search" /* SEARCH */:
1268
- this.trackSearch(event);
1523
+ this.trackSearch(event, adapterParams);
1269
1524
  break;
1270
1525
  case "user_signup" /* USER_SIGNUP */:
1271
- this.trackUserSignup(event);
1526
+ this.trackUserSignup(event, adapterParams);
1272
1527
  break;
1273
1528
  case "user_login" /* USER_LOGIN */:
1274
- this.trackUserLogin(event);
1529
+ this.trackUserLogin(event, adapterParams);
1275
1530
  break;
1276
1531
  case "custom" /* CUSTOM */:
1277
- this.trackCustomEvent(event);
1532
+ this.trackCustomEvent(event, adapterParams);
1278
1533
  break;
1279
1534
  default:
1280
- this.sdk.track_event(event.type, this.eventToParams(event));
1535
+ const eventName = this.getEventName(adapterParams, event.type);
1536
+ const baseParams = this.eventToParams(event);
1537
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1538
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1539
+ const enhancedParams = this.mergeEventData(
1540
+ experimentParams,
1541
+ adapterParams
1542
+ );
1543
+ this.sdk.track_event(eventName, enhancedParams);
1281
1544
  break;
1282
1545
  }
1283
1546
  }
1284
1547
  /**
1285
1548
  * Track a page view event
1286
1549
  * @param event The page view event
1550
+ * @param adapterParams Optional adapter-specific parameters
1287
1551
  */
1288
- trackPageView(event) {
1552
+ trackPageView(event, adapterParams) {
1289
1553
  if (!this.sdk?.track_event) {
1290
1554
  this.logger.warn("track_event not available for PageView event");
1291
1555
  return;
1292
1556
  }
1293
- const eventData = {
1557
+ const eventName = this.getEventName(adapterParams, EventNames.PAGE_VIEWED);
1558
+ const baseEventData = {
1294
1559
  page_path: event.path,
1295
1560
  page_title: event.title,
1296
1561
  page_url: window.location.href,
1297
1562
  referrer: event.referrer || document.referrer
1298
1563
  };
1299
- this.sdk.track_event(EventNames.PAGE_VIEWED, eventData);
1300
- this.logger.debug("PageView event tracked", { eventData });
1564
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1565
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1566
+ const enhancedEventData = this.mergeEventData(
1567
+ experimentParams,
1568
+ adapterParams
1569
+ );
1570
+ this.sdk.track_event(eventName, enhancedEventData);
1571
+ this.logger.debug("PageView event tracked", {
1572
+ eventName,
1573
+ eventData: enhancedEventData
1574
+ });
1301
1575
  }
1302
1576
  /**
1303
1577
  * Track a button click event
1304
1578
  * @param event The button click event
1579
+ * @param adapterParams Optional adapter-specific parameters
1305
1580
  */
1306
- trackButtonClick(event) {
1307
- this.sdk?.track_event(EventNames.BUTTON_CLICKED, {
1581
+ trackButtonClick(event, adapterParams) {
1582
+ const eventName = this.getEventName(
1583
+ adapterParams,
1584
+ EventNames.BUTTON_CLICKED
1585
+ );
1586
+ const baseEventData = {
1308
1587
  button_id: event.buttonId,
1309
1588
  button_text: event.buttonText,
1310
1589
  location: event.location
1311
- });
1590
+ };
1591
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1592
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1593
+ const enhancedEventData = this.mergeEventData(
1594
+ experimentParams,
1595
+ adapterParams
1596
+ );
1597
+ this.sdk?.track_event(eventName, enhancedEventData);
1312
1598
  }
1313
1599
  /**
1314
1600
  * Track a form submission event
1315
1601
  * @param event The form submission event
1602
+ * @param adapterParams Optional adapter-specific parameters
1316
1603
  */
1317
- trackFormSubmission(event) {
1318
- this.sdk?.track_event(EventNames.FORM_SUBMITTED, {
1604
+ trackFormSubmission(event, adapterParams) {
1605
+ const eventName = this.getEventName(
1606
+ adapterParams,
1607
+ EventNames.FORM_SUBMITTED
1608
+ );
1609
+ const baseEventData = {
1319
1610
  form_id: event.formId,
1320
1611
  form_name: event.formName,
1321
1612
  success: event.success
1322
- });
1613
+ };
1614
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1615
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1616
+ const enhancedEventData = this.mergeEventData(
1617
+ experimentParams,
1618
+ adapterParams
1619
+ );
1620
+ this.sdk?.track_event(eventName, enhancedEventData);
1323
1621
  }
1324
1622
  /**
1325
1623
  * Track a product view event
1326
1624
  * @param event The product view event
1625
+ * @param adapterParams Optional adapter-specific parameters
1327
1626
  */
1328
- trackProductView(event) {
1329
- this.sdk?.track_event(EventNames.PRODUCT_VIEWED, {
1627
+ trackProductView(event, adapterParams) {
1628
+ const eventName = this.getEventName(
1629
+ adapterParams,
1630
+ EventNames.PRODUCT_VIEWED
1631
+ );
1632
+ const baseEventData = {
1330
1633
  product_id: event.productId,
1331
1634
  product_name: event.productName,
1332
1635
  price: event.price,
1333
1636
  currency: event.currency || DEFAULT_CURRENCY,
1334
1637
  category: event.category
1335
- });
1638
+ };
1639
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1640
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1641
+ const enhancedEventData = this.mergeEventData(
1642
+ experimentParams,
1643
+ adapterParams
1644
+ );
1645
+ this.sdk?.track_event(eventName, enhancedEventData);
1336
1646
  }
1337
1647
  /**
1338
1648
  * Track an add to cart event
1339
1649
  * @param event The add to cart event
1650
+ * @param adapterParams Optional adapter-specific parameters
1340
1651
  */
1341
- trackAddToCart(event) {
1652
+ trackAddToCart(event, adapterParams) {
1342
1653
  const quantity = event.quantity ?? 1;
1343
- this.sdk?.track_event(EventNames.ADDED_TO_CART, {
1654
+ const eventName = this.getEventName(
1655
+ adapterParams,
1656
+ EventNames.ADDED_TO_CART
1657
+ );
1658
+ const baseEventData = {
1344
1659
  product_id: event.productId,
1345
1660
  product_name: event.productName,
1346
1661
  price: event.price,
@@ -1348,14 +1663,26 @@ var MoengageAdapter = class extends BaseAdapter {
1348
1663
  quantity,
1349
1664
  variant: event.variant,
1350
1665
  total_value: event.price * quantity
1351
- });
1666
+ };
1667
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1668
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1669
+ const enhancedEventData = this.mergeEventData(
1670
+ experimentParams,
1671
+ adapterParams
1672
+ );
1673
+ this.sdk?.track_event(eventName, enhancedEventData);
1352
1674
  }
1353
1675
  /**
1354
1676
  * Track a remove from cart event
1355
1677
  * @param event The remove from cart event
1678
+ * @param adapterParams Optional adapter-specific parameters
1356
1679
  */
1357
- trackRemoveFromCart(event) {
1358
- this.sdk?.track_event(EventNames.REMOVED_FROM_CART, {
1680
+ trackRemoveFromCart(event, adapterParams) {
1681
+ const eventName = this.getEventName(
1682
+ adapterParams,
1683
+ EventNames.REMOVED_FROM_CART
1684
+ );
1685
+ const baseEventData = {
1359
1686
  product_id: event.productId,
1360
1687
  product_name: event.productName,
1361
1688
  price: event.price,
@@ -1363,14 +1690,26 @@ var MoengageAdapter = class extends BaseAdapter {
1363
1690
  quantity: event.quantity,
1364
1691
  variant: event.variant,
1365
1692
  total_value: event.price * event.quantity
1366
- });
1693
+ };
1694
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1695
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1696
+ const enhancedEventData = this.mergeEventData(
1697
+ experimentParams,
1698
+ adapterParams
1699
+ );
1700
+ this.sdk?.track_event(eventName, enhancedEventData);
1367
1701
  }
1368
1702
  /**
1369
1703
  * Track a checkout started event
1370
1704
  * @param event The checkout started event
1705
+ * @param adapterParams Optional adapter-specific parameters
1371
1706
  */
1372
- trackCheckoutStarted(event) {
1373
- this.sdk?.track_event(EventNames.CHECKOUT_STARTED, {
1707
+ trackCheckoutStarted(event, adapterParams) {
1708
+ const eventName = this.getEventName(
1709
+ adapterParams,
1710
+ EventNames.CHECKOUT_STARTED
1711
+ );
1712
+ const baseEventData = {
1374
1713
  cart_value: event.cartValue,
1375
1714
  currency: event.currency || DEFAULT_CURRENCY,
1376
1715
  item_count: event.itemCount,
@@ -1381,14 +1720,26 @@ var MoengageAdapter = class extends BaseAdapter {
1381
1720
  quantity: item.quantity,
1382
1721
  variant: item.variant
1383
1722
  }))
1384
- });
1723
+ };
1724
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1725
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1726
+ const enhancedEventData = this.mergeEventData(
1727
+ experimentParams,
1728
+ adapterParams
1729
+ );
1730
+ this.sdk?.track_event(eventName, enhancedEventData);
1385
1731
  }
1386
1732
  /**
1387
1733
  * Track a checkout completed event
1388
1734
  * @param event The checkout completed event
1735
+ * @param adapterParams Optional adapter-specific parameters
1389
1736
  */
1390
- trackCheckoutCompleted(event) {
1391
- this.sdk?.track_event(EventNames.PURCHASE_COMPLETED, {
1737
+ trackCheckoutCompleted(event, adapterParams) {
1738
+ const eventName = this.getEventName(
1739
+ adapterParams,
1740
+ EventNames.PURCHASE_COMPLETED
1741
+ );
1742
+ const baseEventData = {
1392
1743
  order_id: event.orderId,
1393
1744
  cart_value: event.cartValue,
1394
1745
  currency: event.currency || DEFAULT_CURRENCY,
@@ -1400,28 +1751,56 @@ var MoengageAdapter = class extends BaseAdapter {
1400
1751
  quantity: item.quantity,
1401
1752
  variant: item.variant
1402
1753
  }))
1403
- });
1754
+ };
1755
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1756
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1757
+ const enhancedEventData = this.mergeEventData(
1758
+ experimentParams,
1759
+ adapterParams
1760
+ );
1761
+ this.sdk?.track_event(eventName, enhancedEventData);
1404
1762
  }
1405
1763
  /**
1406
1764
  * Track a search event
1407
1765
  * @param event The search event
1766
+ * @param adapterParams Optional adapter-specific parameters
1408
1767
  */
1409
- trackSearch(event) {
1410
- this.sdk?.track_event(EventNames.SEARCH, {
1768
+ trackSearch(event, adapterParams) {
1769
+ const eventName = this.getEventName(adapterParams, EventNames.SEARCH);
1770
+ const baseEventData = {
1411
1771
  search_term: event.searchTerm,
1412
1772
  results_count: event.resultsCount
1413
- });
1773
+ };
1774
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1775
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1776
+ const enhancedEventData = this.mergeEventData(
1777
+ experimentParams,
1778
+ adapterParams
1779
+ );
1780
+ this.sdk?.track_event(eventName, enhancedEventData);
1414
1781
  }
1415
1782
  /**
1416
1783
  * Track a user signup event
1417
1784
  * @param event The user signup event
1785
+ * @param adapterParams Optional adapter-specific parameters
1418
1786
  */
1419
- trackUserSignup(event) {
1420
- this.sdk?.track_event(EventNames.USER_SIGNED_UP, {
1787
+ trackUserSignup(event, adapterParams) {
1788
+ const eventName = this.getEventName(
1789
+ adapterParams,
1790
+ EventNames.USER_SIGNED_UP
1791
+ );
1792
+ const baseEventData = {
1421
1793
  user_id: event.userId,
1422
1794
  method: event.method,
1423
1795
  success: event.success
1424
- });
1796
+ };
1797
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1798
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1799
+ const enhancedEventData = this.mergeEventData(
1800
+ experimentParams,
1801
+ adapterParams
1802
+ );
1803
+ this.sdk?.track_event(eventName, enhancedEventData);
1425
1804
  if (event.userId && this.getConfig("enableUserIdentification", true)) {
1426
1805
  this.sdk?.add_unique_user_id(event.userId);
1427
1806
  }
@@ -1429,13 +1808,25 @@ var MoengageAdapter = class extends BaseAdapter {
1429
1808
  /**
1430
1809
  * Track a user login event
1431
1810
  * @param event The user login event
1811
+ * @param adapterParams Optional adapter-specific parameters
1432
1812
  */
1433
- trackUserLogin(event) {
1434
- this.sdk?.track_event(EventNames.USER_LOGGED_IN, {
1813
+ trackUserLogin(event, adapterParams) {
1814
+ const eventName = this.getEventName(
1815
+ adapterParams,
1816
+ EventNames.USER_LOGGED_IN
1817
+ );
1818
+ const baseEventData = {
1435
1819
  user_id: event.userId,
1436
1820
  method: event.method,
1437
1821
  success: event.success
1438
- });
1822
+ };
1823
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1824
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1825
+ const enhancedEventData = this.mergeEventData(
1826
+ experimentParams,
1827
+ adapterParams
1828
+ );
1829
+ this.sdk?.track_event(eventName, enhancedEventData);
1439
1830
  if (event.userId && this.getConfig("enableUserIdentification", true)) {
1440
1831
  this.sdk?.add_unique_user_id(event.userId);
1441
1832
  }
@@ -1443,9 +1834,18 @@ var MoengageAdapter = class extends BaseAdapter {
1443
1834
  /**
1444
1835
  * Track a custom event
1445
1836
  * @param event The custom event
1446
- */
1447
- trackCustomEvent(event) {
1448
- this.sdk?.track_event(event.name, event.properties);
1837
+ * @param adapterParams Optional adapter-specific parameters
1838
+ */
1839
+ trackCustomEvent(event, adapterParams) {
1840
+ const eventName = this.getEventName(adapterParams, event.name);
1841
+ const baseEventData = event.properties || {};
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);
1449
1849
  }
1450
1850
  /**
1451
1851
  * Convert an event to MoenGage parameters
@@ -1532,8 +1932,9 @@ var PostHogAdapter = class extends BaseAdapter {
1532
1932
  /**
1533
1933
  * Track an event with PostHog
1534
1934
  * @param event The event to track
1935
+ * @param adapterParams Optional adapter-specific parameters
1535
1936
  */
1536
- async trackEvent(event) {
1937
+ async trackEvent(event, adapterParams) {
1537
1938
  if (!this.initialized || typeof window === "undefined" || !window.posthog) {
1538
1939
  this.logger.warn(
1539
1940
  "Cannot track event, adapter not initialized or posthog not available",
@@ -1549,74 +1950,84 @@ var PostHogAdapter = class extends BaseAdapter {
1549
1950
  this.logger.debug("Tracking event", { eventType: event.type });
1550
1951
  switch (event.type) {
1551
1952
  case "page_view" /* PAGE_VIEW */:
1552
- this.trackPageView(event);
1953
+ this.trackPageView(event, adapterParams);
1553
1954
  break;
1554
1955
  case "product_view" /* PRODUCT_VIEW */:
1555
- this.trackProductView(event);
1956
+ this.trackProductView(event, adapterParams);
1556
1957
  break;
1557
1958
  case "add_to_cart" /* ADD_TO_CART */:
1558
- this.trackAddToCart(event);
1959
+ this.trackAddToCart(event, adapterParams);
1559
1960
  break;
1560
1961
  case "checkout_started" /* CHECKOUT_STARTED */:
1561
- this.trackCheckoutStarted(event);
1962
+ this.trackCheckoutStarted(event, adapterParams);
1562
1963
  break;
1563
1964
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
1564
- this.trackCheckoutCompleted(event);
1965
+ this.trackCheckoutCompleted(event, adapterParams);
1565
1966
  break;
1566
1967
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
1567
- this.trackAddPaymentInfo(event);
1968
+ this.trackAddPaymentInfo(event, adapterParams);
1568
1969
  break;
1569
1970
  case "search" /* SEARCH */:
1570
- this.trackSearch(event);
1971
+ this.trackSearch(event, adapterParams);
1571
1972
  break;
1572
1973
  default:
1573
- const params = this.eventToParams(event);
1574
- window.posthog?.capture(
1575
- event.type,
1576
- this.enhanceWithAffiliateParams(params)
1974
+ const eventName = this.getEventName(adapterParams, event.type);
1975
+ const baseParams = this.eventToParams(event);
1976
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1977
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1978
+ const enhancedParams = this.mergeEventData(
1979
+ experimentParams,
1980
+ adapterParams
1577
1981
  );
1982
+ window.posthog?.capture(eventName, enhancedParams);
1578
1983
  break;
1579
1984
  }
1580
1985
  }
1581
1986
  /**
1582
1987
  * Track a page view event
1583
1988
  * @param event The page view event
1989
+ * @param adapterParams Optional adapter-specific parameters
1584
1990
  */
1585
- trackPageView(event) {
1586
- const params = {
1991
+ trackPageView(event, adapterParams) {
1992
+ const eventName = this.getEventName(adapterParams, "$pageview");
1993
+ const baseParams = {
1587
1994
  path: event.path,
1588
1995
  title: event.title,
1589
1996
  referrer: event.referrer
1590
1997
  };
1591
- window.posthog?.capture(
1592
- "$pageview",
1593
- this.enhanceWithAffiliateParams(params)
1594
- );
1998
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1999
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2000
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2001
+ window.posthog?.capture(eventName, enhancedParams);
1595
2002
  }
1596
2003
  /**
1597
2004
  * Track a product view event
1598
2005
  * @param event The product view event
2006
+ * @param adapterParams Optional adapter-specific parameters
1599
2007
  */
1600
- trackProductView(event) {
1601
- const params = {
2008
+ trackProductView(event, adapterParams) {
2009
+ const eventName = this.getEventName(adapterParams, "product_viewed");
2010
+ const baseParams = {
1602
2011
  product_id: event.productId,
1603
2012
  product_name: event.productName,
1604
2013
  category: event.category,
1605
2014
  price: event.price,
1606
2015
  currency: event.currency || "INR"
1607
2016
  };
1608
- window.posthog?.capture(
1609
- "product_viewed",
1610
- this.enhanceWithAffiliateParams(params)
1611
- );
2017
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2018
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2019
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2020
+ window.posthog?.capture(eventName, enhancedParams);
1612
2021
  }
1613
2022
  /**
1614
2023
  * Track an add to cart event
1615
2024
  * @param event The add to cart event
2025
+ * @param adapterParams Optional adapter-specific parameters
1616
2026
  */
1617
- trackAddToCart(event) {
2027
+ trackAddToCart(event, adapterParams) {
1618
2028
  this.logger.debug("Handling ADD_TO_CART event", { event });
1619
- const params = {
2029
+ const eventName = this.getEventName(adapterParams, "add_to_cart");
2030
+ const baseParams = {
1620
2031
  product_id: event.productId,
1621
2032
  product_name: event.productName,
1622
2033
  price: event.price,
@@ -1624,23 +2035,28 @@ var PostHogAdapter = class extends BaseAdapter {
1624
2035
  quantity: event.quantity,
1625
2036
  variant: event.variant
1626
2037
  };
1627
- this.logger.debug("Sending to PostHog with params", { params });
2038
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2039
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2040
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2041
+ this.logger.debug("Sending to PostHog with params", {
2042
+ eventName,
2043
+ params: enhancedParams
2044
+ });
1628
2045
  if (!window.posthog) {
1629
2046
  this.logger.error("window.posthog is not available");
1630
2047
  return;
1631
2048
  }
1632
- window.posthog.capture(
1633
- "add_to_cart",
1634
- this.enhanceWithAffiliateParams(params)
1635
- );
2049
+ window.posthog.capture(eventName, enhancedParams);
1636
2050
  this.logger.debug("Event sent to PostHog successfully");
1637
2051
  }
1638
2052
  /**
1639
2053
  * Track a checkout started event
1640
2054
  * @param event The checkout started event
2055
+ * @param adapterParams Optional adapter-specific parameters
1641
2056
  */
1642
- trackCheckoutStarted(event) {
1643
- const params = {
2057
+ trackCheckoutStarted(event, adapterParams) {
2058
+ const eventName = this.getEventName(adapterParams, "checkout_started");
2059
+ const baseParams = {
1644
2060
  cart_value: event.cartValue,
1645
2061
  currency: event.currency || "INR",
1646
2062
  item_count: event.itemCount,
@@ -1652,17 +2068,19 @@ var PostHogAdapter = class extends BaseAdapter {
1652
2068
  variant: item.variant
1653
2069
  }))
1654
2070
  };
1655
- window.posthog?.capture(
1656
- "checkout_started",
1657
- this.enhanceWithAffiliateParams(params)
1658
- );
2071
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2072
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2073
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2074
+ window.posthog?.capture(eventName, enhancedParams);
1659
2075
  }
1660
2076
  /**
1661
2077
  * Track a checkout completed event
1662
2078
  * @param event The checkout completed event
2079
+ * @param adapterParams Optional adapter-specific parameters
1663
2080
  */
1664
- trackCheckoutCompleted(event) {
1665
- const params = {
2081
+ trackCheckoutCompleted(event, adapterParams) {
2082
+ const eventName = this.getEventName(adapterParams, "purchase");
2083
+ const baseParams = {
1666
2084
  order_id: event.orderId,
1667
2085
  cart_value: event.cartValue,
1668
2086
  currency: event.currency || "INR",
@@ -1675,29 +2093,36 @@ var PostHogAdapter = class extends BaseAdapter {
1675
2093
  variant: item.variant
1676
2094
  }))
1677
2095
  };
1678
- window.posthog?.capture(
1679
- "purchase",
1680
- this.enhanceWithAffiliateParams(params)
1681
- );
2096
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2097
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2098
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2099
+ window.posthog?.capture(eventName, enhancedParams);
1682
2100
  }
1683
2101
  /**
1684
2102
  * Track a search event
1685
2103
  * @param event The search event
2104
+ * @param adapterParams Optional adapter-specific parameters
1686
2105
  */
1687
- trackSearch(event) {
1688
- const params = {
2106
+ trackSearch(event, adapterParams) {
2107
+ const eventName = this.getEventName(adapterParams, "search");
2108
+ const baseParams = {
1689
2109
  search_term: event.searchTerm,
1690
2110
  results_count: event.resultsCount,
1691
2111
  content_ids: event.content_ids
1692
2112
  };
1693
- window.posthog?.capture("search", this.enhanceWithAffiliateParams(params));
2113
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2114
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2115
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2116
+ window.posthog?.capture(eventName, enhancedParams);
1694
2117
  }
1695
2118
  /**
1696
2119
  * Track an add payment info event
1697
2120
  * @param event The add payment info event
2121
+ * @param adapterParams Optional adapter-specific parameters
1698
2122
  */
1699
- trackAddPaymentInfo(event) {
1700
- const params = {
2123
+ trackAddPaymentInfo(event, adapterParams) {
2124
+ const eventName = this.getEventName(adapterParams, "add_payment_info");
2125
+ const baseParams = {
1701
2126
  cart_value: event.cartValue,
1702
2127
  currency: event.currency || "INR",
1703
2128
  payment_type: event.paymentType,
@@ -1710,10 +2135,10 @@ var PostHogAdapter = class extends BaseAdapter {
1710
2135
  variant: item.variant
1711
2136
  }))
1712
2137
  };
1713
- window.posthog?.capture(
1714
- "add_payment_info",
1715
- this.enhanceWithAffiliateParams(params)
1716
- );
2138
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2139
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2140
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2141
+ window.posthog?.capture(eventName, enhancedParams);
1717
2142
  }
1718
2143
  /**
1719
2144
  * Convert an event to PostHog parameters
@@ -1837,43 +2262,62 @@ var ShopifyAdapter = class extends BaseAdapter {
1837
2262
  shopId: `gid://shopify/Shop/${this.shopId}`,
1838
2263
  currency: this.currency,
1839
2264
  acceptedLanguage: DEFAULT_LANGUAGE,
1840
- ...this.enhanceWithAffiliateParams({})
2265
+ ...this.enhanceWithExperimentParams(this.enhanceWithAffiliateParams({}))
1841
2266
  };
1842
2267
  }
1843
2268
  /**
1844
2269
  * Track an event using Shopify Analytics
1845
2270
  */
1846
- async trackEvent(event) {
2271
+ async trackEvent(event, adapterParams) {
1847
2272
  if (!this.initialized || typeof window === "undefined") {
1848
2273
  this.logger.warn(
1849
2274
  "Shopify Analytics not initialized or not in browser environment"
1850
2275
  );
1851
2276
  return;
1852
2277
  }
2278
+ const params = this.getAdapterParams(adapterParams);
2279
+ const customEventName = this.getEventName(params, event.type);
1853
2280
  this.logger.debug("Processing Shopify Analytics event", {
1854
2281
  eventType: event.type,
1855
- eventData: event
2282
+ customEventName,
2283
+ eventData: event,
2284
+ adapterParams: params
1856
2285
  });
2286
+ const affiliateParams = this.enhanceWithAffiliateParams(event);
2287
+ const enhancedEvent = this.enhanceWithExperimentParams(affiliateParams);
1857
2288
  try {
1858
2289
  switch (event.type) {
1859
2290
  case "page_view" /* PAGE_VIEW */:
1860
- this.sendPageView(AnalyticsEventName.PAGE_VIEW);
1861
- this.logger.debug("Sent PAGE_VIEW event to Shopify Analytics");
2291
+ const pageViewPayload = this.mergeEventData(enhancedEvent, params);
2292
+ this.sendPageView(AnalyticsEventName.PAGE_VIEW, pageViewPayload);
2293
+ this.logger.debug("Sent PAGE_VIEW event to Shopify Analytics", {
2294
+ payload: pageViewPayload
2295
+ });
1862
2296
  break;
1863
2297
  case "view_content" /* VIEW_CONTENT */:
1864
- this.sendPageView(AnalyticsEventName.PRODUCT_VIEW);
1865
- this.logger.debug("Sent PRODUCT_VIEW event to Shopify Analytics");
2298
+ const viewContentPayload = this.mergeEventData(enhancedEvent, params);
2299
+ this.sendPageView(
2300
+ AnalyticsEventName.PRODUCT_VIEW,
2301
+ viewContentPayload
2302
+ );
2303
+ this.logger.debug("Sent PRODUCT_VIEW event to Shopify Analytics", {
2304
+ payload: viewContentPayload
2305
+ });
1866
2306
  break;
1867
2307
  case "add_to_cart" /* ADD_TO_CART */:
1868
- this.trackAddToCart(event);
2308
+ const addToCartPayload = this.mergeEventData(enhancedEvent, params);
2309
+ this.trackAddToCart(addToCartPayload);
1869
2310
  break;
1870
2311
  case "checkout_started" /* CHECKOUT_STARTED */:
1871
2312
  case "begin_checkout" /* BEGIN_CHECKOUT */:
1872
- this.sendPageView(AnalyticsEventName.PAGE_VIEW, {
1873
- pageType: "checkout"
1874
- });
2313
+ const checkoutPayload = this.mergeEventData(
2314
+ { ...enhancedEvent, pageType: "checkout" },
2315
+ params
2316
+ );
2317
+ this.sendPageView(AnalyticsEventName.PAGE_VIEW, checkoutPayload);
1875
2318
  this.logger.debug(
1876
- "Sent checkout PAGE_VIEW event to Shopify Analytics"
2319
+ "Sent checkout PAGE_VIEW event to Shopify Analytics",
2320
+ { payload: checkoutPayload }
1877
2321
  );
1878
2322
  break;
1879
2323
  default:
@@ -1999,8 +2443,10 @@ var KwikPassAdapter = class extends BaseAdapter {
1999
2443
  }
2000
2444
  /**
2001
2445
  * Track an event using KwikPass
2446
+ * @param event The event to track
2447
+ * @param adapterParams Optional adapter-specific parameters
2002
2448
  */
2003
- async trackEvent(event) {
2449
+ async trackEvent(event, adapterParams) {
2004
2450
  if (!this.initialized || typeof window === "undefined") {
2005
2451
  this.logger.warn(
2006
2452
  "KwikPass adapter not initialized or not in browser environment"
@@ -2013,18 +2459,19 @@ var KwikPassAdapter = class extends BaseAdapter {
2013
2459
  });
2014
2460
  return;
2015
2461
  }
2462
+ const affiliateParams = this.enhanceWithAffiliateParams(event);
2463
+ const enhancedEvent = this.enhanceWithExperimentParams(affiliateParams);
2016
2464
  try {
2017
2465
  this.logger.debug("Processing event", { eventType: event.type });
2018
- const enhancedEvent = this.enhanceWithAffiliateParams(event);
2019
2466
  switch (event.type) {
2020
2467
  case "product_view" /* PRODUCT_VIEW */:
2021
- this.trackProductView(enhancedEvent);
2468
+ this.trackProductView(enhancedEvent, adapterParams);
2022
2469
  break;
2023
2470
  case "collection_view" /* COLLECTION_VIEW */:
2024
- this.trackCollectionView(enhancedEvent);
2471
+ this.trackCollectionView(enhancedEvent, adapterParams);
2025
2472
  break;
2026
2473
  case "page_view" /* PAGE_VIEW */:
2027
- this.trackPageView(enhancedEvent);
2474
+ this.trackPageView(enhancedEvent, adapterParams);
2028
2475
  break;
2029
2476
  default:
2030
2477
  this.logger.debug("Event not supported", { eventType: event.type });
@@ -2039,55 +2486,71 @@ var KwikPassAdapter = class extends BaseAdapter {
2039
2486
  /**
2040
2487
  * Send event to KwikPass platform
2041
2488
  */
2042
- sendKwikPassEvent(type, eventData) {
2043
- this.logger.debug(`Sending ${type}`, { eventData });
2489
+ sendKwikPassEvent(type, eventData, adapterParams) {
2490
+ const customEventType = this.getEventName(adapterParams, type);
2491
+ const enhancedEventData = this.mergeEventData(eventData, adapterParams);
2492
+ this.logger.debug(`Sending ${customEventType}`, {
2493
+ eventData: enhancedEventData
2494
+ });
2044
2495
  if (typeof window !== "undefined") {
2045
2496
  const customEvent = new CustomEvent(`page_view_kp`, {
2046
2497
  detail: {
2047
- type,
2048
- detail: eventData
2498
+ type: customEventType,
2499
+ detail: enhancedEventData
2049
2500
  }
2050
2501
  });
2051
2502
  window.dispatchEvent(customEvent);
2052
- this.logger.debug(`${type} sent successfully`);
2503
+ this.logger.debug(`${customEventType} sent successfully`);
2053
2504
  }
2054
2505
  }
2055
2506
  /**
2056
- * Track product view event
2507
+ * Track collection view event
2057
2508
  */
2058
- trackCollectionView(event) {
2059
- this.sendKwikPassEvent("collection", {
2060
- product_id: event.productId,
2061
- product_name: event.productName,
2062
- price: event.price,
2063
- currency: event.currency,
2064
- category: event.category,
2065
- timestamp: event.timestamp || Date.now()
2066
- });
2509
+ trackCollectionView(event, adapterParams) {
2510
+ this.sendKwikPassEvent(
2511
+ "collection",
2512
+ {
2513
+ product_id: event.productId,
2514
+ product_name: event.productName,
2515
+ price: event.price,
2516
+ currency: event.currency,
2517
+ category: event.category,
2518
+ timestamp: event.timestamp || Date.now()
2519
+ },
2520
+ adapterParams
2521
+ );
2067
2522
  }
2068
2523
  /**
2069
- * Track collection view event
2524
+ * Track product view event
2070
2525
  */
2071
- trackProductView(event) {
2072
- this.sendKwikPassEvent("product", {
2073
- product_id: event.productId,
2074
- product_name: event.productName,
2075
- price: event.price,
2076
- currency: event.currency,
2077
- category: event.category,
2078
- timestamp: event.timestamp || Date.now()
2079
- });
2526
+ trackProductView(event, adapterParams) {
2527
+ this.sendKwikPassEvent(
2528
+ "product",
2529
+ {
2530
+ product_id: event.productId,
2531
+ product_name: event.productName,
2532
+ price: event.price,
2533
+ currency: event.currency,
2534
+ category: event.category,
2535
+ timestamp: event.timestamp || Date.now()
2536
+ },
2537
+ adapterParams
2538
+ );
2080
2539
  }
2081
2540
  /**
2082
2541
  * Track page view event
2083
2542
  */
2084
- trackPageView(event) {
2085
- this.sendKwikPassEvent("other", {
2086
- path: event.path,
2087
- title: event.title,
2088
- referrer: event.referrer,
2089
- timestamp: event.timestamp || Date.now()
2090
- });
2543
+ trackPageView(event, adapterParams) {
2544
+ this.sendKwikPassEvent(
2545
+ "other",
2546
+ {
2547
+ path: event.path,
2548
+ title: event.title,
2549
+ referrer: event.referrer,
2550
+ timestamp: event.timestamp || Date.now()
2551
+ },
2552
+ adapterParams
2553
+ );
2091
2554
  }
2092
2555
  };
2093
2556
 
@@ -2121,8 +2584,10 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
2121
2584
  }
2122
2585
  /**
2123
2586
  * Track an event using GoKwik
2587
+ * @param event The event to track
2588
+ * @param adapterParams Optional adapter-specific parameters
2124
2589
  */
2125
- async trackEvent(event) {
2590
+ async trackEvent(event, adapterParams) {
2126
2591
  if (!this.initialized || typeof window === "undefined") {
2127
2592
  this.logger.warn(
2128
2593
  "GoKwik adapter not initialized or not in browser environment"
@@ -2131,49 +2596,50 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
2131
2596
  }
2132
2597
  try {
2133
2598
  this.logger.debug("Processing event", { eventType: event.type });
2134
- const enhancedEvent = this.enhanceWithAffiliateParams(event);
2599
+ const affiliateEnhanced = this.enhanceWithAffiliateParams(event);
2600
+ const enhancedEvent = this.enhanceWithExperimentParams(affiliateEnhanced);
2135
2601
  switch (event.type) {
2136
2602
  case "started_checkout_gk" /* STARTED_CHECKOUT_GK */:
2137
- this.trackStartedCheckoutGK(enhancedEvent);
2603
+ this.trackStartedCheckoutGK(enhancedEvent, adapterParams);
2138
2604
  break;
2139
2605
  case "mobile_added_gk" /* MOBILE_ADDED_GK */:
2140
- this.trackMobileAddedGK(enhancedEvent);
2606
+ this.trackMobileAddedGK(enhancedEvent, adapterParams);
2141
2607
  break;
2142
2608
  case "address_selected_gk" /* ADDRESS_SELECTED_GK */:
2143
- this.trackAddressSelectedGK(enhancedEvent);
2609
+ this.trackAddressSelectedGK(enhancedEvent, adapterParams);
2144
2610
  break;
2145
2611
  case "address_completed_gk" /* ADDRESS_COMPLETED_GK */:
2146
- this.trackAddressCompletedGK(enhancedEvent);
2612
+ this.trackAddressCompletedGK(enhancedEvent, adapterParams);
2147
2613
  break;
2148
2614
  case "address_added_gk" /* ADDRESS_ADDED_GK */:
2149
- this.trackAddressAddedGK(enhancedEvent);
2615
+ this.trackAddressAddedGK(enhancedEvent, adapterParams);
2150
2616
  break;
2151
2617
  case "pin_code_added_gk" /* PIN_CODE_ADDED_GK */:
2152
- this.trackPinCodeAddedGK(enhancedEvent);
2618
+ this.trackPinCodeAddedGK(enhancedEvent, adapterParams);
2153
2619
  break;
2154
2620
  case "payment_method_selected_gk" /* PAYMENT_METHOD_SELECTED_GK */:
2155
- this.trackPaymentMethodSelectedGK(enhancedEvent);
2621
+ this.trackPaymentMethodSelectedGK(enhancedEvent, adapterParams);
2156
2622
  break;
2157
2623
  case "payment_completed_gk" /* PAYMENT_COMPLETED_GK */:
2158
- this.trackPaymentCompletedGK(enhancedEvent);
2624
+ this.trackPaymentCompletedGK(enhancedEvent, adapterParams);
2159
2625
  break;
2160
2626
  case "order_success" /* ORDER_SUCCESS */:
2161
- this.trackOrderSuccess(enhancedEvent);
2627
+ this.trackOrderSuccess(enhancedEvent, adapterParams);
2162
2628
  break;
2163
2629
  case "order_completed" /* ORDER_COMPLETED */:
2164
- this.trackOrderCompleted(enhancedEvent);
2630
+ this.trackOrderCompleted(enhancedEvent, adapterParams);
2165
2631
  break;
2166
2632
  case "cart_viewed" /* CART_VIEWED */:
2167
- this.trackCartViewed(enhancedEvent);
2633
+ this.trackCartViewed(enhancedEvent, adapterParams);
2168
2634
  break;
2169
2635
  case "checkout_started" /* CHECKOUT_STARTED */:
2170
- this.trackCheckoutStarted(enhancedEvent);
2636
+ this.trackCheckoutStarted(enhancedEvent, adapterParams);
2171
2637
  break;
2172
2638
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
2173
- this.trackCheckoutCompleted(enhancedEvent);
2639
+ this.trackCheckoutCompleted(enhancedEvent, adapterParams);
2174
2640
  break;
2175
2641
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
2176
- this.trackAddPaymentInfo(enhancedEvent);
2642
+ this.trackAddPaymentInfo(enhancedEvent, adapterParams);
2177
2643
  break;
2178
2644
  default:
2179
2645
  this.logger.debug("Event not supported", { eventType: event.type });
@@ -2188,171 +2654,233 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
2188
2654
  /**
2189
2655
  * Send event to GoKwik platform
2190
2656
  */
2191
- sendGoKwikEvent(eventName, eventData) {
2192
- this.logger.debug(`Sending ${eventName}`, { eventData });
2657
+ sendGoKwikEvent(eventName, eventData, adapterParams) {
2658
+ const customEventName = this.getEventName(adapterParams, eventName);
2659
+ const enhancedEventData = this.mergeEventData(eventData, adapterParams);
2660
+ this.logger.debug(`Sending ${customEventName}`, {
2661
+ eventData: enhancedEventData
2662
+ });
2193
2663
  if (typeof window !== "undefined" && window.gokwikSdk) {
2194
2664
  try {
2195
- window.gokwikSdk.track?.(eventName, eventData);
2196
- this.logger.debug(`${eventName} sent via SDK successfully`);
2665
+ window.gokwikSdk.track?.(customEventName, enhancedEventData);
2666
+ this.logger.debug(`${customEventName} sent via SDK successfully`);
2197
2667
  } catch (error) {
2198
2668
  this.logger.error(
2199
- `Error sending GoKwik event ${eventName} via SDK`,
2669
+ `Error sending GoKwik event ${customEventName} via SDK`,
2200
2670
  error
2201
2671
  );
2202
2672
  }
2203
2673
  } else {
2204
2674
  if (typeof window !== "undefined") {
2205
- const customEvent = new CustomEvent(`gokwik_${eventName}`, {
2206
- detail: eventData
2675
+ const customEvent = new CustomEvent(`gokwik_${customEventName}`, {
2676
+ detail: enhancedEventData
2207
2677
  });
2208
2678
  window.dispatchEvent(customEvent);
2209
- this.logger.debug(`${eventName} sent via custom event successfully`);
2679
+ this.logger.debug(
2680
+ `${customEventName} sent via custom event successfully`
2681
+ );
2210
2682
  }
2211
2683
  }
2212
2684
  }
2213
2685
  /**
2214
2686
  * Track started checkout GK event
2215
2687
  */
2216
- trackStartedCheckoutGK(event) {
2217
- this.sendGoKwikEvent("started_checkout", {
2218
- cart_value: event.cartValue,
2219
- currency: event.currency,
2220
- timestamp: event.timestamp || Date.now()
2221
- });
2688
+ trackStartedCheckoutGK(event, adapterParams) {
2689
+ this.sendGoKwikEvent(
2690
+ "started_checkout",
2691
+ {
2692
+ cart_value: event.cartValue,
2693
+ currency: event.currency,
2694
+ timestamp: event.timestamp || Date.now()
2695
+ },
2696
+ adapterParams
2697
+ );
2222
2698
  }
2223
2699
  /**
2224
2700
  * Track mobile added GK event
2225
2701
  */
2226
- trackMobileAddedGK(event) {
2227
- this.sendGoKwikEvent("mobile_added", {
2228
- mobile: event.mobile,
2229
- timestamp: event.timestamp || Date.now()
2230
- });
2702
+ trackMobileAddedGK(event, adapterParams) {
2703
+ this.sendGoKwikEvent(
2704
+ "mobile_added",
2705
+ {
2706
+ mobile: event.mobile,
2707
+ timestamp: event.timestamp || Date.now()
2708
+ },
2709
+ adapterParams
2710
+ );
2231
2711
  }
2232
2712
  /**
2233
2713
  * Track address selected GK event
2234
2714
  */
2235
- trackAddressSelectedGK(event) {
2236
- this.sendGoKwikEvent("address_selected", {
2237
- address_id: event.addressId,
2238
- timestamp: event.timestamp || Date.now()
2239
- });
2715
+ trackAddressSelectedGK(event, adapterParams) {
2716
+ this.sendGoKwikEvent(
2717
+ "address_selected",
2718
+ {
2719
+ address_id: event.addressId,
2720
+ timestamp: event.timestamp || Date.now()
2721
+ },
2722
+ adapterParams
2723
+ );
2240
2724
  }
2241
2725
  /**
2242
2726
  * Track address completed GK event
2243
2727
  */
2244
- trackAddressCompletedGK(event) {
2245
- this.sendGoKwikEvent("address_completed", {
2246
- address_id: event.addressId,
2247
- timestamp: event.timestamp || Date.now()
2248
- });
2728
+ trackAddressCompletedGK(event, adapterParams) {
2729
+ this.sendGoKwikEvent(
2730
+ "address_completed",
2731
+ {
2732
+ address_id: event.addressId,
2733
+ timestamp: event.timestamp || Date.now()
2734
+ },
2735
+ adapterParams
2736
+ );
2249
2737
  }
2250
2738
  /**
2251
2739
  * Track address added GK event
2252
2740
  */
2253
- trackAddressAddedGK(event) {
2254
- this.sendGoKwikEvent("address_added", {
2255
- address_id: event.addressId,
2256
- timestamp: event.timestamp || Date.now()
2257
- });
2741
+ trackAddressAddedGK(event, adapterParams) {
2742
+ this.sendGoKwikEvent(
2743
+ "address_added",
2744
+ {
2745
+ address_id: event.addressId,
2746
+ timestamp: event.timestamp || Date.now()
2747
+ },
2748
+ adapterParams
2749
+ );
2258
2750
  }
2259
2751
  /**
2260
2752
  * Track PIN code added GK event
2261
2753
  */
2262
- trackPinCodeAddedGK(event) {
2263
- this.sendGoKwikEvent("pin_code_added", {
2264
- pin_code: event.pinCode,
2265
- timestamp: event.timestamp || Date.now()
2266
- });
2754
+ trackPinCodeAddedGK(event, adapterParams) {
2755
+ this.sendGoKwikEvent(
2756
+ "pin_code_added",
2757
+ {
2758
+ pin_code: event.pinCode,
2759
+ timestamp: event.timestamp || Date.now()
2760
+ },
2761
+ adapterParams
2762
+ );
2267
2763
  }
2268
2764
  /**
2269
2765
  * Track payment method selected GK event
2270
2766
  */
2271
- trackPaymentMethodSelectedGK(event) {
2272
- this.sendGoKwikEvent("payment_method_selected", {
2273
- payment_method: event.paymentMethod,
2274
- timestamp: event.timestamp || Date.now()
2275
- });
2767
+ trackPaymentMethodSelectedGK(event, adapterParams) {
2768
+ this.sendGoKwikEvent(
2769
+ "payment_method_selected",
2770
+ {
2771
+ payment_method: event.paymentMethod,
2772
+ timestamp: event.timestamp || Date.now()
2773
+ },
2774
+ adapterParams
2775
+ );
2276
2776
  }
2277
2777
  /**
2278
2778
  * Track payment completed GK event
2279
2779
  */
2280
- trackPaymentCompletedGK(event) {
2281
- this.sendGoKwikEvent("payment_completed", {
2282
- amount: event.amount,
2283
- currency: event.currency,
2284
- timestamp: event.timestamp || Date.now()
2285
- });
2780
+ trackPaymentCompletedGK(event, adapterParams) {
2781
+ this.sendGoKwikEvent(
2782
+ "payment_completed",
2783
+ {
2784
+ amount: event.amount,
2785
+ currency: event.currency,
2786
+ timestamp: event.timestamp || Date.now()
2787
+ },
2788
+ adapterParams
2789
+ );
2286
2790
  }
2287
2791
  /**
2288
2792
  * Track order success event
2289
2793
  */
2290
- trackOrderSuccess(event) {
2291
- this.sendGoKwikEvent("order_success", {
2292
- order_id: event.orderId,
2293
- amount: event.amount,
2294
- currency: event.currency,
2295
- timestamp: event.timestamp || Date.now()
2296
- });
2794
+ trackOrderSuccess(event, adapterParams) {
2795
+ this.sendGoKwikEvent(
2796
+ "order_success",
2797
+ {
2798
+ order_id: event.orderId,
2799
+ amount: event.amount,
2800
+ currency: event.currency,
2801
+ timestamp: event.timestamp || Date.now()
2802
+ },
2803
+ adapterParams
2804
+ );
2297
2805
  }
2298
2806
  /**
2299
2807
  * Track order completed event
2300
2808
  */
2301
- trackOrderCompleted(event) {
2302
- this.sendGoKwikEvent("order_completed", {
2303
- order_id: event.orderId,
2304
- amount: event.amount,
2305
- currency: event.currency,
2306
- timestamp: event.timestamp || Date.now()
2307
- });
2809
+ trackOrderCompleted(event, adapterParams) {
2810
+ this.sendGoKwikEvent(
2811
+ "order_completed",
2812
+ {
2813
+ order_id: event.orderId,
2814
+ amount: event.amount,
2815
+ currency: event.currency,
2816
+ timestamp: event.timestamp || Date.now()
2817
+ },
2818
+ adapterParams
2819
+ );
2308
2820
  }
2309
2821
  /**
2310
2822
  * Track cart viewed event
2311
2823
  */
2312
- trackCartViewed(event) {
2313
- this.sendGoKwikEvent("cart_viewed", {
2314
- cart_id: event.cartId,
2315
- products: event.products,
2316
- timestamp: event.timestamp || Date.now()
2317
- });
2824
+ trackCartViewed(event, adapterParams) {
2825
+ this.sendGoKwikEvent(
2826
+ "cart_viewed",
2827
+ {
2828
+ cart_id: event.cartId,
2829
+ products: event.products,
2830
+ timestamp: event.timestamp || Date.now()
2831
+ },
2832
+ adapterParams
2833
+ );
2318
2834
  }
2319
2835
  /**
2320
2836
  * Track checkout started event
2321
2837
  */
2322
- trackCheckoutStarted(event) {
2323
- this.sendGoKwikEvent("checkout_started", {
2324
- cart_value: event.cartValue,
2325
- currency: event.currency,
2326
- item_count: event.itemCount,
2327
- items: event.items,
2328
- timestamp: event.timestamp || Date.now()
2329
- });
2838
+ trackCheckoutStarted(event, adapterParams) {
2839
+ this.sendGoKwikEvent(
2840
+ "checkout_started",
2841
+ {
2842
+ cart_value: event.cartValue,
2843
+ currency: event.currency,
2844
+ item_count: event.itemCount,
2845
+ items: event.items,
2846
+ timestamp: event.timestamp || Date.now()
2847
+ },
2848
+ adapterParams
2849
+ );
2330
2850
  }
2331
2851
  /**
2332
2852
  * Track checkout completed event
2333
2853
  */
2334
- trackCheckoutCompleted(event) {
2335
- this.sendGoKwikEvent("checkout_completed", {
2336
- order_id: event.orderId,
2337
- cart_value: event.cartValue,
2338
- currency: event.currency,
2339
- item_count: event.itemCount,
2340
- items: event.items,
2341
- timestamp: event.timestamp || Date.now()
2342
- });
2854
+ trackCheckoutCompleted(event, adapterParams) {
2855
+ this.sendGoKwikEvent(
2856
+ "checkout_completed",
2857
+ {
2858
+ order_id: event.orderId,
2859
+ cart_value: event.cartValue,
2860
+ currency: event.currency,
2861
+ item_count: event.itemCount,
2862
+ items: event.items,
2863
+ timestamp: event.timestamp || Date.now()
2864
+ },
2865
+ adapterParams
2866
+ );
2343
2867
  }
2344
2868
  /**
2345
2869
  * Track add payment info event
2346
2870
  */
2347
- trackAddPaymentInfo(event) {
2348
- this.sendGoKwikEvent("add_payment_info", {
2349
- cart_value: event.cartValue,
2350
- currency: event.currency,
2351
- item_count: event.itemCount,
2352
- payment_type: event.paymentType,
2353
- items: event.items,
2354
- timestamp: event.timestamp || Date.now()
2355
- });
2871
+ trackAddPaymentInfo(event, adapterParams) {
2872
+ this.sendGoKwikEvent(
2873
+ "add_payment_info",
2874
+ {
2875
+ cart_value: event.cartValue,
2876
+ currency: event.currency,
2877
+ item_count: event.itemCount,
2878
+ payment_type: event.paymentType,
2879
+ items: event.items,
2880
+ timestamp: event.timestamp || Date.now()
2881
+ },
2882
+ adapterParams
2883
+ );
2356
2884
  }
2357
2885
  };
2358
2886
 
@@ -2365,11 +2893,10 @@ export {
2365
2893
  GoogleAdapter,
2366
2894
  EventNames,
2367
2895
  DEFAULT_CURRENCY,
2368
- HARDCODED_HANDLE,
2369
2896
  MoengageAdapter,
2370
2897
  PostHogAdapter,
2371
2898
  ShopifyAdapter,
2372
2899
  KwikPassAdapter,
2373
2900
  KwikCheckoutAdapter
2374
2901
  };
2375
- //# sourceMappingURL=chunk-4MZH5OLR.mjs.map
2902
+ //# sourceMappingURL=chunk-NJQ2MOM2.mjs.map