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
@@ -32,9 +32,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
32
32
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
33
 
34
34
  // src/events/publisher.ts
35
- function publishEvent(event) {
35
+ function publishEvent(event, params) {
36
36
  try {
37
- eventPublisher.publish(event);
37
+ eventPublisher.publish(event, params);
38
38
  } catch (error) {
39
39
  console.error("Error in publishEvent helper:", error);
40
40
  }
@@ -75,19 +75,24 @@ var init_publisher = __esm({
75
75
  /**
76
76
  * Publish an event to all subscribers
77
77
  * @param event The event to publish
78
+ * @param params Optional adapter-specific parameters
78
79
  */
79
- publish(event) {
80
+ publish(event, params) {
80
81
  try {
81
82
  console.log("EventPublisher: Received event", {
82
83
  type: event.type,
83
- data: event
84
+ data: event,
85
+ params
84
86
  });
85
87
  const eventWithTimestamp = !event.timestamp ? { ...event, timestamp: Date.now() } : event;
86
- console.log("EventPublisher: Number of subscribers:", this.subscribers.length);
88
+ console.log(
89
+ "EventPublisher: Number of subscribers:",
90
+ this.subscribers.length
91
+ );
87
92
  for (const subscriber of this.subscribers) {
88
93
  try {
89
94
  console.log("EventPublisher: Notifying subscriber");
90
- subscriber(eventWithTimestamp);
95
+ subscriber(eventWithTimestamp, params);
91
96
  console.log("EventPublisher: Subscriber notified successfully");
92
97
  } catch (error) {
93
98
  console.error("EventPublisher: Error in subscriber:", error);
@@ -196,18 +201,19 @@ var init_subscriber = __esm({
196
201
  /**
197
202
  * Handle an event by forwarding it to all enabled adapters
198
203
  * @param event The event to handle
204
+ * @param params Optional adapter-specific parameters
199
205
  */
200
- handleEvent(event) {
201
- console.log("Handling event:", event.type);
206
+ handleEvent(event, params) {
207
+ console.log("Handling event:", event.type, "with params:", params);
202
208
  if (!this.initialized) {
203
209
  console.log("Subscriber not initialized, queueing event");
204
- this.eventQueue.push(event);
210
+ this.eventQueue.push({ event, params });
205
211
  return;
206
212
  }
207
213
  for (const adapter of this.adapters) {
208
214
  if (adapter.isEnabled()) {
209
215
  console.log(`Forwarding event to adapter: ${adapter.name}`);
210
- adapter.trackEvent(event).catch((error) => {
216
+ adapter.trackEvent(event, params).catch((error) => {
211
217
  console.error(
212
218
  `Error tracking event in adapter "${adapter.name}":`,
213
219
  error
@@ -226,8 +232,8 @@ var init_subscriber = __esm({
226
232
  return;
227
233
  }
228
234
  console.log(`Processing ${this.eventQueue.length} queued events.`);
229
- for (const event of this.eventQueue) {
230
- this.handleEvent(event);
235
+ for (const { event, params } of this.eventQueue) {
236
+ this.handleEvent(event, params);
231
237
  }
232
238
  this.eventQueue = [];
233
239
  }
@@ -259,7 +265,6 @@ __export(events_exports, {
259
265
  DEFAULT_CURRENCY: () => DEFAULT_CURRENCY,
260
266
  EventNames: () => EventNames,
261
267
  EventType: () => EventType,
262
- HARDCODED_HANDLE: () => HARDCODED_HANDLE,
263
268
  eventPublisher: () => eventPublisher,
264
269
  eventSubscriber: () => eventSubscriber,
265
270
  initTracking: () => initTracking,
@@ -271,7 +276,6 @@ module.exports = __toCommonJS(events_exports);
271
276
  // src/types.ts
272
277
  var EventType = /* @__PURE__ */ ((EventType2) => {
273
278
  EventType2["PRODUCT_VIEW"] = "product_view";
274
- EventType2["STARTED_ORDER"] = "started_order";
275
279
  EventType2["PAGE_VIEW"] = "page_view";
276
280
  EventType2["BUTTON_CLICK"] = "button_click";
277
281
  EventType2["FORM_SUBMISSION"] = "form_submission";
@@ -284,11 +288,6 @@ var EventType = /* @__PURE__ */ ((EventType2) => {
284
288
  EventType2["CHECKOUT_STARTED"] = "checkout_started";
285
289
  EventType2["CHECKOUT_COMPLETED"] = "checkout_completed";
286
290
  EventType2["SEARCH"] = "search";
287
- EventType2["CART_PAGE_LAND"] = "cart_page_land";
288
- EventType2["CLOSE_CART"] = "close_cart";
289
- EventType2["QUANTITY_CHANGE"] = "quantity_change";
290
- EventType2["FILTER_APPLIED"] = "filter_applied";
291
- EventType2["NEWSLETTER_SUBSCRIPTION"] = "newsletter_subscription";
292
291
  EventType2["USER_SIGNUP"] = "user_signup";
293
292
  EventType2["USER_LOGIN"] = "user_login";
294
293
  EventType2["CUSTOM"] = "custom";
@@ -299,25 +298,11 @@ var EventType = /* @__PURE__ */ ((EventType2) => {
299
298
  EventType2["FORM_START"] = "form_start";
300
299
  EventType2["ADD_PAYMENT_INFO"] = "add_payment_info";
301
300
  EventType2["CART_VIEWED"] = "cart_viewed";
302
- EventType2["PAGES_SCREENS_PER_SESSION"] = "pages_screens_per_session";
303
301
  EventType2["VIEW_CONTENT"] = "view_content";
304
302
  EventType2["PURCHASE"] = "purchase";
305
303
  EventType2["VIEW_SEARCH_RESULTS"] = "view_search_results";
306
304
  EventType2["ORDER_PLACED"] = "order_placed";
307
305
  EventType2["BEGIN_CHECKOUT"] = "begin_checkout";
308
- EventType2["ITEM_PURCHASED"] = "item_purchased";
309
- EventType2["UPDATE_CART"] = "update_cart";
310
- EventType2["CUSTOMER_REGISTERED"] = "customer_registered";
311
- EventType2["CUSTOMER_LOGGED_IN"] = "customer_logged_in";
312
- EventType2["SHOPIFY_CHECKOUT_UPDATED"] = "shopify_checkout_updated";
313
- EventType2["SHOPIFY_ABANDONED_CHECKOUT"] = "shopify_abandoned_checkout";
314
- EventType2["SHOPIFY_ORDER_FULFILLED"] = "shopify_order_fulfilled";
315
- EventType2["SHOPIFY_CHECKOUT_STARTED"] = "shopify_checkout_started";
316
- EventType2["SHOPIFY_ADD_TO_CART"] = "shopify_add_to_cart";
317
- EventType2["SHOPIFY_REMOVED_FROM_CART"] = "shopify_removed_from_cart";
318
- EventType2["SHOPIFY_UPDATE_CART"] = "shopify_update_cart";
319
- EventType2["SPINFORM_RESULT"] = "spinform_result";
320
- EventType2["COUPON_COPIED"] = "coupon_copied";
321
306
  EventType2["STARTED_CHECKOUT_GK"] = "started_checkout_gk";
322
307
  EventType2["MOBILE_ADDED_GK"] = "mobile_added_gk";
323
308
  EventType2["ADDRESS_SELECTED_GK"] = "address_selected_gk";
@@ -328,16 +313,6 @@ var EventType = /* @__PURE__ */ ((EventType2) => {
328
313
  EventType2["ORDER_COMPLETED"] = "order_completed";
329
314
  EventType2["PIN_CODE_ADDED_GK"] = "pin_code_added_gk";
330
315
  EventType2["ADDRESS_ADDED_GK"] = "address_added_gk";
331
- EventType2["KP_MP_PHONE_NUMBER_LOGGED_IN"] = "kp_mp_phone_number_logged_in";
332
- EventType2["KP_PHONE_NUMBER_LOGGED_IN"] = "kp_phone_number_logged_in";
333
- EventType2["KP_MP_SHOPIFY_LOGGED_IN"] = "kp_mp_shopify_logged_in";
334
- EventType2["KP_MP_SUCCESSFULLY_LOGGED_OUT"] = "kp_mp_successfully_logged_out";
335
- EventType2["KP_WHATSAPP_LOGGED_IN"] = "kp_whatsapp_logged_in";
336
- EventType2["KP_MP_TRUECALLER_LOGGED_IN"] = "kp_mp_truecaller_logged_in";
337
- EventType2["KP_MP_WHATSAPP_LOGGED_IN"] = "kp_mp_whatsapp_logged_in";
338
- EventType2["KP_TRUECALLER_LOGGED_IN"] = "kp_truecaller_logged_in";
339
- EventType2["KP_SHOPIFY_LOGGED_IN"] = "kp_shopify_logged_in";
340
- EventType2["KP_SUCCESSFULLY_LOGGED_OUT"] = "kp_successfully_logged_out";
341
316
  return EventType2;
342
317
  })(EventType || {});
343
318
 
@@ -346,7 +321,14 @@ init_publisher();
346
321
  init_subscriber();
347
322
 
348
323
  // src/logger/index.ts
349
- var import_pino = __toESM(require("pino"));
324
+ var LOG_LEVELS = {
325
+ trace: 10,
326
+ debug: 20,
327
+ info: 30,
328
+ warn: 40,
329
+ error: 50,
330
+ fatal: 60
331
+ };
350
332
  var NoOpLogger = class _NoOpLogger {
351
333
  trace() {
352
334
  }
@@ -364,92 +346,109 @@ var NoOpLogger = class _NoOpLogger {
364
346
  return new _NoOpLogger();
365
347
  }
366
348
  };
367
- var PinoLogger = class _PinoLogger {
368
- constructor(logger2) {
369
- this.logger = logger2;
349
+ var UniversalLogger = class _UniversalLogger {
350
+ constructor(config, bindings = {}) {
351
+ this.config = config;
352
+ this.bindings = bindings;
353
+ }
354
+ shouldLog(level) {
355
+ return LOG_LEVELS[level] >= LOG_LEVELS[this.config.level];
356
+ }
357
+ formatMessage(level, message, args, error) {
358
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
359
+ const name = this.config.name;
360
+ let logMessage = this.config.prettyPrint ? `[${timestamp}] ${level.toUpperCase()} [${name}]: ${message}` : JSON.stringify({
361
+ timestamp,
362
+ level,
363
+ name,
364
+ message,
365
+ ...this.bindings,
366
+ ...args.length > 0 && { args },
367
+ ...error && {
368
+ error: { message: error.message, stack: error.stack }
369
+ }
370
+ });
371
+ if (this.config.prettyPrint && args.length > 0) {
372
+ logMessage += ` ${args.map(
373
+ (arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
374
+ ).join(" ")}`;
375
+ }
376
+ if (this.config.prettyPrint && error) {
377
+ logMessage += ` Error: ${error.message}`;
378
+ if (error.stack) {
379
+ logMessage += `
380
+ ${error.stack}`;
381
+ }
382
+ }
383
+ return this.redactSensitiveData(logMessage);
384
+ }
385
+ redactSensitiveData(message) {
386
+ let redactedMessage = message;
387
+ for (const field of this.config.redact) {
388
+ const regex = new RegExp(`"${field}"\\s*:\\s*"[^"]*"`, "gi");
389
+ redactedMessage = redactedMessage.replace(
390
+ regex,
391
+ `"${field}":"[REDACTED]"`
392
+ );
393
+ }
394
+ return redactedMessage;
395
+ }
396
+ log(level, message, args, error) {
397
+ if (!this.shouldLog(level)) return;
398
+ const formattedMessage = this.formatMessage(level, message, args, error);
399
+ switch (level) {
400
+ case "trace":
401
+ console.trace(formattedMessage);
402
+ break;
403
+ case "debug":
404
+ console.debug(formattedMessage);
405
+ break;
406
+ case "info":
407
+ console.info(formattedMessage);
408
+ break;
409
+ case "warn":
410
+ console.warn(formattedMessage);
411
+ break;
412
+ case "error":
413
+ case "fatal":
414
+ console.error(formattedMessage);
415
+ break;
416
+ }
370
417
  }
371
418
  trace(message, ...args) {
372
- this.logger.trace({ args }, message);
419
+ this.log("trace", message, args);
373
420
  }
374
421
  debug(message, ...args) {
375
- this.logger.debug({ args }, message);
422
+ this.log("debug", message, args);
376
423
  }
377
424
  info(message, ...args) {
378
- this.logger.info({ args }, message);
425
+ this.log("info", message, args);
379
426
  }
380
427
  warn(message, ...args) {
381
- this.logger.warn({ args }, message);
428
+ this.log("warn", message, args);
382
429
  }
383
430
  error(message, error, ...args) {
384
- this.logger.error({ error, args }, message);
431
+ this.log("error", message, args, error);
385
432
  }
386
433
  fatal(message, error, ...args) {
387
- this.logger.fatal({ error, args }, message);
434
+ this.log("fatal", message, args, error);
388
435
  }
389
436
  child(bindings) {
390
- return new _PinoLogger(this.logger.child(bindings));
437
+ return new _UniversalLogger(this.config, { ...this.bindings, ...bindings });
391
438
  }
392
439
  };
393
440
  function createLogger(config = {}) {
394
- const {
395
- level = "info",
396
- enabled = true,
397
- name = "@shopkit/analytics",
398
- prettyPrint = false,
399
- redact = []
400
- } = config;
401
- if (!enabled) {
402
- return new NoOpLogger();
403
- }
404
- const pinoConfig = {
405
- name,
406
- level,
407
- redact,
408
- browser: {
409
- asObject: true,
410
- serialize: true,
411
- write: {
412
- trace: (o) => console.trace(formatBrowserLog(o)),
413
- debug: (o) => console.debug(formatBrowserLog(o)),
414
- info: (o) => console.info(formatBrowserLog(o)),
415
- warn: (o) => console.warn(formatBrowserLog(o)),
416
- error: (o) => console.error(formatBrowserLog(o)),
417
- fatal: (o) => console.error(formatBrowserLog(o))
418
- }
419
- }
441
+ const fullConfig = {
442
+ level: config.level || "info",
443
+ enabled: config.enabled !== false,
444
+ name: config.name || "@shopkit/analytics",
445
+ prettyPrint: config.prettyPrint || false,
446
+ redact: config.redact || []
420
447
  };
421
- if (prettyPrint && typeof window === "undefined") {
422
- pinoConfig.transport = {
423
- target: "pino-pretty",
424
- options: {
425
- colorize: true,
426
- translateTime: "HH:MM:ss Z",
427
- ignore: "pid,hostname"
428
- }
429
- };
430
- }
431
- const pinoLogger = (0, import_pino.default)(pinoConfig);
432
- return new PinoLogger(pinoLogger);
433
- }
434
- function formatBrowserLog(logObj) {
435
- const { level, time, msg, name, args, error, ...rest } = logObj;
436
- let message = `[${name}] ${msg}`;
437
- if (args && args.length > 0) {
438
- message += ` ${args.map(
439
- (arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
440
- ).join(" ")}`;
441
- }
442
- if (error) {
443
- message += ` Error: ${error.message}`;
444
- if (error.stack) {
445
- message += `
446
- ${error.stack}`;
447
- }
448
- }
449
- if (Object.keys(rest).length > 0) {
450
- message += ` ${JSON.stringify(rest)}`;
448
+ if (!fullConfig.enabled) {
449
+ return new NoOpLogger();
451
450
  }
452
- return message;
451
+ return new UniversalLogger(fullConfig);
453
452
  }
454
453
  var logger = createLogger({
455
454
  enabled: true,
@@ -461,6 +460,38 @@ function createAdapterLogger(adapterName, config = {}) {
461
460
  return baseLogger.child({ adapter: adapterName });
462
461
  }
463
462
 
463
+ // src/experiment/constants.ts
464
+ var PRIMA_EXPERIMENT_COOKIES = {
465
+ HOME: "_prima_pr_ab_home",
466
+ COLLECTION: "_prima_pr_ab_collection",
467
+ PRODUCT: "_prima_pr_ab_product"
468
+ };
469
+ var PRIMA_EXPERIMENT_COOKIE_NAMES = Object.values(
470
+ PRIMA_EXPERIMENT_COOKIES
471
+ );
472
+
473
+ // src/experiment/experiment-tracker.ts
474
+ function getCookie(name) {
475
+ if (typeof document === "undefined") return null;
476
+ const value = `; ${document.cookie}`;
477
+ const parts = value.split(`; ${name}=`);
478
+ if (parts.length === 2) {
479
+ return parts.pop()?.split(";").shift() || null;
480
+ }
481
+ return null;
482
+ }
483
+ function getExperimentParams() {
484
+ return {
485
+ [PRIMA_EXPERIMENT_COOKIES.HOME]: getCookie(PRIMA_EXPERIMENT_COOKIES.HOME),
486
+ [PRIMA_EXPERIMENT_COOKIES.COLLECTION]: getCookie(
487
+ PRIMA_EXPERIMENT_COOKIES.COLLECTION
488
+ ),
489
+ [PRIMA_EXPERIMENT_COOKIES.PRODUCT]: getCookie(
490
+ PRIMA_EXPERIMENT_COOKIES.PRODUCT
491
+ )
492
+ };
493
+ }
494
+
464
495
  // src/adapters/base-adapter.ts
465
496
  var BaseAdapter = class {
466
497
  /**
@@ -498,6 +529,38 @@ var BaseAdapter = class {
498
529
  isEnabled() {
499
530
  return this.initialized;
500
531
  }
532
+ /**
533
+ * Extract adapter-specific parameters for this adapter
534
+ * @param params The adapter parameters object
535
+ * @returns Adapter-specific parameters or empty object
536
+ */
537
+ getAdapterParams(params) {
538
+ return params?.[this.name] || {};
539
+ }
540
+ /**
541
+ * Get custom event name or fall back to default
542
+ * @param params The adapter parameters object
543
+ * @param defaultName The default event name to use
544
+ * @returns Custom event name or default
545
+ */
546
+ getEventName(params, defaultName) {
547
+ const adapterParams = this.getAdapterParams(params);
548
+ return adapterParams.event_name || defaultName;
549
+ }
550
+ /**
551
+ * Merge standard event data with adapter-specific parameters
552
+ * @param params The adapter parameters object
553
+ * @param standardData The standard event data
554
+ * @returns Merged data with adapter-specific overrides
555
+ */
556
+ mergeEventData(standardData, params) {
557
+ const adapterParams = this.getAdapterParams(params);
558
+ const { event_name, ...customParams } = adapterParams;
559
+ return {
560
+ ...standardData,
561
+ ...customParams
562
+ };
563
+ }
501
564
  /**
502
565
  * Get a configuration value
503
566
  * @param key The configuration key
@@ -514,6 +577,21 @@ var BaseAdapter = class {
514
577
  getAffiliateParams() {
515
578
  return null;
516
579
  }
580
+ /**
581
+ * Get experiment parameters from cookies
582
+ * @returns Experiment parameters
583
+ */
584
+ getExperimentParams() {
585
+ try {
586
+ return getExperimentParams();
587
+ } catch (error) {
588
+ return {
589
+ _prima_pr_ab_home: null,
590
+ _prima_pr_ab_collection: null,
591
+ _prima_pr_ab_product: null
592
+ };
593
+ }
594
+ }
517
595
  /**
518
596
  * Enhance event parameters with affiliate data
519
597
  * @param params The original parameters
@@ -528,8 +606,71 @@ var BaseAdapter = class {
528
606
  ...affiliateParams
529
607
  };
530
608
  }
609
+ /**
610
+ * Enhance event parameters with experiment data
611
+ * @param params The original parameters
612
+ * @returns Parameters enhanced with experiment data
613
+ */
614
+ enhanceWithExperimentParams(params) {
615
+ const experimentParams = this.getExperimentParams();
616
+ return {
617
+ ...params,
618
+ experiment: experimentParams
619
+ };
620
+ }
531
621
  };
532
622
 
623
+ // src/utils/event-id.ts
624
+ function generateEventId(eventType) {
625
+ const timestamp = Date.now();
626
+ const randomString = Math.random().toString(36).substring(2, 8);
627
+ return `${timestamp}_${randomString}_${eventType}`;
628
+ }
629
+ function getBrowserInfo() {
630
+ if (typeof window === "undefined") {
631
+ return {};
632
+ }
633
+ const userAgent = navigator.userAgent;
634
+ const fbc = getFacebookClickId();
635
+ const fbp = getFacebookBrowserId();
636
+ return {
637
+ clientUserAgent: userAgent,
638
+ fbc,
639
+ fbp
640
+ };
641
+ }
642
+ function getFacebookClickId() {
643
+ if (typeof window === "undefined") {
644
+ return void 0;
645
+ }
646
+ const urlParams = new URLSearchParams(window.location.search);
647
+ const fbclid = urlParams.get("fbclid");
648
+ if (fbclid) {
649
+ return `fb.1.${Date.now()}.${fbclid}`;
650
+ }
651
+ const cookies = document.cookie.split(";");
652
+ for (const cookie of cookies) {
653
+ const [name, value] = cookie.trim().split("=");
654
+ if (name === "_fbc") {
655
+ return value;
656
+ }
657
+ }
658
+ return void 0;
659
+ }
660
+ function getFacebookBrowserId() {
661
+ if (typeof window === "undefined") {
662
+ return void 0;
663
+ }
664
+ const cookies = document.cookie.split(";");
665
+ for (const cookie of cookies) {
666
+ const [name, value] = cookie.trim().split("=");
667
+ if (name === "_fbp") {
668
+ return value;
669
+ }
670
+ }
671
+ return void 0;
672
+ }
673
+
533
674
  // src/adapters/pixel-adapter.ts
534
675
  var PixelAdapter = class extends BaseAdapter {
535
676
  constructor(config) {
@@ -555,18 +696,34 @@ var PixelAdapter = class extends BaseAdapter {
555
696
  );
556
697
  return;
557
698
  }
558
- const pixelId = this.getConfig("pixelId");
559
699
  this.logger.info("Successfully initialized", { pixelId: "***" });
560
700
  this.initialized = true;
561
701
  }
562
702
  /**
563
703
  * Track an event with Facebook Pixel
564
704
  * @param event The event to track
705
+ * @param adapterParams Optional adapter-specific parameters
706
+ */
707
+ async trackEvent(event, adapterParams) {
708
+ if (!event.eventId) {
709
+ event.eventId = generateEventId(event.type);
710
+ }
711
+ this.logger.debug("Tracking event", {
712
+ eventType: event.type,
713
+ eventId: event.eventId
714
+ });
715
+ await this.trackClientSide(event, adapterParams);
716
+ if (this.getConfig("enableCAPI", true)) {
717
+ await this.trackServerSide(event);
718
+ }
719
+ }
720
+ /**
721
+ * Track event on client-side (browser pixel)
565
722
  */
566
- async trackEvent(event) {
723
+ async trackClientSide(event, adapterParams) {
567
724
  if (!this.initialized || typeof window === "undefined" || !window.fbq) {
568
725
  this.logger.warn(
569
- "Cannot track event, adapter not initialized or fbq not available",
726
+ "Cannot track client-side event, adapter not initialized or fbq not available",
570
727
  {
571
728
  eventType: event.type,
572
729
  initialized: this.initialized,
@@ -576,55 +733,96 @@ var PixelAdapter = class extends BaseAdapter {
576
733
  );
577
734
  return;
578
735
  }
579
- this.logger.debug("Tracking event", { eventType: event.type });
580
736
  switch (event.type) {
581
737
  case "page_view" /* PAGE_VIEW */:
582
- this.trackPageView(event);
738
+ this.trackPageView(event, adapterParams);
583
739
  break;
584
740
  case "view_content" /* VIEW_CONTENT */:
585
- this.trackViewContent(event);
741
+ this.trackViewContent(event, adapterParams);
586
742
  break;
587
743
  case "product_view" /* PRODUCT_VIEW */:
588
- this.trackProductView(event);
744
+ this.trackProductView(event, adapterParams);
589
745
  break;
590
746
  case "add_to_cart" /* ADD_TO_CART */:
591
- this.trackAddToCart(event);
747
+ this.trackAddToCart(event, adapterParams);
592
748
  break;
593
749
  case "checkout_started" /* CHECKOUT_STARTED */:
594
- this.trackCheckoutStarted(event);
750
+ this.trackCheckoutStarted(event, adapterParams);
595
751
  break;
596
752
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
597
- this.trackCheckoutCompleted(event);
753
+ this.trackCheckoutCompleted(event, adapterParams);
598
754
  break;
599
755
  case "purchase" /* PURCHASE */:
600
- this.trackPurchase(event);
756
+ this.trackPurchase(event, adapterParams);
601
757
  break;
602
758
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
603
- this.trackAddPaymentInfo(event);
759
+ this.trackAddPaymentInfo(event, adapterParams);
604
760
  break;
605
761
  case "search" /* SEARCH */:
606
- this.trackSearch(event);
762
+ this.trackSearch(event, adapterParams);
607
763
  break;
608
764
  default:
609
765
  this.logger.debug("Unhandled event type", { eventType: event.type });
610
766
  break;
611
767
  }
612
768
  }
769
+ /**
770
+ * Track event on server-side (CAPI) as backup
771
+ */
772
+ async trackServerSide(event) {
773
+ try {
774
+ const browserInfo = getBrowserInfo();
775
+ const payload = {
776
+ events: [event],
777
+ userInfo: browserInfo
778
+ };
779
+ const response = await fetch("/api/events", {
780
+ method: "POST",
781
+ headers: {
782
+ "Content-Type": "application/json"
783
+ },
784
+ body: JSON.stringify(payload)
785
+ });
786
+ if (!response.ok) {
787
+ throw new Error(`Server-side tracking failed: ${response.status}`);
788
+ }
789
+ this.logger.debug(
790
+ `FB Pixel: Server-side backup sent for event ${event.type}`
791
+ );
792
+ } catch (error) {
793
+ this.logger.error(
794
+ `FB Pixel: Server-side backup failed for event ${event.type}: ${error instanceof Error ? error.message : String(error)}`
795
+ );
796
+ }
797
+ }
613
798
  /**
614
799
  * Track a page view event
615
800
  * @param event The page view event
616
801
  */
617
- trackPageView(event) {
618
- const params = this.enhanceWithAffiliateParams({});
619
- window.fbq?.("track", "PageView", params);
620
- this.logger.debug("PageView event tracked", { params });
802
+ trackPageView(event, adapterParams) {
803
+ const eventName = this.getEventName(adapterParams, "PageView");
804
+ const affiliateParams = this.enhanceWithAffiliateParams({});
805
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
806
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
807
+ if (event.eventId) {
808
+ window.fbq?.("track", eventName, enhancedParams, {
809
+ eventID: event.eventId
810
+ });
811
+ } else {
812
+ window.fbq?.("track", eventName, enhancedParams);
813
+ }
814
+ this.logger.debug("PageView event tracked", {
815
+ eventName,
816
+ params: enhancedParams
817
+ });
621
818
  }
622
819
  /**
623
820
  * Track a product view event
624
821
  * @param event The product view event
625
822
  */
626
- trackProductView(event) {
627
- const params = {
823
+ trackProductView(event, adapterParams) {
824
+ const eventName = this.getEventName(adapterParams, "ViewContent");
825
+ const baseParams = {
628
826
  content_type: "product_group",
629
827
  content_ids: [event.productId],
630
828
  content_name: event.productName,
@@ -632,34 +830,56 @@ var PixelAdapter = class extends BaseAdapter {
632
830
  value: event.price,
633
831
  currency: event.currency || "INR"
634
832
  };
635
- window.fbq?.(
636
- "track",
637
- "ViewContent",
638
- this.enhanceWithAffiliateParams(params)
639
- );
833
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
834
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
835
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
836
+ if (event.eventId) {
837
+ window.fbq?.("track", eventName, enhancedParams, {
838
+ eventID: event.eventId
839
+ });
840
+ } else {
841
+ window.fbq?.("track", eventName, enhancedParams);
842
+ }
843
+ this.logger.debug("ProductView event tracked", {
844
+ eventName,
845
+ params: enhancedParams
846
+ });
640
847
  }
641
848
  /**
642
849
  * Track an add to cart event
643
850
  * @param event The add to cart event
644
851
  */
645
- trackAddToCart(event) {
646
- const params = {
852
+ trackAddToCart(event, adapterParams) {
853
+ const eventName = this.getEventName(adapterParams, "AddToCart");
854
+ const baseParams = {
647
855
  content_type: "product_group",
648
856
  content_ids: [event.productId],
649
857
  content_name: event.productName,
650
858
  value: event.price,
651
859
  currency: event.currency || "INR"
652
860
  };
653
- const enhancedParams = this.enhanceWithAffiliateParams(params);
654
- window.fbq?.("track", "AddToCart", enhancedParams);
655
- this.logger.debug("AddToCart event tracked", { params: enhancedParams });
861
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
862
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
863
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
864
+ if (event.eventId) {
865
+ window.fbq?.("track", eventName, enhancedParams, {
866
+ eventID: event.eventId
867
+ });
868
+ } else {
869
+ window.fbq?.("track", eventName, enhancedParams);
870
+ }
871
+ this.logger.debug("AddToCart event tracked", {
872
+ eventName,
873
+ params: enhancedParams
874
+ });
656
875
  }
657
876
  /**
658
877
  * Track a checkout started event
659
878
  * @param event The checkout started event
660
879
  */
661
- trackCheckoutStarted(event) {
662
- const params = {
880
+ trackCheckoutStarted(event, adapterParams) {
881
+ const eventName = this.getEventName(adapterParams, "InitiateCheckout");
882
+ const baseParams = {
663
883
  content_ids: event.items.map((item) => item.productId),
664
884
  content_type: "product_group",
665
885
  value: event.cartValue,
@@ -671,18 +891,28 @@ var PixelAdapter = class extends BaseAdapter {
671
891
  item_price: item.price
672
892
  }))
673
893
  };
674
- window.fbq?.(
675
- "track",
676
- "InitiateCheckout",
677
- this.enhanceWithAffiliateParams(params)
678
- );
894
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
895
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
896
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
897
+ if (event.eventId) {
898
+ window.fbq?.("track", eventName, enhancedParams, {
899
+ eventID: event.eventId
900
+ });
901
+ } else {
902
+ window.fbq?.("track", eventName, enhancedParams);
903
+ }
904
+ this.logger.debug("CheckoutStarted event tracked", {
905
+ eventName,
906
+ params: enhancedParams
907
+ });
679
908
  }
680
909
  /**
681
910
  * Track a checkout completed event
682
911
  * @param event The checkout completed event
683
912
  */
684
- trackCheckoutCompleted(event) {
685
- const params = {
913
+ trackCheckoutCompleted(event, adapterParams) {
914
+ const eventName = this.getEventName(adapterParams, "Purchase");
915
+ const baseParams = {
686
916
  value: event.cartValue,
687
917
  currency: event.currency || "INR",
688
918
  content_type: "product_group",
@@ -694,26 +924,54 @@ var PixelAdapter = class extends BaseAdapter {
694
924
  item_price: item.price
695
925
  }))
696
926
  };
697
- window.fbq?.("track", "Purchase", this.enhanceWithAffiliateParams(params));
927
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
928
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
929
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
930
+ if (event.eventId) {
931
+ window.fbq?.("track", eventName, enhancedParams, {
932
+ eventID: event.eventId
933
+ });
934
+ } else {
935
+ window.fbq?.("track", eventName, enhancedParams);
936
+ }
937
+ this.logger.debug("CheckoutCompleted event tracked", {
938
+ eventName,
939
+ params: enhancedParams
940
+ });
698
941
  }
699
942
  /**
700
943
  * Track a search event
701
944
  * @param event The search event
702
945
  */
703
- trackSearch(event) {
704
- const params = {
946
+ trackSearch(event, adapterParams) {
947
+ const eventName = this.getEventName(adapterParams, "Search");
948
+ const baseParams = {
705
949
  search_string: event.searchTerm,
706
950
  content_category: "product",
707
951
  content_ids: event.content_ids || []
708
952
  };
709
- window.fbq?.("track", "Search", this.enhanceWithAffiliateParams(params));
953
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
954
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
955
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
956
+ if (event.eventId) {
957
+ window.fbq?.("track", eventName, enhancedParams, {
958
+ eventID: event.eventId
959
+ });
960
+ } else {
961
+ window.fbq?.("track", eventName, enhancedParams);
962
+ }
963
+ this.logger.debug("Search event tracked", {
964
+ eventName,
965
+ params: enhancedParams
966
+ });
710
967
  }
711
968
  /**
712
969
  * Track an add payment info event
713
970
  * @param event The add payment info event
714
971
  */
715
- trackAddPaymentInfo(event) {
716
- const params = {
972
+ trackAddPaymentInfo(event, adapterParams) {
973
+ const eventName = this.getEventName(adapterParams, "AddPaymentInfo");
974
+ const baseParams = {
717
975
  value: event.cartValue,
718
976
  currency: event.currency || "INR",
719
977
  content_type: "product_group",
@@ -725,18 +983,28 @@ var PixelAdapter = class extends BaseAdapter {
725
983
  })),
726
984
  payment_type: event.paymentType || ""
727
985
  };
728
- window.fbq?.(
729
- "track",
730
- "AddPaymentInfo",
731
- this.enhanceWithAffiliateParams(params)
732
- );
986
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
987
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
988
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
989
+ if (event.eventId) {
990
+ window.fbq?.("track", eventName, enhancedParams, {
991
+ eventID: event.eventId
992
+ });
993
+ } else {
994
+ window.fbq?.("track", eventName, enhancedParams);
995
+ }
996
+ this.logger.debug("AddPaymentInfo event tracked", {
997
+ eventName,
998
+ params: enhancedParams
999
+ });
733
1000
  }
734
1001
  /**
735
1002
  * Track a view content event
736
1003
  * @param event The view content event
737
1004
  */
738
- trackViewContent(event) {
739
- const params = {
1005
+ trackViewContent(event, adapterParams) {
1006
+ const eventName = this.getEventName(adapterParams, "ViewContent");
1007
+ const baseParams = {
740
1008
  content_type: event.content_type || "product",
741
1009
  content_ids: event.content_ids || [],
742
1010
  content_name: event.content_name || "",
@@ -744,18 +1012,28 @@ var PixelAdapter = class extends BaseAdapter {
744
1012
  value: event.value || 0,
745
1013
  currency: event.currency || "INR"
746
1014
  };
747
- window.fbq?.(
748
- "track",
749
- "ViewContent",
750
- this.enhanceWithAffiliateParams(params)
751
- );
1015
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1016
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1017
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1018
+ if (event.eventId) {
1019
+ window.fbq?.("track", eventName, enhancedParams, {
1020
+ eventID: event.eventId
1021
+ });
1022
+ } else {
1023
+ window.fbq?.("track", eventName, enhancedParams);
1024
+ }
1025
+ this.logger.debug("ViewContent event tracked", {
1026
+ eventName,
1027
+ params: enhancedParams
1028
+ });
752
1029
  }
753
1030
  /**
754
1031
  * Track a purchase event
755
1032
  * @param event The purchase event
756
1033
  */
757
- trackPurchase(event) {
758
- const params = {
1034
+ trackPurchase(event, adapterParams) {
1035
+ const eventName = this.getEventName(adapterParams, "Purchase");
1036
+ const baseParams = {
759
1037
  value: event.value,
760
1038
  currency: event.currency || "INR",
761
1039
  content_type: event.content_type || "product_group",
@@ -763,15 +1041,20 @@ var PixelAdapter = class extends BaseAdapter {
763
1041
  num_items: event.num_items || 1,
764
1042
  contents: event.contents || []
765
1043
  };
766
- window.fbq?.("track", "Purchase", this.enhanceWithAffiliateParams(params));
767
- }
768
- /**
769
- * Convert an event to Facebook Pixel parameters
770
- * @param event The event to convert
771
- */
772
- eventToParams(event) {
773
- const { type, timestamp, ...params } = event;
774
- return this.enhanceWithAffiliateParams(params);
1044
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1045
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1046
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1047
+ if (event.eventId) {
1048
+ window.fbq?.("track", eventName, enhancedParams, {
1049
+ eventID: event.eventId
1050
+ });
1051
+ } else {
1052
+ window.fbq?.("track", eventName, enhancedParams);
1053
+ }
1054
+ this.logger.debug("Purchase event tracked", {
1055
+ eventName,
1056
+ params: enhancedParams
1057
+ });
775
1058
  }
776
1059
  };
777
1060
 
@@ -820,8 +1103,9 @@ var GoogleAdapter = class extends BaseAdapter {
820
1103
  /**
821
1104
  * Track an event with Google Analytics
822
1105
  * @param event The event to track
1106
+ * @param adapterParams Optional adapter-specific parameters
823
1107
  */
824
- async trackEvent(event) {
1108
+ async trackEvent(event, adapterParams) {
825
1109
  this.logger.debug("Attempting to track event", {
826
1110
  initialized: this.initialized,
827
1111
  hasWindow: typeof window !== "undefined",
@@ -847,76 +1131,94 @@ var GoogleAdapter = class extends BaseAdapter {
847
1131
  });
848
1132
  switch (event.type) {
849
1133
  case "page_view" /* PAGE_VIEW */:
850
- this.trackPageView(event, measurementId);
1134
+ this.trackPageView(
1135
+ event,
1136
+ measurementId,
1137
+ adapterParams
1138
+ );
851
1139
  break;
852
1140
  case "user_engagement" /* USER_ENGAGEMENT */:
853
- this.trackUserEngagement();
1141
+ this.trackUserEngagement(adapterParams);
854
1142
  break;
855
1143
  case "session_start" /* SESSION_START */:
856
- this.trackSessionStart();
1144
+ this.trackSessionStart(adapterParams);
857
1145
  break;
858
1146
  case "first_visit" /* FIRST_VISIT */:
859
- this.trackFirstVisit();
1147
+ this.trackFirstVisit(adapterParams);
860
1148
  break;
861
1149
  case "view_item" /* VIEW_ITEM */:
862
- this.trackViewItem(event);
1150
+ this.trackViewItem(event, adapterParams);
863
1151
  break;
864
1152
  case "viewed_product" /* VIEWED_PRODUCT */:
865
- this.trackViewedProduct(event);
1153
+ this.trackViewedProduct(event, adapterParams);
866
1154
  break;
867
1155
  case "checkout_payment" /* CHECKOUT_PAYMENT */:
868
- this.trackCheckoutPayment(event);
1156
+ this.trackCheckoutPayment(
1157
+ event,
1158
+ adapterParams
1159
+ );
869
1160
  break;
870
1161
  case "scroll" /* SCROLL */:
871
- this.trackScroll();
1162
+ this.trackScroll(adapterParams);
872
1163
  break;
873
1164
  case "add_to_cart" /* ADD_TO_CART */:
874
- case "shopify_add_to_cart" /* SHOPIFY_ADD_TO_CART */:
875
- this.trackAddToCart(event);
1165
+ this.trackAddToCart(event, adapterParams);
876
1166
  break;
877
1167
  case "form_start" /* FORM_START */:
878
- this.trackFormStart();
1168
+ this.trackFormStart(adapterParams);
879
1169
  break;
880
1170
  case "checkout_started" /* CHECKOUT_STARTED */:
881
- this.trackCheckoutStarted(event);
1171
+ this.trackCheckoutStarted(
1172
+ event,
1173
+ adapterParams
1174
+ );
882
1175
  break;
883
1176
  case "form_submission" /* FORM_SUBMISSION */:
884
- this.trackFormSubmission(event);
1177
+ this.trackFormSubmission(event, adapterParams);
885
1178
  break;
886
1179
  case "search" /* SEARCH */:
887
- this.trackSearch(event);
1180
+ this.trackSearch(event, adapterParams);
888
1181
  break;
889
1182
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
890
- this.trackCheckoutCompleted(event);
1183
+ this.trackCheckoutCompleted(
1184
+ event,
1185
+ adapterParams
1186
+ );
891
1187
  break;
892
1188
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
893
- this.trackAddPaymentInfo(event);
1189
+ this.trackAddPaymentInfo(event, adapterParams);
894
1190
  break;
895
1191
  case "view_content" /* VIEW_CONTENT */:
896
- this.trackViewContent(event);
1192
+ this.trackViewContent(event, adapterParams);
897
1193
  break;
898
1194
  case "purchase" /* PURCHASE */:
899
- this.trackPurchase(event);
1195
+ this.trackPurchase(event, adapterParams);
900
1196
  break;
901
1197
  case "view_search_results" /* VIEW_SEARCH_RESULTS */:
902
- this.trackViewSearchResults(event);
1198
+ this.trackViewSearchResults(
1199
+ event,
1200
+ adapterParams
1201
+ );
903
1202
  break;
904
1203
  case "order_placed" /* ORDER_PLACED */:
905
- this.trackOrderPlaced(event);
1204
+ this.trackOrderPlaced(event, adapterParams);
906
1205
  break;
907
1206
  case "begin_checkout" /* BEGIN_CHECKOUT */:
908
- this.trackBeginCheckout(event);
1207
+ this.trackBeginCheckout(event, adapterParams);
909
1208
  break;
910
1209
  case "custom" /* CUSTOM */:
911
- this.trackCustomEvent(event);
1210
+ this.trackCustomEvent(event, adapterParams);
912
1211
  break;
913
1212
  default: {
914
- const params = this.eventToParams(event);
915
- window.gtag(
916
- "event",
917
- event.type,
918
- this.enhanceWithAffiliateParams(params)
1213
+ const eventName = this.getEventName(adapterParams, event.type);
1214
+ const baseParams = this.eventToParams(event);
1215
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1216
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1217
+ const enhancedParams = this.mergeEventData(
1218
+ experimentParams,
1219
+ adapterParams
919
1220
  );
1221
+ window.gtag("event", eventName, enhancedParams);
920
1222
  break;
921
1223
  }
922
1224
  }
@@ -926,8 +1228,9 @@ var GoogleAdapter = class extends BaseAdapter {
926
1228
  * @param event The page view event
927
1229
  * @param measurementId The Google Analytics measurement ID
928
1230
  */
929
- trackPageView(event, measurementId) {
930
- const params = {
1231
+ trackPageView(event, measurementId, adapterParams) {
1232
+ const eventName = this.getEventName(adapterParams, "page_view");
1233
+ const baseParams = {
931
1234
  page_path: event.path,
932
1235
  page_title: event.title || document.title,
933
1236
  page_location: event.page_location || window.location.href,
@@ -950,14 +1253,14 @@ var GoogleAdapter = class extends BaseAdapter {
950
1253
  user_properties: event.user_properties,
951
1254
  session_engaged: event.session_engaged
952
1255
  };
953
- window.gtag?.(
954
- "event",
955
- "page_view",
956
- this.enhanceWithAffiliateParams(params)
957
- );
958
- }
959
- trackUserEngagement() {
960
- const params = {
1256
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1257
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1258
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1259
+ window.gtag?.("event", eventName, enhancedParams);
1260
+ }
1261
+ trackUserEngagement(adapterParams) {
1262
+ const eventName = this.getEventName(adapterParams, "user_engagement");
1263
+ const baseParams = {
961
1264
  batch_ordering_id: "",
962
1265
  batch_page_id: "",
963
1266
  campaign: "",
@@ -974,14 +1277,14 @@ var GoogleAdapter = class extends BaseAdapter {
974
1277
  srsltid: "",
975
1278
  term: ""
976
1279
  };
977
- window.gtag?.(
978
- "event",
979
- "user_engagement",
980
- this.enhanceWithAffiliateParams(params)
981
- );
982
- }
983
- trackSessionStart() {
984
- const params = {
1280
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1281
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1282
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1283
+ window.gtag?.("event", eventName, enhancedParams);
1284
+ }
1285
+ trackSessionStart(adapterParams) {
1286
+ const eventName = this.getEventName(adapterParams, "session_start");
1287
+ const baseParams = {
985
1288
  batch_ordering_id: "",
986
1289
  batch_page_id: "",
987
1290
  campaign: "",
@@ -1000,14 +1303,14 @@ var GoogleAdapter = class extends BaseAdapter {
1000
1303
  srsltid: "",
1001
1304
  term: ""
1002
1305
  };
1003
- window.gtag?.(
1004
- "event",
1005
- "session_start",
1006
- this.enhanceWithAffiliateParams(params)
1007
- );
1008
- }
1009
- trackFirstVisit() {
1010
- const params = {
1306
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1307
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1308
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1309
+ window.gtag?.("event", eventName, enhancedParams);
1310
+ }
1311
+ trackFirstVisit(adapterParams) {
1312
+ const eventName = this.getEventName(adapterParams, "first_visit");
1313
+ const baseParams = {
1011
1314
  batch_ordering_id: "",
1012
1315
  batch_page_id: "",
1013
1316
  campaign: "",
@@ -1028,25 +1331,26 @@ var GoogleAdapter = class extends BaseAdapter {
1028
1331
  page_source: "",
1029
1332
  page_term: ""
1030
1333
  };
1031
- window.gtag?.(
1032
- "event",
1033
- "first_visit",
1034
- this.enhanceWithAffiliateParams(params)
1035
- );
1036
- }
1037
- trackViewItem(event) {
1038
- window.gtag?.(
1039
- "event",
1040
- "view_item",
1041
- this.enhanceWithAffiliateParams({
1042
- currency: event.currency,
1043
- value: event.value,
1044
- items: event.items
1045
- })
1046
- );
1047
- }
1048
- trackScroll() {
1049
- const params = {
1334
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1335
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1336
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1337
+ window.gtag?.("event", eventName, enhancedParams);
1338
+ }
1339
+ trackViewItem(event, adapterParams) {
1340
+ const eventName = this.getEventName(adapterParams, "view_item");
1341
+ const baseParams = {
1342
+ currency: event.currency,
1343
+ value: event.value,
1344
+ items: event.items
1345
+ };
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);
1350
+ }
1351
+ trackScroll(adapterParams) {
1352
+ const eventName = this.getEventName(adapterParams, "scroll");
1353
+ const baseParams = {
1050
1354
  batch_ordering_id: "",
1051
1355
  batch_page_id: "",
1052
1356
  engagement_time_msec: void 0,
@@ -1060,46 +1364,52 @@ var GoogleAdapter = class extends BaseAdapter {
1060
1364
  percent_scrolled: 90
1061
1365
  // or dynamically captured
1062
1366
  };
1063
- window.gtag?.("event", "scroll", this.enhanceWithAffiliateParams(params));
1064
- }
1065
- trackCheckoutPayment(event) {
1066
- window.gtag?.(
1067
- "event",
1068
- "checkout_payment",
1069
- this.enhanceWithAffiliateParams({
1070
- currency: event.currency,
1071
- value: event.cartValue,
1072
- items: event.items.map((item) => ({
1073
- item_id: item.productId,
1074
- item_name: item.productName,
1075
- price: item.price,
1076
- quantity: item.quantity
1077
- }))
1078
- })
1079
- );
1080
- }
1081
- trackViewedProduct(event) {
1082
- window.gtag?.(
1083
- "event",
1084
- "viewed_product",
1085
- this.enhanceWithAffiliateParams({
1086
- currency: event.currency,
1087
- value: event.price,
1088
- items: [
1089
- {
1090
- item_id: event.productId,
1091
- item_name: event.productName,
1092
- price: event.price,
1093
- currency: event.currency
1094
- }
1095
- ],
1096
- view_duration: event.viewDuration
1097
- })
1098
- );
1367
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1368
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1369
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1370
+ window.gtag?.("event", eventName, enhancedParams);
1371
+ }
1372
+ trackCheckoutPayment(event, adapterParams) {
1373
+ const eventName = this.getEventName(adapterParams, "checkout_payment");
1374
+ const baseParams = {
1375
+ currency: event.currency,
1376
+ value: event.cartValue,
1377
+ items: event.items.map((item) => ({
1378
+ item_id: item.productId,
1379
+ item_name: item.productName,
1380
+ price: item.price,
1381
+ quantity: item.quantity
1382
+ }))
1383
+ };
1384
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1385
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1386
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1387
+ window.gtag?.("event", eventName, enhancedParams);
1388
+ }
1389
+ trackViewedProduct(event, adapterParams) {
1390
+ const eventName = this.getEventName(adapterParams, "viewed_product");
1391
+ const baseParams = {
1392
+ currency: event.currency,
1393
+ value: event.price,
1394
+ items: [
1395
+ {
1396
+ item_id: event.productId,
1397
+ item_name: event.productName,
1398
+ price: event.price,
1399
+ currency: event.currency
1400
+ }
1401
+ ],
1402
+ view_duration: event.viewDuration
1403
+ };
1404
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1405
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1406
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1407
+ window.gtag?.("event", eventName, enhancedParams);
1099
1408
  }
1100
- trackAddToCart(event) {
1409
+ trackAddToCart(event, adapterParams) {
1101
1410
  this.logger.debug("Processing add_to_cart event", { event });
1102
- const params = {
1411
+ const eventName = this.getEventName(adapterParams, "add_to_cart");
1412
+ const baseParams = {
1103
1413
  currency: event.currency || "INR",
1104
1414
  value: event.price * (event.quantity || 1),
1105
1415
  // Calculate total value
@@ -1125,14 +1435,18 @@ var GoogleAdapter = class extends BaseAdapter {
1125
1435
  user_id: event.user_id,
1126
1436
  user_properties: event.user_properties
1127
1437
  };
1128
- const enhancedParams = this.enhanceWithAffiliateParams(params);
1438
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1439
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1440
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1129
1441
  this.logger.debug("Sending add_to_cart event to gtag", {
1442
+ eventName,
1130
1443
  params: enhancedParams
1131
1444
  });
1132
- window.gtag?.("event", "add_to_cart", enhancedParams);
1445
+ window.gtag?.("event", eventName, enhancedParams);
1133
1446
  }
1134
- trackFormStart() {
1135
- const params = {
1447
+ trackFormStart(adapterParams) {
1448
+ const eventName = this.getEventName(adapterParams, "form_start");
1449
+ const baseParams = {
1136
1450
  batch_ordering_id: "",
1137
1451
  batch_page_id: "",
1138
1452
  engagement_time_msec: void 0,
@@ -1150,14 +1464,14 @@ var GoogleAdapter = class extends BaseAdapter {
1150
1464
  page_referrer: document.referrer,
1151
1465
  page_title: document.title
1152
1466
  };
1153
- window.gtag?.(
1154
- "event",
1155
- "form_start",
1156
- this.enhanceWithAffiliateParams(params)
1157
- );
1158
- }
1159
- trackCheckoutStarted(event) {
1160
- const params = {
1467
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1468
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1469
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1470
+ window.gtag?.("event", eventName, enhancedParams);
1471
+ }
1472
+ trackCheckoutStarted(event, adapterParams) {
1473
+ const eventName = this.getEventName(adapterParams, "begin_checkout");
1474
+ const baseParams = {
1161
1475
  batch_ordering_id: "",
1162
1476
  batch_page_id: "",
1163
1477
  currency: event.currency || "INR",
@@ -1180,14 +1494,14 @@ var GoogleAdapter = class extends BaseAdapter {
1180
1494
  item_variant: item.variant
1181
1495
  }))
1182
1496
  };
1183
- window.gtag?.(
1184
- "event",
1185
- "begin_checkout",
1186
- this.enhanceWithAffiliateParams(params)
1187
- );
1188
- }
1189
- trackFormSubmission(event) {
1190
- const params = {
1497
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1498
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1499
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1500
+ window.gtag?.("event", eventName, enhancedParams);
1501
+ }
1502
+ trackFormSubmission(event, adapterParams) {
1503
+ const eventName = this.getEventName(adapterParams, "form_submit");
1504
+ const baseParams = {
1191
1505
  batch_ordering_id: "",
1192
1506
  batch_page_id: "",
1193
1507
  engagement_time_msec: void 0,
@@ -1201,14 +1515,14 @@ var GoogleAdapter = class extends BaseAdapter {
1201
1515
  page_referrer: document.referrer,
1202
1516
  page_title: document.title
1203
1517
  };
1204
- window.gtag?.(
1205
- "event",
1206
- "form_submit",
1207
- this.enhanceWithAffiliateParams(params)
1208
- );
1209
- }
1210
- trackSearch(event) {
1211
- const params = {
1518
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1519
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1520
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1521
+ window.gtag?.("event", eventName, enhancedParams);
1522
+ }
1523
+ trackSearch(event, adapterParams) {
1524
+ const eventName = this.getEventName(adapterParams, "search");
1525
+ const baseParams = {
1212
1526
  batch_ordering_id: "",
1213
1527
  batch_page_id: "",
1214
1528
  engagement_time_msec: void 0,
@@ -1220,14 +1534,18 @@ var GoogleAdapter = class extends BaseAdapter {
1220
1534
  page_title: document.title,
1221
1535
  search_term: event.searchTerm
1222
1536
  };
1223
- window.gtag?.("event", "search", this.enhanceWithAffiliateParams(params));
1537
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1538
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1539
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1540
+ window.gtag?.("event", eventName, enhancedParams);
1224
1541
  }
1225
1542
  /**
1226
1543
  * Track a checkout completed event
1227
1544
  * @param event The checkout completed event
1228
1545
  */
1229
- trackCheckoutCompleted(event) {
1230
- const params = {
1546
+ trackCheckoutCompleted(event, adapterParams) {
1547
+ const eventName = this.getEventName(adapterParams, "purchase");
1548
+ const baseParams = {
1231
1549
  transaction_id: event.orderId,
1232
1550
  currency: event.currency || "INR",
1233
1551
  value: event.cartValue,
@@ -1239,22 +1557,30 @@ var GoogleAdapter = class extends BaseAdapter {
1239
1557
  item_variant: item.variant
1240
1558
  }))
1241
1559
  };
1242
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1560
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1561
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1562
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1563
+ window.gtag?.("event", eventName, enhancedParams);
1243
1564
  }
1244
1565
  /**
1245
1566
  * Track a custom event
1246
1567
  * @param event The custom event
1247
1568
  */
1248
- trackCustomEvent(event) {
1249
- const params = event.properties || {};
1250
- window.gtag?.("event", event.name, this.enhanceWithAffiliateParams(params));
1569
+ trackCustomEvent(event, adapterParams) {
1570
+ const eventName = this.getEventName(adapterParams, event.name);
1571
+ const baseParams = event.properties || {};
1572
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1573
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1574
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1575
+ window.gtag?.("event", eventName, enhancedParams);
1251
1576
  }
1252
1577
  /**
1253
1578
  * Track an add payment info event
1254
1579
  * @param event The add payment info event
1255
1580
  */
1256
- trackAddPaymentInfo(event) {
1257
- const params = {
1581
+ trackAddPaymentInfo(event, adapterParams) {
1582
+ const eventName = this.getEventName(adapterParams, "add_payment_info");
1583
+ const baseParams = {
1258
1584
  currency: event.currency || "INR",
1259
1585
  value: event.cartValue,
1260
1586
  payment_type: event.paymentType || "",
@@ -1266,18 +1592,18 @@ var GoogleAdapter = class extends BaseAdapter {
1266
1592
  item_variant: item.variant
1267
1593
  }))
1268
1594
  };
1269
- window.gtag?.(
1270
- "event",
1271
- "add_payment_info",
1272
- this.enhanceWithAffiliateParams(params)
1273
- );
1595
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1596
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1597
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1598
+ window.gtag?.("event", eventName, enhancedParams);
1274
1599
  }
1275
1600
  /**
1276
1601
  * Track a view content event
1277
1602
  * @param event The view content event
1278
1603
  */
1279
- trackViewContent(event) {
1280
- const params = {
1604
+ trackViewContent(event, adapterParams) {
1605
+ const eventName = this.getEventName(adapterParams, "view_item");
1606
+ const baseParams = {
1281
1607
  currency: event.currency || "USD",
1282
1608
  value: event.value || 0,
1283
1609
  items: event.items?.map((item) => ({
@@ -1306,18 +1632,18 @@ var GoogleAdapter = class extends BaseAdapter {
1306
1632
  user_id: event.user_id,
1307
1633
  user_properties: event.user_properties
1308
1634
  };
1309
- window.gtag?.(
1310
- "event",
1311
- "view_item",
1312
- this.enhanceWithAffiliateParams(params)
1313
- );
1635
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1636
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1637
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1638
+ window.gtag?.("event", eventName, enhancedParams);
1314
1639
  }
1315
1640
  /**
1316
1641
  * Track a purchase event
1317
1642
  * @param event The purchase event
1318
1643
  */
1319
- trackPurchase(event) {
1320
- const params = {
1644
+ trackPurchase(event, adapterParams) {
1645
+ const eventName = this.getEventName(adapterParams, "purchase");
1646
+ const baseParams = {
1321
1647
  transaction_id: event.transaction_id,
1322
1648
  value: event.value,
1323
1649
  currency: event.currency || "USD",
@@ -1350,14 +1676,18 @@ var GoogleAdapter = class extends BaseAdapter {
1350
1676
  user_id: event.user_id,
1351
1677
  user_properties: event.user_properties
1352
1678
  };
1353
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1679
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1680
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1681
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1682
+ window.gtag?.("event", eventName, enhancedParams);
1354
1683
  }
1355
1684
  /**
1356
1685
  * Track a view search results event
1357
1686
  * @param event The view search results event
1358
1687
  */
1359
- trackViewSearchResults(event) {
1360
- const params = {
1688
+ trackViewSearchResults(event, adapterParams) {
1689
+ const eventName = this.getEventName(adapterParams, "view_search_results");
1690
+ const baseParams = {
1361
1691
  search_term: event.search_term,
1362
1692
  // GA4-specific parameters
1363
1693
  batch_ordering_id: event.batch_ordering_id || "",
@@ -1372,18 +1702,18 @@ var GoogleAdapter = class extends BaseAdapter {
1372
1702
  user_id: event.user_id,
1373
1703
  user_properties: event.user_properties
1374
1704
  };
1375
- window.gtag?.(
1376
- "event",
1377
- "view_search_results",
1378
- this.enhanceWithAffiliateParams(params)
1379
- );
1705
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1706
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1707
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1708
+ window.gtag?.("event", eventName, enhancedParams);
1380
1709
  }
1381
1710
  /**
1382
1711
  * Track an order placed event
1383
1712
  * @param event The order placed event
1384
1713
  */
1385
- trackOrderPlaced(event) {
1386
- const params = {
1714
+ trackOrderPlaced(event, adapterParams) {
1715
+ const eventName = this.getEventName(adapterParams, "purchase");
1716
+ const baseParams = {
1387
1717
  transaction_id: event.order_id,
1388
1718
  value: event.total_amount,
1389
1719
  currency: event.currency || "USD",
@@ -1409,14 +1739,18 @@ var GoogleAdapter = class extends BaseAdapter {
1409
1739
  user_id: event.user_id,
1410
1740
  user_properties: event.user_properties
1411
1741
  };
1412
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1742
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1743
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1744
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1745
+ window.gtag?.("event", eventName, enhancedParams);
1413
1746
  }
1414
1747
  /**
1415
1748
  * Track a begin checkout event
1416
1749
  * @param event The begin checkout event
1417
1750
  */
1418
- trackBeginCheckout(event) {
1419
- const params = {
1751
+ trackBeginCheckout(event, adapterParams) {
1752
+ const eventName = this.getEventName(adapterParams, "begin_checkout");
1753
+ const baseParams = {
1420
1754
  currency: event.currency || "USD",
1421
1755
  value: event.value || 0,
1422
1756
  coupon: event.coupon,
@@ -1446,11 +1780,10 @@ var GoogleAdapter = class extends BaseAdapter {
1446
1780
  user_id: event.user_id,
1447
1781
  user_properties: event.user_properties
1448
1782
  };
1449
- window.gtag?.(
1450
- "event",
1451
- "begin_checkout",
1452
- this.enhanceWithAffiliateParams(params)
1453
- );
1783
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1784
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1785
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1786
+ window.gtag?.("event", eventName, enhancedParams);
1454
1787
  }
1455
1788
  /**
1456
1789
  * Convert an event to Google Analytics parameters
@@ -1458,7 +1791,8 @@ var GoogleAdapter = class extends BaseAdapter {
1458
1791
  */
1459
1792
  eventToParams(event) {
1460
1793
  const { type, timestamp, ...params } = event;
1461
- return this.enhanceWithAffiliateParams(params);
1794
+ const affiliateParams = this.enhanceWithAffiliateParams(params);
1795
+ return this.enhanceWithExperimentParams(affiliateParams);
1462
1796
  }
1463
1797
  };
1464
1798
 
@@ -1480,44 +1814,9 @@ var EventNames = {
1480
1814
  SEARCH: "Search",
1481
1815
  // User events
1482
1816
  USER_SIGNED_UP: "User Signed Up",
1483
- USER_LOGGED_IN: "User Logged In",
1484
- // MoEngage events
1485
- ITEM_PURCHASED: "Item Purchased",
1486
- UPDATE_CART: "Update Cart",
1487
- CUSTOMER_REGISTERED: "Customer Registered",
1488
- CUSTOMER_LOGGED_IN: "Customer Logged In",
1489
- SHOPIFY_CHECKOUT_UPDATED: "Shopify - Checkout Updated",
1490
- SHOPIFY_ABANDONED_CHECKOUT: "Shopify - Abandoned Checkout",
1491
- SHOPIFY_ORDER_FULFILLED: "Shopify - Order Fulfilled",
1492
- SHOPIFY_CHECKOUT_STARTED: "Shopify - Checkout Started",
1493
- SHOPIFY_ADD_TO_CART: "Shopify - Add To Cart",
1494
- SHOPIFY_REMOVED_FROM_CART: "Shopify - Removed From Cart",
1495
- SHOPIFY_UPDATE_CART: "Shopify - Update Cart",
1496
- SPINFORM_RESULT: "Spinform Result",
1497
- COUPON_COPIED: "Coupon Copied",
1498
- STARTED_CHECKOUT_GK: "Started Checkout GK",
1499
- MOBILE_ADDED_GK: "Mobile Added GK",
1500
- ADDRESS_SELECTED_GK: "Address Selected GK",
1501
- ADDRESS_COMPLETED_GK: "Address Completed GK",
1502
- PAYMENT_METHOD_SELECTED_GK: "Payment Method Selected GK",
1503
- PAYMENT_COMPLETED_GK: "Payment Completed GK",
1504
- ORDER_SUCCESS: "Order Success",
1505
- ORDER_COMPLETED: "Order Completed",
1506
- PIN_CODE_ADDED_GK: "PIN Code Added GK",
1507
- ADDRESS_ADDED_GK: "Address Added GK",
1508
- KP_MP_PHONE_NUMBER_LOGGED_IN: "KP MP Phone Number Logged In",
1509
- KP_PHONE_NUMBER_LOGGED_IN: "KP Phone Number Logged In",
1510
- KP_MP_SHOPIFY_LOGGED_IN: "KP MP Shopify Logged In",
1511
- KP_MP_SUCCESSFULLY_LOGGED_OUT: "KP MP Successfully Logged Out",
1512
- KP_WHATSAPP_LOGGED_IN: "KP Whatsapp Logged In",
1513
- KP_MP_TRUECALLER_LOGGED_IN: "KP MP Truecaller Logged In",
1514
- KP_MP_WHATSAPP_LOGGED_IN: "KP MP Whatsapp Logged In",
1515
- KP_TRUECALLER_LOGGED_IN: "KP Truecaller Logged In",
1516
- KP_SHOPIFY_LOGGED_IN: "KP Shopify Logged In",
1517
- KP_SUCCESSFULLY_LOGGED_OUT: "KP Successfully Logged Out"
1817
+ USER_LOGGED_IN: "User Logged In"
1518
1818
  };
1519
1819
  var DEFAULT_CURRENCY = "INR";
1520
- var HARDCODED_HANDLE = "ryze-gums";
1521
1820
 
1522
1821
  // src/adapters/moengage-adapter.ts
1523
1822
  var import_web_sdk = __toESM(require("@moengage/web-sdk"));
@@ -1569,8 +1868,9 @@ var MoengageAdapter = class extends BaseAdapter {
1569
1868
  /**
1570
1869
  * Track an event with MoenGage SDK
1571
1870
  * @param event The event to track
1871
+ * @param adapterParams Optional adapter-specific parameters
1572
1872
  */
1573
- async trackEvent(event) {
1873
+ async trackEvent(event, adapterParams) {
1574
1874
  if (!this.initialized || typeof window === "undefined" || !this.sdk) {
1575
1875
  this.logger.warn(
1576
1876
  "Cannot track event, adapter not initialized or SDK not available",
@@ -1586,106 +1886,172 @@ var MoengageAdapter = class extends BaseAdapter {
1586
1886
  this.logger.debug("Tracking event", { eventType: event.type });
1587
1887
  switch (event.type) {
1588
1888
  case "page_view" /* PAGE_VIEW */:
1589
- this.trackPageView(event);
1889
+ this.trackPageView(event, adapterParams);
1590
1890
  break;
1591
1891
  case "button_click" /* BUTTON_CLICK */:
1592
- this.trackButtonClick(event);
1892
+ this.trackButtonClick(event, adapterParams);
1593
1893
  break;
1594
1894
  case "form_submission" /* FORM_SUBMISSION */:
1595
- this.trackFormSubmission(event);
1895
+ this.trackFormSubmission(event, adapterParams);
1596
1896
  break;
1597
1897
  case "product_view" /* PRODUCT_VIEW */:
1598
- this.trackProductView(event);
1898
+ this.trackProductView(event, adapterParams);
1599
1899
  break;
1600
1900
  case "add_to_cart" /* ADD_TO_CART */:
1601
- this.trackAddToCart(event);
1901
+ this.trackAddToCart(event, adapterParams);
1602
1902
  break;
1603
1903
  case "remove_from_cart" /* REMOVE_FROM_CART */:
1604
- this.trackRemoveFromCart(event);
1904
+ this.trackRemoveFromCart(event, adapterParams);
1605
1905
  break;
1606
1906
  case "checkout_started" /* CHECKOUT_STARTED */:
1607
- this.trackCheckoutStarted(event);
1907
+ this.trackCheckoutStarted(
1908
+ event,
1909
+ adapterParams
1910
+ );
1608
1911
  break;
1609
1912
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
1610
- this.trackCheckoutCompleted(event);
1913
+ this.trackCheckoutCompleted(
1914
+ event,
1915
+ adapterParams
1916
+ );
1611
1917
  break;
1612
1918
  case "search" /* SEARCH */:
1613
- this.trackSearch(event);
1919
+ this.trackSearch(event, adapterParams);
1614
1920
  break;
1615
1921
  case "user_signup" /* USER_SIGNUP */:
1616
- this.trackUserSignup(event);
1922
+ this.trackUserSignup(event, adapterParams);
1617
1923
  break;
1618
1924
  case "user_login" /* USER_LOGIN */:
1619
- this.trackUserLogin(event);
1925
+ this.trackUserLogin(event, adapterParams);
1620
1926
  break;
1621
1927
  case "custom" /* CUSTOM */:
1622
- this.trackCustomEvent(event);
1928
+ this.trackCustomEvent(event, adapterParams);
1623
1929
  break;
1624
1930
  default:
1625
- this.sdk.track_event(event.type, this.eventToParams(event));
1931
+ const eventName = this.getEventName(adapterParams, event.type);
1932
+ const baseParams = this.eventToParams(event);
1933
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1934
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1935
+ const enhancedParams = this.mergeEventData(
1936
+ experimentParams,
1937
+ adapterParams
1938
+ );
1939
+ this.sdk.track_event(eventName, enhancedParams);
1626
1940
  break;
1627
1941
  }
1628
1942
  }
1629
1943
  /**
1630
1944
  * Track a page view event
1631
1945
  * @param event The page view event
1946
+ * @param adapterParams Optional adapter-specific parameters
1632
1947
  */
1633
- trackPageView(event) {
1948
+ trackPageView(event, adapterParams) {
1634
1949
  if (!this.sdk?.track_event) {
1635
1950
  this.logger.warn("track_event not available for PageView event");
1636
1951
  return;
1637
1952
  }
1638
- const eventData = {
1953
+ const eventName = this.getEventName(adapterParams, EventNames.PAGE_VIEWED);
1954
+ const baseEventData = {
1639
1955
  page_path: event.path,
1640
1956
  page_title: event.title,
1641
1957
  page_url: window.location.href,
1642
1958
  referrer: event.referrer || document.referrer
1643
1959
  };
1644
- this.sdk.track_event(EventNames.PAGE_VIEWED, eventData);
1645
- this.logger.debug("PageView event tracked", { eventData });
1960
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1961
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1962
+ const enhancedEventData = this.mergeEventData(
1963
+ experimentParams,
1964
+ adapterParams
1965
+ );
1966
+ this.sdk.track_event(eventName, enhancedEventData);
1967
+ this.logger.debug("PageView event tracked", {
1968
+ eventName,
1969
+ eventData: enhancedEventData
1970
+ });
1646
1971
  }
1647
1972
  /**
1648
1973
  * Track a button click event
1649
1974
  * @param event The button click event
1975
+ * @param adapterParams Optional adapter-specific parameters
1650
1976
  */
1651
- trackButtonClick(event) {
1652
- this.sdk?.track_event(EventNames.BUTTON_CLICKED, {
1977
+ trackButtonClick(event, adapterParams) {
1978
+ const eventName = this.getEventName(
1979
+ adapterParams,
1980
+ EventNames.BUTTON_CLICKED
1981
+ );
1982
+ const baseEventData = {
1653
1983
  button_id: event.buttonId,
1654
1984
  button_text: event.buttonText,
1655
1985
  location: event.location
1656
- });
1986
+ };
1987
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1988
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1989
+ const enhancedEventData = this.mergeEventData(
1990
+ experimentParams,
1991
+ adapterParams
1992
+ );
1993
+ this.sdk?.track_event(eventName, enhancedEventData);
1657
1994
  }
1658
1995
  /**
1659
1996
  * Track a form submission event
1660
1997
  * @param event The form submission event
1998
+ * @param adapterParams Optional adapter-specific parameters
1661
1999
  */
1662
- trackFormSubmission(event) {
1663
- this.sdk?.track_event(EventNames.FORM_SUBMITTED, {
2000
+ trackFormSubmission(event, adapterParams) {
2001
+ const eventName = this.getEventName(
2002
+ adapterParams,
2003
+ EventNames.FORM_SUBMITTED
2004
+ );
2005
+ const baseEventData = {
1664
2006
  form_id: event.formId,
1665
2007
  form_name: event.formName,
1666
2008
  success: event.success
1667
- });
2009
+ };
2010
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2011
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2012
+ const enhancedEventData = this.mergeEventData(
2013
+ experimentParams,
2014
+ adapterParams
2015
+ );
2016
+ this.sdk?.track_event(eventName, enhancedEventData);
1668
2017
  }
1669
2018
  /**
1670
2019
  * Track a product view event
1671
2020
  * @param event The product view event
2021
+ * @param adapterParams Optional adapter-specific parameters
1672
2022
  */
1673
- trackProductView(event) {
1674
- this.sdk?.track_event(EventNames.PRODUCT_VIEWED, {
2023
+ trackProductView(event, adapterParams) {
2024
+ const eventName = this.getEventName(
2025
+ adapterParams,
2026
+ EventNames.PRODUCT_VIEWED
2027
+ );
2028
+ const baseEventData = {
1675
2029
  product_id: event.productId,
1676
2030
  product_name: event.productName,
1677
2031
  price: event.price,
1678
2032
  currency: event.currency || DEFAULT_CURRENCY,
1679
2033
  category: event.category
1680
- });
2034
+ };
2035
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2036
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2037
+ const enhancedEventData = this.mergeEventData(
2038
+ experimentParams,
2039
+ adapterParams
2040
+ );
2041
+ this.sdk?.track_event(eventName, enhancedEventData);
1681
2042
  }
1682
2043
  /**
1683
2044
  * Track an add to cart event
1684
2045
  * @param event The add to cart event
2046
+ * @param adapterParams Optional adapter-specific parameters
1685
2047
  */
1686
- trackAddToCart(event) {
2048
+ trackAddToCart(event, adapterParams) {
1687
2049
  const quantity = event.quantity ?? 1;
1688
- this.sdk?.track_event(EventNames.ADDED_TO_CART, {
2050
+ const eventName = this.getEventName(
2051
+ adapterParams,
2052
+ EventNames.ADDED_TO_CART
2053
+ );
2054
+ const baseEventData = {
1689
2055
  product_id: event.productId,
1690
2056
  product_name: event.productName,
1691
2057
  price: event.price,
@@ -1693,14 +2059,26 @@ var MoengageAdapter = class extends BaseAdapter {
1693
2059
  quantity,
1694
2060
  variant: event.variant,
1695
2061
  total_value: event.price * quantity
1696
- });
2062
+ };
2063
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2064
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2065
+ const enhancedEventData = this.mergeEventData(
2066
+ experimentParams,
2067
+ adapterParams
2068
+ );
2069
+ this.sdk?.track_event(eventName, enhancedEventData);
1697
2070
  }
1698
2071
  /**
1699
2072
  * Track a remove from cart event
1700
2073
  * @param event The remove from cart event
2074
+ * @param adapterParams Optional adapter-specific parameters
1701
2075
  */
1702
- trackRemoveFromCart(event) {
1703
- this.sdk?.track_event(EventNames.REMOVED_FROM_CART, {
2076
+ trackRemoveFromCart(event, adapterParams) {
2077
+ const eventName = this.getEventName(
2078
+ adapterParams,
2079
+ EventNames.REMOVED_FROM_CART
2080
+ );
2081
+ const baseEventData = {
1704
2082
  product_id: event.productId,
1705
2083
  product_name: event.productName,
1706
2084
  price: event.price,
@@ -1708,14 +2086,26 @@ var MoengageAdapter = class extends BaseAdapter {
1708
2086
  quantity: event.quantity,
1709
2087
  variant: event.variant,
1710
2088
  total_value: event.price * event.quantity
1711
- });
2089
+ };
2090
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2091
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2092
+ const enhancedEventData = this.mergeEventData(
2093
+ experimentParams,
2094
+ adapterParams
2095
+ );
2096
+ this.sdk?.track_event(eventName, enhancedEventData);
1712
2097
  }
1713
2098
  /**
1714
2099
  * Track a checkout started event
1715
2100
  * @param event The checkout started event
2101
+ * @param adapterParams Optional adapter-specific parameters
1716
2102
  */
1717
- trackCheckoutStarted(event) {
1718
- this.sdk?.track_event(EventNames.CHECKOUT_STARTED, {
2103
+ trackCheckoutStarted(event, adapterParams) {
2104
+ const eventName = this.getEventName(
2105
+ adapterParams,
2106
+ EventNames.CHECKOUT_STARTED
2107
+ );
2108
+ const baseEventData = {
1719
2109
  cart_value: event.cartValue,
1720
2110
  currency: event.currency || DEFAULT_CURRENCY,
1721
2111
  item_count: event.itemCount,
@@ -1726,14 +2116,26 @@ var MoengageAdapter = class extends BaseAdapter {
1726
2116
  quantity: item.quantity,
1727
2117
  variant: item.variant
1728
2118
  }))
1729
- });
2119
+ };
2120
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2121
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2122
+ const enhancedEventData = this.mergeEventData(
2123
+ experimentParams,
2124
+ adapterParams
2125
+ );
2126
+ this.sdk?.track_event(eventName, enhancedEventData);
1730
2127
  }
1731
2128
  /**
1732
2129
  * Track a checkout completed event
1733
2130
  * @param event The checkout completed event
2131
+ * @param adapterParams Optional adapter-specific parameters
1734
2132
  */
1735
- trackCheckoutCompleted(event) {
1736
- this.sdk?.track_event(EventNames.PURCHASE_COMPLETED, {
2133
+ trackCheckoutCompleted(event, adapterParams) {
2134
+ const eventName = this.getEventName(
2135
+ adapterParams,
2136
+ EventNames.PURCHASE_COMPLETED
2137
+ );
2138
+ const baseEventData = {
1737
2139
  order_id: event.orderId,
1738
2140
  cart_value: event.cartValue,
1739
2141
  currency: event.currency || DEFAULT_CURRENCY,
@@ -1745,28 +2147,56 @@ var MoengageAdapter = class extends BaseAdapter {
1745
2147
  quantity: item.quantity,
1746
2148
  variant: item.variant
1747
2149
  }))
1748
- });
2150
+ };
2151
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2152
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2153
+ const enhancedEventData = this.mergeEventData(
2154
+ experimentParams,
2155
+ adapterParams
2156
+ );
2157
+ this.sdk?.track_event(eventName, enhancedEventData);
1749
2158
  }
1750
2159
  /**
1751
2160
  * Track a search event
1752
2161
  * @param event The search event
2162
+ * @param adapterParams Optional adapter-specific parameters
1753
2163
  */
1754
- trackSearch(event) {
1755
- this.sdk?.track_event(EventNames.SEARCH, {
2164
+ trackSearch(event, adapterParams) {
2165
+ const eventName = this.getEventName(adapterParams, EventNames.SEARCH);
2166
+ const baseEventData = {
1756
2167
  search_term: event.searchTerm,
1757
2168
  results_count: event.resultsCount
1758
- });
2169
+ };
2170
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2171
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2172
+ const enhancedEventData = this.mergeEventData(
2173
+ experimentParams,
2174
+ adapterParams
2175
+ );
2176
+ this.sdk?.track_event(eventName, enhancedEventData);
1759
2177
  }
1760
2178
  /**
1761
2179
  * Track a user signup event
1762
2180
  * @param event The user signup event
2181
+ * @param adapterParams Optional adapter-specific parameters
1763
2182
  */
1764
- trackUserSignup(event) {
1765
- this.sdk?.track_event(EventNames.USER_SIGNED_UP, {
2183
+ trackUserSignup(event, adapterParams) {
2184
+ const eventName = this.getEventName(
2185
+ adapterParams,
2186
+ EventNames.USER_SIGNED_UP
2187
+ );
2188
+ const baseEventData = {
1766
2189
  user_id: event.userId,
1767
2190
  method: event.method,
1768
2191
  success: event.success
1769
- });
2192
+ };
2193
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2194
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2195
+ const enhancedEventData = this.mergeEventData(
2196
+ experimentParams,
2197
+ adapterParams
2198
+ );
2199
+ this.sdk?.track_event(eventName, enhancedEventData);
1770
2200
  if (event.userId && this.getConfig("enableUserIdentification", true)) {
1771
2201
  this.sdk?.add_unique_user_id(event.userId);
1772
2202
  }
@@ -1774,13 +2204,25 @@ var MoengageAdapter = class extends BaseAdapter {
1774
2204
  /**
1775
2205
  * Track a user login event
1776
2206
  * @param event The user login event
2207
+ * @param adapterParams Optional adapter-specific parameters
1777
2208
  */
1778
- trackUserLogin(event) {
1779
- this.sdk?.track_event(EventNames.USER_LOGGED_IN, {
2209
+ trackUserLogin(event, adapterParams) {
2210
+ const eventName = this.getEventName(
2211
+ adapterParams,
2212
+ EventNames.USER_LOGGED_IN
2213
+ );
2214
+ const baseEventData = {
1780
2215
  user_id: event.userId,
1781
2216
  method: event.method,
1782
2217
  success: event.success
1783
- });
2218
+ };
2219
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2220
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2221
+ const enhancedEventData = this.mergeEventData(
2222
+ experimentParams,
2223
+ adapterParams
2224
+ );
2225
+ this.sdk?.track_event(eventName, enhancedEventData);
1784
2226
  if (event.userId && this.getConfig("enableUserIdentification", true)) {
1785
2227
  this.sdk?.add_unique_user_id(event.userId);
1786
2228
  }
@@ -1788,9 +2230,18 @@ var MoengageAdapter = class extends BaseAdapter {
1788
2230
  /**
1789
2231
  * Track a custom event
1790
2232
  * @param event The custom event
2233
+ * @param adapterParams Optional adapter-specific parameters
1791
2234
  */
1792
- trackCustomEvent(event) {
1793
- this.sdk?.track_event(event.name, event.properties);
2235
+ trackCustomEvent(event, adapterParams) {
2236
+ const eventName = this.getEventName(adapterParams, event.name);
2237
+ const baseEventData = event.properties || {};
2238
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2239
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2240
+ const enhancedEventData = this.mergeEventData(
2241
+ experimentParams,
2242
+ adapterParams
2243
+ );
2244
+ this.sdk?.track_event(eventName, enhancedEventData);
1794
2245
  }
1795
2246
  /**
1796
2247
  * Convert an event to MoenGage parameters
@@ -1877,8 +2328,9 @@ var PostHogAdapter = class extends BaseAdapter {
1877
2328
  /**
1878
2329
  * Track an event with PostHog
1879
2330
  * @param event The event to track
2331
+ * @param adapterParams Optional adapter-specific parameters
1880
2332
  */
1881
- async trackEvent(event) {
2333
+ async trackEvent(event, adapterParams) {
1882
2334
  if (!this.initialized || typeof window === "undefined" || !window.posthog) {
1883
2335
  this.logger.warn(
1884
2336
  "Cannot track event, adapter not initialized or posthog not available",
@@ -1894,74 +2346,84 @@ var PostHogAdapter = class extends BaseAdapter {
1894
2346
  this.logger.debug("Tracking event", { eventType: event.type });
1895
2347
  switch (event.type) {
1896
2348
  case "page_view" /* PAGE_VIEW */:
1897
- this.trackPageView(event);
2349
+ this.trackPageView(event, adapterParams);
1898
2350
  break;
1899
2351
  case "product_view" /* PRODUCT_VIEW */:
1900
- this.trackProductView(event);
2352
+ this.trackProductView(event, adapterParams);
1901
2353
  break;
1902
2354
  case "add_to_cart" /* ADD_TO_CART */:
1903
- this.trackAddToCart(event);
2355
+ this.trackAddToCart(event, adapterParams);
1904
2356
  break;
1905
2357
  case "checkout_started" /* CHECKOUT_STARTED */:
1906
- this.trackCheckoutStarted(event);
2358
+ this.trackCheckoutStarted(event, adapterParams);
1907
2359
  break;
1908
2360
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
1909
- this.trackCheckoutCompleted(event);
2361
+ this.trackCheckoutCompleted(event, adapterParams);
1910
2362
  break;
1911
2363
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
1912
- this.trackAddPaymentInfo(event);
2364
+ this.trackAddPaymentInfo(event, adapterParams);
1913
2365
  break;
1914
2366
  case "search" /* SEARCH */:
1915
- this.trackSearch(event);
2367
+ this.trackSearch(event, adapterParams);
1916
2368
  break;
1917
2369
  default:
1918
- const params = this.eventToParams(event);
1919
- window.posthog?.capture(
1920
- event.type,
1921
- this.enhanceWithAffiliateParams(params)
2370
+ const eventName = this.getEventName(adapterParams, event.type);
2371
+ const baseParams = this.eventToParams(event);
2372
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2373
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2374
+ const enhancedParams = this.mergeEventData(
2375
+ experimentParams,
2376
+ adapterParams
1922
2377
  );
2378
+ window.posthog?.capture(eventName, enhancedParams);
1923
2379
  break;
1924
2380
  }
1925
2381
  }
1926
2382
  /**
1927
2383
  * Track a page view event
1928
2384
  * @param event The page view event
2385
+ * @param adapterParams Optional adapter-specific parameters
1929
2386
  */
1930
- trackPageView(event) {
1931
- const params = {
2387
+ trackPageView(event, adapterParams) {
2388
+ const eventName = this.getEventName(adapterParams, "$pageview");
2389
+ const baseParams = {
1932
2390
  path: event.path,
1933
2391
  title: event.title,
1934
2392
  referrer: event.referrer
1935
2393
  };
1936
- window.posthog?.capture(
1937
- "$pageview",
1938
- this.enhanceWithAffiliateParams(params)
1939
- );
2394
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2395
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2396
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2397
+ window.posthog?.capture(eventName, enhancedParams);
1940
2398
  }
1941
2399
  /**
1942
2400
  * Track a product view event
1943
2401
  * @param event The product view event
2402
+ * @param adapterParams Optional adapter-specific parameters
1944
2403
  */
1945
- trackProductView(event) {
1946
- const params = {
2404
+ trackProductView(event, adapterParams) {
2405
+ const eventName = this.getEventName(adapterParams, "product_viewed");
2406
+ const baseParams = {
1947
2407
  product_id: event.productId,
1948
2408
  product_name: event.productName,
1949
2409
  category: event.category,
1950
2410
  price: event.price,
1951
2411
  currency: event.currency || "INR"
1952
2412
  };
1953
- window.posthog?.capture(
1954
- "product_viewed",
1955
- this.enhanceWithAffiliateParams(params)
1956
- );
2413
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2414
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2415
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2416
+ window.posthog?.capture(eventName, enhancedParams);
1957
2417
  }
1958
2418
  /**
1959
2419
  * Track an add to cart event
1960
2420
  * @param event The add to cart event
2421
+ * @param adapterParams Optional adapter-specific parameters
1961
2422
  */
1962
- trackAddToCart(event) {
2423
+ trackAddToCart(event, adapterParams) {
1963
2424
  this.logger.debug("Handling ADD_TO_CART event", { event });
1964
- const params = {
2425
+ const eventName = this.getEventName(adapterParams, "add_to_cart");
2426
+ const baseParams = {
1965
2427
  product_id: event.productId,
1966
2428
  product_name: event.productName,
1967
2429
  price: event.price,
@@ -1969,23 +2431,28 @@ var PostHogAdapter = class extends BaseAdapter {
1969
2431
  quantity: event.quantity,
1970
2432
  variant: event.variant
1971
2433
  };
1972
- this.logger.debug("Sending to PostHog with params", { params });
2434
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2435
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2436
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2437
+ this.logger.debug("Sending to PostHog with params", {
2438
+ eventName,
2439
+ params: enhancedParams
2440
+ });
1973
2441
  if (!window.posthog) {
1974
2442
  this.logger.error("window.posthog is not available");
1975
2443
  return;
1976
2444
  }
1977
- window.posthog.capture(
1978
- "add_to_cart",
1979
- this.enhanceWithAffiliateParams(params)
1980
- );
2445
+ window.posthog.capture(eventName, enhancedParams);
1981
2446
  this.logger.debug("Event sent to PostHog successfully");
1982
2447
  }
1983
2448
  /**
1984
2449
  * Track a checkout started event
1985
2450
  * @param event The checkout started event
2451
+ * @param adapterParams Optional adapter-specific parameters
1986
2452
  */
1987
- trackCheckoutStarted(event) {
1988
- const params = {
2453
+ trackCheckoutStarted(event, adapterParams) {
2454
+ const eventName = this.getEventName(adapterParams, "checkout_started");
2455
+ const baseParams = {
1989
2456
  cart_value: event.cartValue,
1990
2457
  currency: event.currency || "INR",
1991
2458
  item_count: event.itemCount,
@@ -1997,17 +2464,19 @@ var PostHogAdapter = class extends BaseAdapter {
1997
2464
  variant: item.variant
1998
2465
  }))
1999
2466
  };
2000
- window.posthog?.capture(
2001
- "checkout_started",
2002
- this.enhanceWithAffiliateParams(params)
2003
- );
2467
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2468
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2469
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2470
+ window.posthog?.capture(eventName, enhancedParams);
2004
2471
  }
2005
2472
  /**
2006
2473
  * Track a checkout completed event
2007
2474
  * @param event The checkout completed event
2475
+ * @param adapterParams Optional adapter-specific parameters
2008
2476
  */
2009
- trackCheckoutCompleted(event) {
2010
- const params = {
2477
+ trackCheckoutCompleted(event, adapterParams) {
2478
+ const eventName = this.getEventName(adapterParams, "purchase");
2479
+ const baseParams = {
2011
2480
  order_id: event.orderId,
2012
2481
  cart_value: event.cartValue,
2013
2482
  currency: event.currency || "INR",
@@ -2020,29 +2489,36 @@ var PostHogAdapter = class extends BaseAdapter {
2020
2489
  variant: item.variant
2021
2490
  }))
2022
2491
  };
2023
- window.posthog?.capture(
2024
- "purchase",
2025
- this.enhanceWithAffiliateParams(params)
2026
- );
2492
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2493
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2494
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2495
+ window.posthog?.capture(eventName, enhancedParams);
2027
2496
  }
2028
2497
  /**
2029
2498
  * Track a search event
2030
2499
  * @param event The search event
2500
+ * @param adapterParams Optional adapter-specific parameters
2031
2501
  */
2032
- trackSearch(event) {
2033
- const params = {
2502
+ trackSearch(event, adapterParams) {
2503
+ const eventName = this.getEventName(adapterParams, "search");
2504
+ const baseParams = {
2034
2505
  search_term: event.searchTerm,
2035
2506
  results_count: event.resultsCount,
2036
2507
  content_ids: event.content_ids
2037
2508
  };
2038
- window.posthog?.capture("search", this.enhanceWithAffiliateParams(params));
2509
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2510
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2511
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2512
+ window.posthog?.capture(eventName, enhancedParams);
2039
2513
  }
2040
2514
  /**
2041
2515
  * Track an add payment info event
2042
2516
  * @param event The add payment info event
2517
+ * @param adapterParams Optional adapter-specific parameters
2043
2518
  */
2044
- trackAddPaymentInfo(event) {
2045
- const params = {
2519
+ trackAddPaymentInfo(event, adapterParams) {
2520
+ const eventName = this.getEventName(adapterParams, "add_payment_info");
2521
+ const baseParams = {
2046
2522
  cart_value: event.cartValue,
2047
2523
  currency: event.currency || "INR",
2048
2524
  payment_type: event.paymentType,
@@ -2055,10 +2531,10 @@ var PostHogAdapter = class extends BaseAdapter {
2055
2531
  variant: item.variant
2056
2532
  }))
2057
2533
  };
2058
- window.posthog?.capture(
2059
- "add_payment_info",
2060
- this.enhanceWithAffiliateParams(params)
2061
- );
2534
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2535
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2536
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2537
+ window.posthog?.capture(eventName, enhancedParams);
2062
2538
  }
2063
2539
  /**
2064
2540
  * Convert an event to PostHog parameters
@@ -2121,7 +2597,6 @@ async function initTracking(config) {
2121
2597
  DEFAULT_CURRENCY,
2122
2598
  EventNames,
2123
2599
  EventType,
2124
- HARDCODED_HANDLE,
2125
2600
  eventPublisher,
2126
2601
  eventSubscriber,
2127
2602
  initTracking,