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
package/dist/index.js CHANGED
@@ -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
  }
@@ -261,11 +267,13 @@ __export(src_exports, {
261
267
  DEFAULT_CURRENCY: () => DEFAULT_CURRENCY,
262
268
  EventNames: () => EventNames,
263
269
  EventType: () => EventType,
270
+ FacebookCAPIService: () => FacebookCAPIService,
264
271
  GoogleAdapter: () => GoogleAdapter,
265
- HARDCODED_HANDLE: () => HARDCODED_HANDLE,
266
272
  KwikCheckoutAdapter: () => KwikCheckoutAdapter,
267
273
  KwikPassAdapter: () => KwikPassAdapter,
268
274
  MoengageAdapter: () => MoengageAdapter,
275
+ PRIMA_EXPERIMENT_COOKIES: () => PRIMA_EXPERIMENT_COOKIES,
276
+ PRIMA_EXPERIMENT_COOKIE_NAMES: () => PRIMA_EXPERIMENT_COOKIE_NAMES,
269
277
  PixelAdapter: () => PixelAdapter,
270
278
  PostHogAdapter: () => PostHogAdapter,
271
279
  ShopifyAdapter: () => ShopifyAdapter,
@@ -273,13 +281,18 @@ __export(src_exports, {
273
281
  captureAffiliateParams: () => captureAffiliateParams,
274
282
  clearAffiliateParams: () => clearAffiliateParams,
275
283
  createAdapterLogger: () => createAdapterLogger,
284
+ createFacebookCAPIService: () => createFacebookCAPIService,
276
285
  createLogger: () => createLogger,
277
286
  default: () => ShopkitAnalytics_default,
278
287
  eventPublisher: () => eventPublisher,
279
288
  eventSubscriber: () => eventSubscriber,
289
+ generateEventId: () => generateEventId,
280
290
  getAffiliateParams: () => getAffiliateParams,
281
291
  getAffiliateSource: () => getAffiliateSource,
292
+ getBrowserInfo: () => getBrowserInfo,
293
+ getExperimentParams: () => getExperimentParams,
282
294
  hasAffiliateData: () => hasAffiliateData,
295
+ hasExperimentData: () => hasExperimentData,
283
296
  initTracking: () => initTracking,
284
297
  initializeEventTracking: () => initializeEventTracking,
285
298
  logger: () => logger,
@@ -295,7 +308,14 @@ var import_react3 = require("react");
295
308
  var import_hydrogen_react2 = require("@shopify/hydrogen-react");
296
309
 
297
310
  // src/logger/index.ts
298
- var import_pino = __toESM(require("pino"));
311
+ var LOG_LEVELS = {
312
+ trace: 10,
313
+ debug: 20,
314
+ info: 30,
315
+ warn: 40,
316
+ error: 50,
317
+ fatal: 60
318
+ };
299
319
  var NoOpLogger = class _NoOpLogger {
300
320
  trace() {
301
321
  }
@@ -313,92 +333,109 @@ var NoOpLogger = class _NoOpLogger {
313
333
  return new _NoOpLogger();
314
334
  }
315
335
  };
316
- var PinoLogger = class _PinoLogger {
317
- constructor(logger2) {
318
- this.logger = logger2;
336
+ var UniversalLogger = class _UniversalLogger {
337
+ constructor(config, bindings = {}) {
338
+ this.config = config;
339
+ this.bindings = bindings;
340
+ }
341
+ shouldLog(level) {
342
+ return LOG_LEVELS[level] >= LOG_LEVELS[this.config.level];
343
+ }
344
+ formatMessage(level, message, args, error) {
345
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
346
+ const name = this.config.name;
347
+ let logMessage = this.config.prettyPrint ? `[${timestamp}] ${level.toUpperCase()} [${name}]: ${message}` : JSON.stringify({
348
+ timestamp,
349
+ level,
350
+ name,
351
+ message,
352
+ ...this.bindings,
353
+ ...args.length > 0 && { args },
354
+ ...error && {
355
+ error: { message: error.message, stack: error.stack }
356
+ }
357
+ });
358
+ if (this.config.prettyPrint && args.length > 0) {
359
+ logMessage += ` ${args.map(
360
+ (arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
361
+ ).join(" ")}`;
362
+ }
363
+ if (this.config.prettyPrint && error) {
364
+ logMessage += ` Error: ${error.message}`;
365
+ if (error.stack) {
366
+ logMessage += `
367
+ ${error.stack}`;
368
+ }
369
+ }
370
+ return this.redactSensitiveData(logMessage);
371
+ }
372
+ redactSensitiveData(message) {
373
+ let redactedMessage = message;
374
+ for (const field of this.config.redact) {
375
+ const regex = new RegExp(`"${field}"\\s*:\\s*"[^"]*"`, "gi");
376
+ redactedMessage = redactedMessage.replace(
377
+ regex,
378
+ `"${field}":"[REDACTED]"`
379
+ );
380
+ }
381
+ return redactedMessage;
382
+ }
383
+ log(level, message, args, error) {
384
+ if (!this.shouldLog(level)) return;
385
+ const formattedMessage = this.formatMessage(level, message, args, error);
386
+ switch (level) {
387
+ case "trace":
388
+ console.trace(formattedMessage);
389
+ break;
390
+ case "debug":
391
+ console.debug(formattedMessage);
392
+ break;
393
+ case "info":
394
+ console.info(formattedMessage);
395
+ break;
396
+ case "warn":
397
+ console.warn(formattedMessage);
398
+ break;
399
+ case "error":
400
+ case "fatal":
401
+ console.error(formattedMessage);
402
+ break;
403
+ }
319
404
  }
320
405
  trace(message, ...args) {
321
- this.logger.trace({ args }, message);
406
+ this.log("trace", message, args);
322
407
  }
323
408
  debug(message, ...args) {
324
- this.logger.debug({ args }, message);
409
+ this.log("debug", message, args);
325
410
  }
326
411
  info(message, ...args) {
327
- this.logger.info({ args }, message);
412
+ this.log("info", message, args);
328
413
  }
329
414
  warn(message, ...args) {
330
- this.logger.warn({ args }, message);
415
+ this.log("warn", message, args);
331
416
  }
332
417
  error(message, error, ...args) {
333
- this.logger.error({ error, args }, message);
418
+ this.log("error", message, args, error);
334
419
  }
335
420
  fatal(message, error, ...args) {
336
- this.logger.fatal({ error, args }, message);
421
+ this.log("fatal", message, args, error);
337
422
  }
338
423
  child(bindings) {
339
- return new _PinoLogger(this.logger.child(bindings));
424
+ return new _UniversalLogger(this.config, { ...this.bindings, ...bindings });
340
425
  }
341
426
  };
342
427
  function createLogger(config = {}) {
343
- const {
344
- level = "info",
345
- enabled = true,
346
- name = "@shopkit/analytics",
347
- prettyPrint = false,
348
- redact = []
349
- } = config;
350
- if (!enabled) {
351
- return new NoOpLogger();
352
- }
353
- const pinoConfig = {
354
- name,
355
- level,
356
- redact,
357
- browser: {
358
- asObject: true,
359
- serialize: true,
360
- write: {
361
- trace: (o) => console.trace(formatBrowserLog(o)),
362
- debug: (o) => console.debug(formatBrowserLog(o)),
363
- info: (o) => console.info(formatBrowserLog(o)),
364
- warn: (o) => console.warn(formatBrowserLog(o)),
365
- error: (o) => console.error(formatBrowserLog(o)),
366
- fatal: (o) => console.error(formatBrowserLog(o))
367
- }
368
- }
428
+ const fullConfig = {
429
+ level: config.level || "info",
430
+ enabled: config.enabled !== false,
431
+ name: config.name || "@shopkit/analytics",
432
+ prettyPrint: config.prettyPrint || false,
433
+ redact: config.redact || []
369
434
  };
370
- if (prettyPrint && typeof window === "undefined") {
371
- pinoConfig.transport = {
372
- target: "pino-pretty",
373
- options: {
374
- colorize: true,
375
- translateTime: "HH:MM:ss Z",
376
- ignore: "pid,hostname"
377
- }
378
- };
379
- }
380
- const pinoLogger = (0, import_pino.default)(pinoConfig);
381
- return new PinoLogger(pinoLogger);
382
- }
383
- function formatBrowserLog(logObj) {
384
- const { level, time, msg, name, args, error, ...rest } = logObj;
385
- let message = `[${name}] ${msg}`;
386
- if (args && args.length > 0) {
387
- message += ` ${args.map(
388
- (arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
389
- ).join(" ")}`;
390
- }
391
- if (error) {
392
- message += ` Error: ${error.message}`;
393
- if (error.stack) {
394
- message += `
395
- ${error.stack}`;
396
- }
397
- }
398
- if (Object.keys(rest).length > 0) {
399
- message += ` ${JSON.stringify(rest)}`;
435
+ if (!fullConfig.enabled) {
436
+ return new NoOpLogger();
400
437
  }
401
- return message;
438
+ return new UniversalLogger(fullConfig);
402
439
  }
403
440
  var logger = createLogger({
404
441
  enabled: true,
@@ -410,6 +447,43 @@ function createAdapterLogger(adapterName, config = {}) {
410
447
  return baseLogger.child({ adapter: adapterName });
411
448
  }
412
449
 
450
+ // src/experiment/constants.ts
451
+ var PRIMA_EXPERIMENT_COOKIES = {
452
+ HOME: "_prima_pr_ab_home",
453
+ COLLECTION: "_prima_pr_ab_collection",
454
+ PRODUCT: "_prima_pr_ab_product"
455
+ };
456
+ var PRIMA_EXPERIMENT_COOKIE_NAMES = Object.values(
457
+ PRIMA_EXPERIMENT_COOKIES
458
+ );
459
+
460
+ // src/experiment/experiment-tracker.ts
461
+ function getCookie(name) {
462
+ if (typeof document === "undefined") return null;
463
+ const value = `; ${document.cookie}`;
464
+ const parts = value.split(`; ${name}=`);
465
+ if (parts.length === 2) {
466
+ return parts.pop()?.split(";").shift() || null;
467
+ }
468
+ return null;
469
+ }
470
+ function getExperimentParams() {
471
+ return {
472
+ [PRIMA_EXPERIMENT_COOKIES.HOME]: getCookie(PRIMA_EXPERIMENT_COOKIES.HOME),
473
+ [PRIMA_EXPERIMENT_COOKIES.COLLECTION]: getCookie(
474
+ PRIMA_EXPERIMENT_COOKIES.COLLECTION
475
+ ),
476
+ [PRIMA_EXPERIMENT_COOKIES.PRODUCT]: getCookie(
477
+ PRIMA_EXPERIMENT_COOKIES.PRODUCT
478
+ )
479
+ };
480
+ }
481
+ function hasExperimentData() {
482
+ return PRIMA_EXPERIMENT_COOKIE_NAMES.some(
483
+ (cookieName) => getCookie(cookieName) !== null
484
+ );
485
+ }
486
+
413
487
  // src/adapters/base-adapter.ts
414
488
  var BaseAdapter = class {
415
489
  /**
@@ -447,6 +521,38 @@ var BaseAdapter = class {
447
521
  isEnabled() {
448
522
  return this.initialized;
449
523
  }
524
+ /**
525
+ * Extract adapter-specific parameters for this adapter
526
+ * @param params The adapter parameters object
527
+ * @returns Adapter-specific parameters or empty object
528
+ */
529
+ getAdapterParams(params) {
530
+ return params?.[this.name] || {};
531
+ }
532
+ /**
533
+ * Get custom event name or fall back to default
534
+ * @param params The adapter parameters object
535
+ * @param defaultName The default event name to use
536
+ * @returns Custom event name or default
537
+ */
538
+ getEventName(params, defaultName) {
539
+ const adapterParams = this.getAdapterParams(params);
540
+ return adapterParams.event_name || defaultName;
541
+ }
542
+ /**
543
+ * Merge standard event data with adapter-specific parameters
544
+ * @param params The adapter parameters object
545
+ * @param standardData The standard event data
546
+ * @returns Merged data with adapter-specific overrides
547
+ */
548
+ mergeEventData(standardData, params) {
549
+ const adapterParams = this.getAdapterParams(params);
550
+ const { event_name, ...customParams } = adapterParams;
551
+ return {
552
+ ...standardData,
553
+ ...customParams
554
+ };
555
+ }
450
556
  /**
451
557
  * Get a configuration value
452
558
  * @param key The configuration key
@@ -463,6 +569,21 @@ var BaseAdapter = class {
463
569
  getAffiliateParams() {
464
570
  return null;
465
571
  }
572
+ /**
573
+ * Get experiment parameters from cookies
574
+ * @returns Experiment parameters
575
+ */
576
+ getExperimentParams() {
577
+ try {
578
+ return getExperimentParams();
579
+ } catch (error) {
580
+ return {
581
+ _prima_pr_ab_home: null,
582
+ _prima_pr_ab_collection: null,
583
+ _prima_pr_ab_product: null
584
+ };
585
+ }
586
+ }
466
587
  /**
467
588
  * Enhance event parameters with affiliate data
468
589
  * @param params The original parameters
@@ -477,12 +598,23 @@ var BaseAdapter = class {
477
598
  ...affiliateParams
478
599
  };
479
600
  }
601
+ /**
602
+ * Enhance event parameters with experiment data
603
+ * @param params The original parameters
604
+ * @returns Parameters enhanced with experiment data
605
+ */
606
+ enhanceWithExperimentParams(params) {
607
+ const experimentParams = this.getExperimentParams();
608
+ return {
609
+ ...params,
610
+ experiment: experimentParams
611
+ };
612
+ }
480
613
  };
481
614
 
482
615
  // src/types.ts
483
616
  var EventType = /* @__PURE__ */ ((EventType2) => {
484
617
  EventType2["PRODUCT_VIEW"] = "product_view";
485
- EventType2["STARTED_ORDER"] = "started_order";
486
618
  EventType2["PAGE_VIEW"] = "page_view";
487
619
  EventType2["BUTTON_CLICK"] = "button_click";
488
620
  EventType2["FORM_SUBMISSION"] = "form_submission";
@@ -495,11 +627,6 @@ var EventType = /* @__PURE__ */ ((EventType2) => {
495
627
  EventType2["CHECKOUT_STARTED"] = "checkout_started";
496
628
  EventType2["CHECKOUT_COMPLETED"] = "checkout_completed";
497
629
  EventType2["SEARCH"] = "search";
498
- EventType2["CART_PAGE_LAND"] = "cart_page_land";
499
- EventType2["CLOSE_CART"] = "close_cart";
500
- EventType2["QUANTITY_CHANGE"] = "quantity_change";
501
- EventType2["FILTER_APPLIED"] = "filter_applied";
502
- EventType2["NEWSLETTER_SUBSCRIPTION"] = "newsletter_subscription";
503
630
  EventType2["USER_SIGNUP"] = "user_signup";
504
631
  EventType2["USER_LOGIN"] = "user_login";
505
632
  EventType2["CUSTOM"] = "custom";
@@ -510,25 +637,11 @@ var EventType = /* @__PURE__ */ ((EventType2) => {
510
637
  EventType2["FORM_START"] = "form_start";
511
638
  EventType2["ADD_PAYMENT_INFO"] = "add_payment_info";
512
639
  EventType2["CART_VIEWED"] = "cart_viewed";
513
- EventType2["PAGES_SCREENS_PER_SESSION"] = "pages_screens_per_session";
514
640
  EventType2["VIEW_CONTENT"] = "view_content";
515
641
  EventType2["PURCHASE"] = "purchase";
516
642
  EventType2["VIEW_SEARCH_RESULTS"] = "view_search_results";
517
643
  EventType2["ORDER_PLACED"] = "order_placed";
518
644
  EventType2["BEGIN_CHECKOUT"] = "begin_checkout";
519
- EventType2["ITEM_PURCHASED"] = "item_purchased";
520
- EventType2["UPDATE_CART"] = "update_cart";
521
- EventType2["CUSTOMER_REGISTERED"] = "customer_registered";
522
- EventType2["CUSTOMER_LOGGED_IN"] = "customer_logged_in";
523
- EventType2["SHOPIFY_CHECKOUT_UPDATED"] = "shopify_checkout_updated";
524
- EventType2["SHOPIFY_ABANDONED_CHECKOUT"] = "shopify_abandoned_checkout";
525
- EventType2["SHOPIFY_ORDER_FULFILLED"] = "shopify_order_fulfilled";
526
- EventType2["SHOPIFY_CHECKOUT_STARTED"] = "shopify_checkout_started";
527
- EventType2["SHOPIFY_ADD_TO_CART"] = "shopify_add_to_cart";
528
- EventType2["SHOPIFY_REMOVED_FROM_CART"] = "shopify_removed_from_cart";
529
- EventType2["SHOPIFY_UPDATE_CART"] = "shopify_update_cart";
530
- EventType2["SPINFORM_RESULT"] = "spinform_result";
531
- EventType2["COUPON_COPIED"] = "coupon_copied";
532
645
  EventType2["STARTED_CHECKOUT_GK"] = "started_checkout_gk";
533
646
  EventType2["MOBILE_ADDED_GK"] = "mobile_added_gk";
534
647
  EventType2["ADDRESS_SELECTED_GK"] = "address_selected_gk";
@@ -539,19 +652,60 @@ var EventType = /* @__PURE__ */ ((EventType2) => {
539
652
  EventType2["ORDER_COMPLETED"] = "order_completed";
540
653
  EventType2["PIN_CODE_ADDED_GK"] = "pin_code_added_gk";
541
654
  EventType2["ADDRESS_ADDED_GK"] = "address_added_gk";
542
- EventType2["KP_MP_PHONE_NUMBER_LOGGED_IN"] = "kp_mp_phone_number_logged_in";
543
- EventType2["KP_PHONE_NUMBER_LOGGED_IN"] = "kp_phone_number_logged_in";
544
- EventType2["KP_MP_SHOPIFY_LOGGED_IN"] = "kp_mp_shopify_logged_in";
545
- EventType2["KP_MP_SUCCESSFULLY_LOGGED_OUT"] = "kp_mp_successfully_logged_out";
546
- EventType2["KP_WHATSAPP_LOGGED_IN"] = "kp_whatsapp_logged_in";
547
- EventType2["KP_MP_TRUECALLER_LOGGED_IN"] = "kp_mp_truecaller_logged_in";
548
- EventType2["KP_MP_WHATSAPP_LOGGED_IN"] = "kp_mp_whatsapp_logged_in";
549
- EventType2["KP_TRUECALLER_LOGGED_IN"] = "kp_truecaller_logged_in";
550
- EventType2["KP_SHOPIFY_LOGGED_IN"] = "kp_shopify_logged_in";
551
- EventType2["KP_SUCCESSFULLY_LOGGED_OUT"] = "kp_successfully_logged_out";
552
655
  return EventType2;
553
656
  })(EventType || {});
554
657
 
658
+ // src/utils/event-id.ts
659
+ function generateEventId(eventType) {
660
+ const timestamp = Date.now();
661
+ const randomString = Math.random().toString(36).substring(2, 8);
662
+ return `${timestamp}_${randomString}_${eventType}`;
663
+ }
664
+ function getBrowserInfo() {
665
+ if (typeof window === "undefined") {
666
+ return {};
667
+ }
668
+ const userAgent = navigator.userAgent;
669
+ const fbc = getFacebookClickId();
670
+ const fbp = getFacebookBrowserId();
671
+ return {
672
+ clientUserAgent: userAgent,
673
+ fbc,
674
+ fbp
675
+ };
676
+ }
677
+ function getFacebookClickId() {
678
+ if (typeof window === "undefined") {
679
+ return void 0;
680
+ }
681
+ const urlParams = new URLSearchParams(window.location.search);
682
+ const fbclid = urlParams.get("fbclid");
683
+ if (fbclid) {
684
+ return `fb.1.${Date.now()}.${fbclid}`;
685
+ }
686
+ const cookies = document.cookie.split(";");
687
+ for (const cookie of cookies) {
688
+ const [name, value] = cookie.trim().split("=");
689
+ if (name === "_fbc") {
690
+ return value;
691
+ }
692
+ }
693
+ return void 0;
694
+ }
695
+ function getFacebookBrowserId() {
696
+ if (typeof window === "undefined") {
697
+ return void 0;
698
+ }
699
+ const cookies = document.cookie.split(";");
700
+ for (const cookie of cookies) {
701
+ const [name, value] = cookie.trim().split("=");
702
+ if (name === "_fbp") {
703
+ return value;
704
+ }
705
+ }
706
+ return void 0;
707
+ }
708
+
555
709
  // src/adapters/pixel-adapter.ts
556
710
  var PixelAdapter = class extends BaseAdapter {
557
711
  constructor(config) {
@@ -577,18 +731,34 @@ var PixelAdapter = class extends BaseAdapter {
577
731
  );
578
732
  return;
579
733
  }
580
- const pixelId = this.getConfig("pixelId");
581
734
  this.logger.info("Successfully initialized", { pixelId: "***" });
582
735
  this.initialized = true;
583
736
  }
584
737
  /**
585
738
  * Track an event with Facebook Pixel
586
739
  * @param event The event to track
740
+ * @param adapterParams Optional adapter-specific parameters
587
741
  */
588
- async trackEvent(event) {
742
+ async trackEvent(event, adapterParams) {
743
+ if (!event.eventId) {
744
+ event.eventId = generateEventId(event.type);
745
+ }
746
+ this.logger.debug("Tracking event", {
747
+ eventType: event.type,
748
+ eventId: event.eventId
749
+ });
750
+ await this.trackClientSide(event, adapterParams);
751
+ if (this.getConfig("enableCAPI", true)) {
752
+ await this.trackServerSide(event);
753
+ }
754
+ }
755
+ /**
756
+ * Track event on client-side (browser pixel)
757
+ */
758
+ async trackClientSide(event, adapterParams) {
589
759
  if (!this.initialized || typeof window === "undefined" || !window.fbq) {
590
760
  this.logger.warn(
591
- "Cannot track event, adapter not initialized or fbq not available",
761
+ "Cannot track client-side event, adapter not initialized or fbq not available",
592
762
  {
593
763
  eventType: event.type,
594
764
  initialized: this.initialized,
@@ -598,55 +768,96 @@ var PixelAdapter = class extends BaseAdapter {
598
768
  );
599
769
  return;
600
770
  }
601
- this.logger.debug("Tracking event", { eventType: event.type });
602
771
  switch (event.type) {
603
772
  case "page_view" /* PAGE_VIEW */:
604
- this.trackPageView(event);
773
+ this.trackPageView(event, adapterParams);
605
774
  break;
606
775
  case "view_content" /* VIEW_CONTENT */:
607
- this.trackViewContent(event);
776
+ this.trackViewContent(event, adapterParams);
608
777
  break;
609
778
  case "product_view" /* PRODUCT_VIEW */:
610
- this.trackProductView(event);
779
+ this.trackProductView(event, adapterParams);
611
780
  break;
612
781
  case "add_to_cart" /* ADD_TO_CART */:
613
- this.trackAddToCart(event);
782
+ this.trackAddToCart(event, adapterParams);
614
783
  break;
615
784
  case "checkout_started" /* CHECKOUT_STARTED */:
616
- this.trackCheckoutStarted(event);
785
+ this.trackCheckoutStarted(event, adapterParams);
617
786
  break;
618
787
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
619
- this.trackCheckoutCompleted(event);
788
+ this.trackCheckoutCompleted(event, adapterParams);
620
789
  break;
621
790
  case "purchase" /* PURCHASE */:
622
- this.trackPurchase(event);
791
+ this.trackPurchase(event, adapterParams);
623
792
  break;
624
793
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
625
- this.trackAddPaymentInfo(event);
794
+ this.trackAddPaymentInfo(event, adapterParams);
626
795
  break;
627
796
  case "search" /* SEARCH */:
628
- this.trackSearch(event);
797
+ this.trackSearch(event, adapterParams);
629
798
  break;
630
799
  default:
631
800
  this.logger.debug("Unhandled event type", { eventType: event.type });
632
801
  break;
633
802
  }
634
803
  }
804
+ /**
805
+ * Track event on server-side (CAPI) as backup
806
+ */
807
+ async trackServerSide(event) {
808
+ try {
809
+ const browserInfo = getBrowserInfo();
810
+ const payload = {
811
+ events: [event],
812
+ userInfo: browserInfo
813
+ };
814
+ const response = await fetch("/api/events", {
815
+ method: "POST",
816
+ headers: {
817
+ "Content-Type": "application/json"
818
+ },
819
+ body: JSON.stringify(payload)
820
+ });
821
+ if (!response.ok) {
822
+ throw new Error(`Server-side tracking failed: ${response.status}`);
823
+ }
824
+ this.logger.debug(
825
+ `FB Pixel: Server-side backup sent for event ${event.type}`
826
+ );
827
+ } catch (error) {
828
+ this.logger.error(
829
+ `FB Pixel: Server-side backup failed for event ${event.type}: ${error instanceof Error ? error.message : String(error)}`
830
+ );
831
+ }
832
+ }
635
833
  /**
636
834
  * Track a page view event
637
835
  * @param event The page view event
638
836
  */
639
- trackPageView(event) {
640
- const params = this.enhanceWithAffiliateParams({});
641
- window.fbq?.("track", "PageView", params);
642
- this.logger.debug("PageView event tracked", { params });
837
+ trackPageView(event, adapterParams) {
838
+ const eventName = this.getEventName(adapterParams, "PageView");
839
+ const affiliateParams = this.enhanceWithAffiliateParams({});
840
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
841
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
842
+ if (event.eventId) {
843
+ window.fbq?.("track", eventName, enhancedParams, {
844
+ eventID: event.eventId
845
+ });
846
+ } else {
847
+ window.fbq?.("track", eventName, enhancedParams);
848
+ }
849
+ this.logger.debug("PageView event tracked", {
850
+ eventName,
851
+ params: enhancedParams
852
+ });
643
853
  }
644
854
  /**
645
855
  * Track a product view event
646
856
  * @param event The product view event
647
857
  */
648
- trackProductView(event) {
649
- const params = {
858
+ trackProductView(event, adapterParams) {
859
+ const eventName = this.getEventName(adapterParams, "ViewContent");
860
+ const baseParams = {
650
861
  content_type: "product_group",
651
862
  content_ids: [event.productId],
652
863
  content_name: event.productName,
@@ -654,34 +865,56 @@ var PixelAdapter = class extends BaseAdapter {
654
865
  value: event.price,
655
866
  currency: event.currency || "INR"
656
867
  };
657
- window.fbq?.(
658
- "track",
659
- "ViewContent",
660
- this.enhanceWithAffiliateParams(params)
661
- );
868
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
869
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
870
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
871
+ if (event.eventId) {
872
+ window.fbq?.("track", eventName, enhancedParams, {
873
+ eventID: event.eventId
874
+ });
875
+ } else {
876
+ window.fbq?.("track", eventName, enhancedParams);
877
+ }
878
+ this.logger.debug("ProductView event tracked", {
879
+ eventName,
880
+ params: enhancedParams
881
+ });
662
882
  }
663
883
  /**
664
884
  * Track an add to cart event
665
885
  * @param event The add to cart event
666
886
  */
667
- trackAddToCart(event) {
668
- const params = {
887
+ trackAddToCart(event, adapterParams) {
888
+ const eventName = this.getEventName(adapterParams, "AddToCart");
889
+ const baseParams = {
669
890
  content_type: "product_group",
670
891
  content_ids: [event.productId],
671
892
  content_name: event.productName,
672
893
  value: event.price,
673
894
  currency: event.currency || "INR"
674
895
  };
675
- const enhancedParams = this.enhanceWithAffiliateParams(params);
676
- window.fbq?.("track", "AddToCart", enhancedParams);
677
- this.logger.debug("AddToCart event tracked", { params: enhancedParams });
896
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
897
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
898
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
899
+ if (event.eventId) {
900
+ window.fbq?.("track", eventName, enhancedParams, {
901
+ eventID: event.eventId
902
+ });
903
+ } else {
904
+ window.fbq?.("track", eventName, enhancedParams);
905
+ }
906
+ this.logger.debug("AddToCart event tracked", {
907
+ eventName,
908
+ params: enhancedParams
909
+ });
678
910
  }
679
911
  /**
680
912
  * Track a checkout started event
681
913
  * @param event The checkout started event
682
914
  */
683
- trackCheckoutStarted(event) {
684
- const params = {
915
+ trackCheckoutStarted(event, adapterParams) {
916
+ const eventName = this.getEventName(adapterParams, "InitiateCheckout");
917
+ const baseParams = {
685
918
  content_ids: event.items.map((item) => item.productId),
686
919
  content_type: "product_group",
687
920
  value: event.cartValue,
@@ -693,18 +926,28 @@ var PixelAdapter = class extends BaseAdapter {
693
926
  item_price: item.price
694
927
  }))
695
928
  };
696
- window.fbq?.(
697
- "track",
698
- "InitiateCheckout",
699
- this.enhanceWithAffiliateParams(params)
700
- );
929
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
930
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
931
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
932
+ if (event.eventId) {
933
+ window.fbq?.("track", eventName, enhancedParams, {
934
+ eventID: event.eventId
935
+ });
936
+ } else {
937
+ window.fbq?.("track", eventName, enhancedParams);
938
+ }
939
+ this.logger.debug("CheckoutStarted event tracked", {
940
+ eventName,
941
+ params: enhancedParams
942
+ });
701
943
  }
702
944
  /**
703
945
  * Track a checkout completed event
704
946
  * @param event The checkout completed event
705
947
  */
706
- trackCheckoutCompleted(event) {
707
- const params = {
948
+ trackCheckoutCompleted(event, adapterParams) {
949
+ const eventName = this.getEventName(adapterParams, "Purchase");
950
+ const baseParams = {
708
951
  value: event.cartValue,
709
952
  currency: event.currency || "INR",
710
953
  content_type: "product_group",
@@ -716,26 +959,54 @@ var PixelAdapter = class extends BaseAdapter {
716
959
  item_price: item.price
717
960
  }))
718
961
  };
719
- window.fbq?.("track", "Purchase", this.enhanceWithAffiliateParams(params));
962
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
963
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
964
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
965
+ if (event.eventId) {
966
+ window.fbq?.("track", eventName, enhancedParams, {
967
+ eventID: event.eventId
968
+ });
969
+ } else {
970
+ window.fbq?.("track", eventName, enhancedParams);
971
+ }
972
+ this.logger.debug("CheckoutCompleted event tracked", {
973
+ eventName,
974
+ params: enhancedParams
975
+ });
720
976
  }
721
977
  /**
722
978
  * Track a search event
723
979
  * @param event The search event
724
980
  */
725
- trackSearch(event) {
726
- const params = {
981
+ trackSearch(event, adapterParams) {
982
+ const eventName = this.getEventName(adapterParams, "Search");
983
+ const baseParams = {
727
984
  search_string: event.searchTerm,
728
985
  content_category: "product",
729
986
  content_ids: event.content_ids || []
730
987
  };
731
- window.fbq?.("track", "Search", this.enhanceWithAffiliateParams(params));
988
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
989
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
990
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
991
+ if (event.eventId) {
992
+ window.fbq?.("track", eventName, enhancedParams, {
993
+ eventID: event.eventId
994
+ });
995
+ } else {
996
+ window.fbq?.("track", eventName, enhancedParams);
997
+ }
998
+ this.logger.debug("Search event tracked", {
999
+ eventName,
1000
+ params: enhancedParams
1001
+ });
732
1002
  }
733
1003
  /**
734
1004
  * Track an add payment info event
735
1005
  * @param event The add payment info event
736
1006
  */
737
- trackAddPaymentInfo(event) {
738
- const params = {
1007
+ trackAddPaymentInfo(event, adapterParams) {
1008
+ const eventName = this.getEventName(adapterParams, "AddPaymentInfo");
1009
+ const baseParams = {
739
1010
  value: event.cartValue,
740
1011
  currency: event.currency || "INR",
741
1012
  content_type: "product_group",
@@ -747,18 +1018,28 @@ var PixelAdapter = class extends BaseAdapter {
747
1018
  })),
748
1019
  payment_type: event.paymentType || ""
749
1020
  };
750
- window.fbq?.(
751
- "track",
752
- "AddPaymentInfo",
753
- this.enhanceWithAffiliateParams(params)
754
- );
1021
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1022
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1023
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1024
+ if (event.eventId) {
1025
+ window.fbq?.("track", eventName, enhancedParams, {
1026
+ eventID: event.eventId
1027
+ });
1028
+ } else {
1029
+ window.fbq?.("track", eventName, enhancedParams);
1030
+ }
1031
+ this.logger.debug("AddPaymentInfo event tracked", {
1032
+ eventName,
1033
+ params: enhancedParams
1034
+ });
755
1035
  }
756
1036
  /**
757
1037
  * Track a view content event
758
1038
  * @param event The view content event
759
1039
  */
760
- trackViewContent(event) {
761
- const params = {
1040
+ trackViewContent(event, adapterParams) {
1041
+ const eventName = this.getEventName(adapterParams, "ViewContent");
1042
+ const baseParams = {
762
1043
  content_type: event.content_type || "product",
763
1044
  content_ids: event.content_ids || [],
764
1045
  content_name: event.content_name || "",
@@ -766,18 +1047,28 @@ var PixelAdapter = class extends BaseAdapter {
766
1047
  value: event.value || 0,
767
1048
  currency: event.currency || "INR"
768
1049
  };
769
- window.fbq?.(
770
- "track",
771
- "ViewContent",
772
- this.enhanceWithAffiliateParams(params)
773
- );
1050
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1051
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1052
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1053
+ if (event.eventId) {
1054
+ window.fbq?.("track", eventName, enhancedParams, {
1055
+ eventID: event.eventId
1056
+ });
1057
+ } else {
1058
+ window.fbq?.("track", eventName, enhancedParams);
1059
+ }
1060
+ this.logger.debug("ViewContent event tracked", {
1061
+ eventName,
1062
+ params: enhancedParams
1063
+ });
774
1064
  }
775
1065
  /**
776
1066
  * Track a purchase event
777
1067
  * @param event The purchase event
778
1068
  */
779
- trackPurchase(event) {
780
- const params = {
1069
+ trackPurchase(event, adapterParams) {
1070
+ const eventName = this.getEventName(adapterParams, "Purchase");
1071
+ const baseParams = {
781
1072
  value: event.value,
782
1073
  currency: event.currency || "INR",
783
1074
  content_type: event.content_type || "product_group",
@@ -785,15 +1076,20 @@ var PixelAdapter = class extends BaseAdapter {
785
1076
  num_items: event.num_items || 1,
786
1077
  contents: event.contents || []
787
1078
  };
788
- window.fbq?.("track", "Purchase", this.enhanceWithAffiliateParams(params));
789
- }
790
- /**
791
- * Convert an event to Facebook Pixel parameters
792
- * @param event The event to convert
793
- */
794
- eventToParams(event) {
795
- const { type, timestamp, ...params } = event;
796
- return this.enhanceWithAffiliateParams(params);
1079
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1080
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1081
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1082
+ if (event.eventId) {
1083
+ window.fbq?.("track", eventName, enhancedParams, {
1084
+ eventID: event.eventId
1085
+ });
1086
+ } else {
1087
+ window.fbq?.("track", eventName, enhancedParams);
1088
+ }
1089
+ this.logger.debug("Purchase event tracked", {
1090
+ eventName,
1091
+ params: enhancedParams
1092
+ });
797
1093
  }
798
1094
  };
799
1095
 
@@ -842,8 +1138,9 @@ var GoogleAdapter = class extends BaseAdapter {
842
1138
  /**
843
1139
  * Track an event with Google Analytics
844
1140
  * @param event The event to track
1141
+ * @param adapterParams Optional adapter-specific parameters
845
1142
  */
846
- async trackEvent(event) {
1143
+ async trackEvent(event, adapterParams) {
847
1144
  this.logger.debug("Attempting to track event", {
848
1145
  initialized: this.initialized,
849
1146
  hasWindow: typeof window !== "undefined",
@@ -869,76 +1166,94 @@ var GoogleAdapter = class extends BaseAdapter {
869
1166
  });
870
1167
  switch (event.type) {
871
1168
  case "page_view" /* PAGE_VIEW */:
872
- this.trackPageView(event, measurementId);
1169
+ this.trackPageView(
1170
+ event,
1171
+ measurementId,
1172
+ adapterParams
1173
+ );
873
1174
  break;
874
1175
  case "user_engagement" /* USER_ENGAGEMENT */:
875
- this.trackUserEngagement();
1176
+ this.trackUserEngagement(adapterParams);
876
1177
  break;
877
1178
  case "session_start" /* SESSION_START */:
878
- this.trackSessionStart();
1179
+ this.trackSessionStart(adapterParams);
879
1180
  break;
880
1181
  case "first_visit" /* FIRST_VISIT */:
881
- this.trackFirstVisit();
1182
+ this.trackFirstVisit(adapterParams);
882
1183
  break;
883
1184
  case "view_item" /* VIEW_ITEM */:
884
- this.trackViewItem(event);
1185
+ this.trackViewItem(event, adapterParams);
885
1186
  break;
886
1187
  case "viewed_product" /* VIEWED_PRODUCT */:
887
- this.trackViewedProduct(event);
1188
+ this.trackViewedProduct(event, adapterParams);
888
1189
  break;
889
1190
  case "checkout_payment" /* CHECKOUT_PAYMENT */:
890
- this.trackCheckoutPayment(event);
1191
+ this.trackCheckoutPayment(
1192
+ event,
1193
+ adapterParams
1194
+ );
891
1195
  break;
892
1196
  case "scroll" /* SCROLL */:
893
- this.trackScroll();
1197
+ this.trackScroll(adapterParams);
894
1198
  break;
895
1199
  case "add_to_cart" /* ADD_TO_CART */:
896
- case "shopify_add_to_cart" /* SHOPIFY_ADD_TO_CART */:
897
- this.trackAddToCart(event);
1200
+ this.trackAddToCart(event, adapterParams);
898
1201
  break;
899
1202
  case "form_start" /* FORM_START */:
900
- this.trackFormStart();
1203
+ this.trackFormStart(adapterParams);
901
1204
  break;
902
1205
  case "checkout_started" /* CHECKOUT_STARTED */:
903
- this.trackCheckoutStarted(event);
1206
+ this.trackCheckoutStarted(
1207
+ event,
1208
+ adapterParams
1209
+ );
904
1210
  break;
905
1211
  case "form_submission" /* FORM_SUBMISSION */:
906
- this.trackFormSubmission(event);
1212
+ this.trackFormSubmission(event, adapterParams);
907
1213
  break;
908
1214
  case "search" /* SEARCH */:
909
- this.trackSearch(event);
1215
+ this.trackSearch(event, adapterParams);
910
1216
  break;
911
1217
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
912
- this.trackCheckoutCompleted(event);
1218
+ this.trackCheckoutCompleted(
1219
+ event,
1220
+ adapterParams
1221
+ );
913
1222
  break;
914
1223
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
915
- this.trackAddPaymentInfo(event);
1224
+ this.trackAddPaymentInfo(event, adapterParams);
916
1225
  break;
917
1226
  case "view_content" /* VIEW_CONTENT */:
918
- this.trackViewContent(event);
1227
+ this.trackViewContent(event, adapterParams);
919
1228
  break;
920
1229
  case "purchase" /* PURCHASE */:
921
- this.trackPurchase(event);
1230
+ this.trackPurchase(event, adapterParams);
922
1231
  break;
923
1232
  case "view_search_results" /* VIEW_SEARCH_RESULTS */:
924
- this.trackViewSearchResults(event);
1233
+ this.trackViewSearchResults(
1234
+ event,
1235
+ adapterParams
1236
+ );
925
1237
  break;
926
1238
  case "order_placed" /* ORDER_PLACED */:
927
- this.trackOrderPlaced(event);
1239
+ this.trackOrderPlaced(event, adapterParams);
928
1240
  break;
929
1241
  case "begin_checkout" /* BEGIN_CHECKOUT */:
930
- this.trackBeginCheckout(event);
1242
+ this.trackBeginCheckout(event, adapterParams);
931
1243
  break;
932
1244
  case "custom" /* CUSTOM */:
933
- this.trackCustomEvent(event);
1245
+ this.trackCustomEvent(event, adapterParams);
934
1246
  break;
935
1247
  default: {
936
- const params = this.eventToParams(event);
937
- window.gtag(
938
- "event",
939
- event.type,
940
- this.enhanceWithAffiliateParams(params)
1248
+ const eventName = this.getEventName(adapterParams, event.type);
1249
+ const baseParams = this.eventToParams(event);
1250
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1251
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1252
+ const enhancedParams = this.mergeEventData(
1253
+ experimentParams,
1254
+ adapterParams
941
1255
  );
1256
+ window.gtag("event", eventName, enhancedParams);
942
1257
  break;
943
1258
  }
944
1259
  }
@@ -948,8 +1263,9 @@ var GoogleAdapter = class extends BaseAdapter {
948
1263
  * @param event The page view event
949
1264
  * @param measurementId The Google Analytics measurement ID
950
1265
  */
951
- trackPageView(event, measurementId) {
952
- const params = {
1266
+ trackPageView(event, measurementId, adapterParams) {
1267
+ const eventName = this.getEventName(adapterParams, "page_view");
1268
+ const baseParams = {
953
1269
  page_path: event.path,
954
1270
  page_title: event.title || document.title,
955
1271
  page_location: event.page_location || window.location.href,
@@ -972,14 +1288,14 @@ var GoogleAdapter = class extends BaseAdapter {
972
1288
  user_properties: event.user_properties,
973
1289
  session_engaged: event.session_engaged
974
1290
  };
975
- window.gtag?.(
976
- "event",
977
- "page_view",
978
- this.enhanceWithAffiliateParams(params)
979
- );
980
- }
981
- trackUserEngagement() {
982
- const params = {
1291
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1292
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1293
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1294
+ window.gtag?.("event", eventName, enhancedParams);
1295
+ }
1296
+ trackUserEngagement(adapterParams) {
1297
+ const eventName = this.getEventName(adapterParams, "user_engagement");
1298
+ const baseParams = {
983
1299
  batch_ordering_id: "",
984
1300
  batch_page_id: "",
985
1301
  campaign: "",
@@ -996,14 +1312,14 @@ var GoogleAdapter = class extends BaseAdapter {
996
1312
  srsltid: "",
997
1313
  term: ""
998
1314
  };
999
- window.gtag?.(
1000
- "event",
1001
- "user_engagement",
1002
- this.enhanceWithAffiliateParams(params)
1003
- );
1004
- }
1005
- trackSessionStart() {
1006
- const params = {
1315
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1316
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1317
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1318
+ window.gtag?.("event", eventName, enhancedParams);
1319
+ }
1320
+ trackSessionStart(adapterParams) {
1321
+ const eventName = this.getEventName(adapterParams, "session_start");
1322
+ const baseParams = {
1007
1323
  batch_ordering_id: "",
1008
1324
  batch_page_id: "",
1009
1325
  campaign: "",
@@ -1022,14 +1338,14 @@ var GoogleAdapter = class extends BaseAdapter {
1022
1338
  srsltid: "",
1023
1339
  term: ""
1024
1340
  };
1025
- window.gtag?.(
1026
- "event",
1027
- "session_start",
1028
- this.enhanceWithAffiliateParams(params)
1029
- );
1030
- }
1031
- trackFirstVisit() {
1032
- const params = {
1341
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1342
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1343
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1344
+ window.gtag?.("event", eventName, enhancedParams);
1345
+ }
1346
+ trackFirstVisit(adapterParams) {
1347
+ const eventName = this.getEventName(adapterParams, "first_visit");
1348
+ const baseParams = {
1033
1349
  batch_ordering_id: "",
1034
1350
  batch_page_id: "",
1035
1351
  campaign: "",
@@ -1050,25 +1366,26 @@ var GoogleAdapter = class extends BaseAdapter {
1050
1366
  page_source: "",
1051
1367
  page_term: ""
1052
1368
  };
1053
- window.gtag?.(
1054
- "event",
1055
- "first_visit",
1056
- this.enhanceWithAffiliateParams(params)
1057
- );
1058
- }
1059
- trackViewItem(event) {
1060
- window.gtag?.(
1061
- "event",
1062
- "view_item",
1063
- this.enhanceWithAffiliateParams({
1064
- currency: event.currency,
1065
- value: event.value,
1066
- items: event.items
1067
- })
1068
- );
1069
- }
1070
- trackScroll() {
1071
- const params = {
1369
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1370
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1371
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1372
+ window.gtag?.("event", eventName, enhancedParams);
1373
+ }
1374
+ trackViewItem(event, adapterParams) {
1375
+ const eventName = this.getEventName(adapterParams, "view_item");
1376
+ const baseParams = {
1377
+ currency: event.currency,
1378
+ value: event.value,
1379
+ items: event.items
1380
+ };
1381
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1382
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1383
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1384
+ window.gtag?.("event", eventName, enhancedParams);
1385
+ }
1386
+ trackScroll(adapterParams) {
1387
+ const eventName = this.getEventName(adapterParams, "scroll");
1388
+ const baseParams = {
1072
1389
  batch_ordering_id: "",
1073
1390
  batch_page_id: "",
1074
1391
  engagement_time_msec: void 0,
@@ -1082,46 +1399,52 @@ var GoogleAdapter = class extends BaseAdapter {
1082
1399
  percent_scrolled: 90
1083
1400
  // or dynamically captured
1084
1401
  };
1085
- window.gtag?.("event", "scroll", this.enhanceWithAffiliateParams(params));
1086
- }
1087
- trackCheckoutPayment(event) {
1088
- window.gtag?.(
1089
- "event",
1090
- "checkout_payment",
1091
- this.enhanceWithAffiliateParams({
1092
- currency: event.currency,
1093
- value: event.cartValue,
1094
- items: event.items.map((item) => ({
1095
- item_id: item.productId,
1096
- item_name: item.productName,
1097
- price: item.price,
1098
- quantity: item.quantity
1099
- }))
1100
- })
1101
- );
1102
- }
1103
- trackViewedProduct(event) {
1104
- window.gtag?.(
1105
- "event",
1106
- "viewed_product",
1107
- this.enhanceWithAffiliateParams({
1108
- currency: event.currency,
1109
- value: event.price,
1110
- items: [
1111
- {
1112
- item_id: event.productId,
1113
- item_name: event.productName,
1114
- price: event.price,
1115
- currency: event.currency
1116
- }
1117
- ],
1118
- view_duration: event.viewDuration
1119
- })
1120
- );
1402
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1403
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1404
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1405
+ window.gtag?.("event", eventName, enhancedParams);
1406
+ }
1407
+ trackCheckoutPayment(event, adapterParams) {
1408
+ const eventName = this.getEventName(adapterParams, "checkout_payment");
1409
+ const baseParams = {
1410
+ currency: event.currency,
1411
+ value: event.cartValue,
1412
+ items: event.items.map((item) => ({
1413
+ item_id: item.productId,
1414
+ item_name: item.productName,
1415
+ price: item.price,
1416
+ quantity: item.quantity
1417
+ }))
1418
+ };
1419
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1420
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1421
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1422
+ window.gtag?.("event", eventName, enhancedParams);
1423
+ }
1424
+ trackViewedProduct(event, adapterParams) {
1425
+ const eventName = this.getEventName(adapterParams, "viewed_product");
1426
+ const baseParams = {
1427
+ currency: event.currency,
1428
+ value: event.price,
1429
+ items: [
1430
+ {
1431
+ item_id: event.productId,
1432
+ item_name: event.productName,
1433
+ price: event.price,
1434
+ currency: event.currency
1435
+ }
1436
+ ],
1437
+ view_duration: event.viewDuration
1438
+ };
1439
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1440
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1441
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1442
+ window.gtag?.("event", eventName, enhancedParams);
1121
1443
  }
1122
- trackAddToCart(event) {
1444
+ trackAddToCart(event, adapterParams) {
1123
1445
  this.logger.debug("Processing add_to_cart event", { event });
1124
- const params = {
1446
+ const eventName = this.getEventName(adapterParams, "add_to_cart");
1447
+ const baseParams = {
1125
1448
  currency: event.currency || "INR",
1126
1449
  value: event.price * (event.quantity || 1),
1127
1450
  // Calculate total value
@@ -1147,14 +1470,18 @@ var GoogleAdapter = class extends BaseAdapter {
1147
1470
  user_id: event.user_id,
1148
1471
  user_properties: event.user_properties
1149
1472
  };
1150
- const enhancedParams = this.enhanceWithAffiliateParams(params);
1473
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1474
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1475
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1151
1476
  this.logger.debug("Sending add_to_cart event to gtag", {
1477
+ eventName,
1152
1478
  params: enhancedParams
1153
1479
  });
1154
- window.gtag?.("event", "add_to_cart", enhancedParams);
1480
+ window.gtag?.("event", eventName, enhancedParams);
1155
1481
  }
1156
- trackFormStart() {
1157
- const params = {
1482
+ trackFormStart(adapterParams) {
1483
+ const eventName = this.getEventName(adapterParams, "form_start");
1484
+ const baseParams = {
1158
1485
  batch_ordering_id: "",
1159
1486
  batch_page_id: "",
1160
1487
  engagement_time_msec: void 0,
@@ -1172,14 +1499,14 @@ var GoogleAdapter = class extends BaseAdapter {
1172
1499
  page_referrer: document.referrer,
1173
1500
  page_title: document.title
1174
1501
  };
1175
- window.gtag?.(
1176
- "event",
1177
- "form_start",
1178
- this.enhanceWithAffiliateParams(params)
1179
- );
1180
- }
1181
- trackCheckoutStarted(event) {
1182
- const params = {
1502
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1503
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1504
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1505
+ window.gtag?.("event", eventName, enhancedParams);
1506
+ }
1507
+ trackCheckoutStarted(event, adapterParams) {
1508
+ const eventName = this.getEventName(adapterParams, "begin_checkout");
1509
+ const baseParams = {
1183
1510
  batch_ordering_id: "",
1184
1511
  batch_page_id: "",
1185
1512
  currency: event.currency || "INR",
@@ -1202,14 +1529,14 @@ var GoogleAdapter = class extends BaseAdapter {
1202
1529
  item_variant: item.variant
1203
1530
  }))
1204
1531
  };
1205
- window.gtag?.(
1206
- "event",
1207
- "begin_checkout",
1208
- this.enhanceWithAffiliateParams(params)
1209
- );
1210
- }
1211
- trackFormSubmission(event) {
1212
- const params = {
1532
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1533
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1534
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1535
+ window.gtag?.("event", eventName, enhancedParams);
1536
+ }
1537
+ trackFormSubmission(event, adapterParams) {
1538
+ const eventName = this.getEventName(adapterParams, "form_submit");
1539
+ const baseParams = {
1213
1540
  batch_ordering_id: "",
1214
1541
  batch_page_id: "",
1215
1542
  engagement_time_msec: void 0,
@@ -1223,14 +1550,14 @@ var GoogleAdapter = class extends BaseAdapter {
1223
1550
  page_referrer: document.referrer,
1224
1551
  page_title: document.title
1225
1552
  };
1226
- window.gtag?.(
1227
- "event",
1228
- "form_submit",
1229
- this.enhanceWithAffiliateParams(params)
1230
- );
1231
- }
1232
- trackSearch(event) {
1233
- const params = {
1553
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1554
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1555
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1556
+ window.gtag?.("event", eventName, enhancedParams);
1557
+ }
1558
+ trackSearch(event, adapterParams) {
1559
+ const eventName = this.getEventName(adapterParams, "search");
1560
+ const baseParams = {
1234
1561
  batch_ordering_id: "",
1235
1562
  batch_page_id: "",
1236
1563
  engagement_time_msec: void 0,
@@ -1242,14 +1569,18 @@ var GoogleAdapter = class extends BaseAdapter {
1242
1569
  page_title: document.title,
1243
1570
  search_term: event.searchTerm
1244
1571
  };
1245
- window.gtag?.("event", "search", this.enhanceWithAffiliateParams(params));
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);
1246
1576
  }
1247
1577
  /**
1248
1578
  * Track a checkout completed event
1249
1579
  * @param event The checkout completed event
1250
1580
  */
1251
- trackCheckoutCompleted(event) {
1252
- const params = {
1581
+ trackCheckoutCompleted(event, adapterParams) {
1582
+ const eventName = this.getEventName(adapterParams, "purchase");
1583
+ const baseParams = {
1253
1584
  transaction_id: event.orderId,
1254
1585
  currency: event.currency || "INR",
1255
1586
  value: event.cartValue,
@@ -1261,22 +1592,30 @@ var GoogleAdapter = class extends BaseAdapter {
1261
1592
  item_variant: item.variant
1262
1593
  }))
1263
1594
  };
1264
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
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);
1265
1599
  }
1266
1600
  /**
1267
1601
  * Track a custom event
1268
1602
  * @param event The custom event
1269
1603
  */
1270
- trackCustomEvent(event) {
1271
- const params = event.properties || {};
1272
- window.gtag?.("event", event.name, this.enhanceWithAffiliateParams(params));
1604
+ trackCustomEvent(event, adapterParams) {
1605
+ const eventName = this.getEventName(adapterParams, event.name);
1606
+ const baseParams = event.properties || {};
1607
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1608
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1609
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1610
+ window.gtag?.("event", eventName, enhancedParams);
1273
1611
  }
1274
1612
  /**
1275
1613
  * Track an add payment info event
1276
1614
  * @param event The add payment info event
1277
1615
  */
1278
- trackAddPaymentInfo(event) {
1279
- const params = {
1616
+ trackAddPaymentInfo(event, adapterParams) {
1617
+ const eventName = this.getEventName(adapterParams, "add_payment_info");
1618
+ const baseParams = {
1280
1619
  currency: event.currency || "INR",
1281
1620
  value: event.cartValue,
1282
1621
  payment_type: event.paymentType || "",
@@ -1288,18 +1627,18 @@ var GoogleAdapter = class extends BaseAdapter {
1288
1627
  item_variant: item.variant
1289
1628
  }))
1290
1629
  };
1291
- window.gtag?.(
1292
- "event",
1293
- "add_payment_info",
1294
- this.enhanceWithAffiliateParams(params)
1295
- );
1630
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1631
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1632
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1633
+ window.gtag?.("event", eventName, enhancedParams);
1296
1634
  }
1297
1635
  /**
1298
1636
  * Track a view content event
1299
1637
  * @param event The view content event
1300
1638
  */
1301
- trackViewContent(event) {
1302
- const params = {
1639
+ trackViewContent(event, adapterParams) {
1640
+ const eventName = this.getEventName(adapterParams, "view_item");
1641
+ const baseParams = {
1303
1642
  currency: event.currency || "USD",
1304
1643
  value: event.value || 0,
1305
1644
  items: event.items?.map((item) => ({
@@ -1328,18 +1667,18 @@ var GoogleAdapter = class extends BaseAdapter {
1328
1667
  user_id: event.user_id,
1329
1668
  user_properties: event.user_properties
1330
1669
  };
1331
- window.gtag?.(
1332
- "event",
1333
- "view_item",
1334
- this.enhanceWithAffiliateParams(params)
1335
- );
1670
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1671
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1672
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1673
+ window.gtag?.("event", eventName, enhancedParams);
1336
1674
  }
1337
1675
  /**
1338
1676
  * Track a purchase event
1339
1677
  * @param event The purchase event
1340
1678
  */
1341
- trackPurchase(event) {
1342
- const params = {
1679
+ trackPurchase(event, adapterParams) {
1680
+ const eventName = this.getEventName(adapterParams, "purchase");
1681
+ const baseParams = {
1343
1682
  transaction_id: event.transaction_id,
1344
1683
  value: event.value,
1345
1684
  currency: event.currency || "USD",
@@ -1372,14 +1711,18 @@ var GoogleAdapter = class extends BaseAdapter {
1372
1711
  user_id: event.user_id,
1373
1712
  user_properties: event.user_properties
1374
1713
  };
1375
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1714
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1715
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1716
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1717
+ window.gtag?.("event", eventName, enhancedParams);
1376
1718
  }
1377
1719
  /**
1378
1720
  * Track a view search results event
1379
1721
  * @param event The view search results event
1380
1722
  */
1381
- trackViewSearchResults(event) {
1382
- const params = {
1723
+ trackViewSearchResults(event, adapterParams) {
1724
+ const eventName = this.getEventName(adapterParams, "view_search_results");
1725
+ const baseParams = {
1383
1726
  search_term: event.search_term,
1384
1727
  // GA4-specific parameters
1385
1728
  batch_ordering_id: event.batch_ordering_id || "",
@@ -1394,18 +1737,18 @@ var GoogleAdapter = class extends BaseAdapter {
1394
1737
  user_id: event.user_id,
1395
1738
  user_properties: event.user_properties
1396
1739
  };
1397
- window.gtag?.(
1398
- "event",
1399
- "view_search_results",
1400
- this.enhanceWithAffiliateParams(params)
1401
- );
1740
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1741
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1742
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1743
+ window.gtag?.("event", eventName, enhancedParams);
1402
1744
  }
1403
1745
  /**
1404
1746
  * Track an order placed event
1405
1747
  * @param event The order placed event
1406
1748
  */
1407
- trackOrderPlaced(event) {
1408
- const params = {
1749
+ trackOrderPlaced(event, adapterParams) {
1750
+ const eventName = this.getEventName(adapterParams, "purchase");
1751
+ const baseParams = {
1409
1752
  transaction_id: event.order_id,
1410
1753
  value: event.total_amount,
1411
1754
  currency: event.currency || "USD",
@@ -1431,14 +1774,18 @@ var GoogleAdapter = class extends BaseAdapter {
1431
1774
  user_id: event.user_id,
1432
1775
  user_properties: event.user_properties
1433
1776
  };
1434
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1777
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1778
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1779
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1780
+ window.gtag?.("event", eventName, enhancedParams);
1435
1781
  }
1436
1782
  /**
1437
1783
  * Track a begin checkout event
1438
1784
  * @param event The begin checkout event
1439
1785
  */
1440
- trackBeginCheckout(event) {
1441
- const params = {
1786
+ trackBeginCheckout(event, adapterParams) {
1787
+ const eventName = this.getEventName(adapterParams, "begin_checkout");
1788
+ const baseParams = {
1442
1789
  currency: event.currency || "USD",
1443
1790
  value: event.value || 0,
1444
1791
  coupon: event.coupon,
@@ -1468,11 +1815,10 @@ var GoogleAdapter = class extends BaseAdapter {
1468
1815
  user_id: event.user_id,
1469
1816
  user_properties: event.user_properties
1470
1817
  };
1471
- window.gtag?.(
1472
- "event",
1473
- "begin_checkout",
1474
- this.enhanceWithAffiliateParams(params)
1475
- );
1818
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1819
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1820
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
1821
+ window.gtag?.("event", eventName, enhancedParams);
1476
1822
  }
1477
1823
  /**
1478
1824
  * Convert an event to Google Analytics parameters
@@ -1480,7 +1826,8 @@ var GoogleAdapter = class extends BaseAdapter {
1480
1826
  */
1481
1827
  eventToParams(event) {
1482
1828
  const { type, timestamp, ...params } = event;
1483
- return this.enhanceWithAffiliateParams(params);
1829
+ const affiliateParams = this.enhanceWithAffiliateParams(params);
1830
+ return this.enhanceWithExperimentParams(affiliateParams);
1484
1831
  }
1485
1832
  };
1486
1833
 
@@ -1502,44 +1849,9 @@ var EventNames = {
1502
1849
  SEARCH: "Search",
1503
1850
  // User events
1504
1851
  USER_SIGNED_UP: "User Signed Up",
1505
- USER_LOGGED_IN: "User Logged In",
1506
- // MoEngage events
1507
- ITEM_PURCHASED: "Item Purchased",
1508
- UPDATE_CART: "Update Cart",
1509
- CUSTOMER_REGISTERED: "Customer Registered",
1510
- CUSTOMER_LOGGED_IN: "Customer Logged In",
1511
- SHOPIFY_CHECKOUT_UPDATED: "Shopify - Checkout Updated",
1512
- SHOPIFY_ABANDONED_CHECKOUT: "Shopify - Abandoned Checkout",
1513
- SHOPIFY_ORDER_FULFILLED: "Shopify - Order Fulfilled",
1514
- SHOPIFY_CHECKOUT_STARTED: "Shopify - Checkout Started",
1515
- SHOPIFY_ADD_TO_CART: "Shopify - Add To Cart",
1516
- SHOPIFY_REMOVED_FROM_CART: "Shopify - Removed From Cart",
1517
- SHOPIFY_UPDATE_CART: "Shopify - Update Cart",
1518
- SPINFORM_RESULT: "Spinform Result",
1519
- COUPON_COPIED: "Coupon Copied",
1520
- STARTED_CHECKOUT_GK: "Started Checkout GK",
1521
- MOBILE_ADDED_GK: "Mobile Added GK",
1522
- ADDRESS_SELECTED_GK: "Address Selected GK",
1523
- ADDRESS_COMPLETED_GK: "Address Completed GK",
1524
- PAYMENT_METHOD_SELECTED_GK: "Payment Method Selected GK",
1525
- PAYMENT_COMPLETED_GK: "Payment Completed GK",
1526
- ORDER_SUCCESS: "Order Success",
1527
- ORDER_COMPLETED: "Order Completed",
1528
- PIN_CODE_ADDED_GK: "PIN Code Added GK",
1529
- ADDRESS_ADDED_GK: "Address Added GK",
1530
- KP_MP_PHONE_NUMBER_LOGGED_IN: "KP MP Phone Number Logged In",
1531
- KP_PHONE_NUMBER_LOGGED_IN: "KP Phone Number Logged In",
1532
- KP_MP_SHOPIFY_LOGGED_IN: "KP MP Shopify Logged In",
1533
- KP_MP_SUCCESSFULLY_LOGGED_OUT: "KP MP Successfully Logged Out",
1534
- KP_WHATSAPP_LOGGED_IN: "KP Whatsapp Logged In",
1535
- KP_MP_TRUECALLER_LOGGED_IN: "KP MP Truecaller Logged In",
1536
- KP_MP_WHATSAPP_LOGGED_IN: "KP MP Whatsapp Logged In",
1537
- KP_TRUECALLER_LOGGED_IN: "KP Truecaller Logged In",
1538
- KP_SHOPIFY_LOGGED_IN: "KP Shopify Logged In",
1539
- KP_SUCCESSFULLY_LOGGED_OUT: "KP Successfully Logged Out"
1852
+ USER_LOGGED_IN: "User Logged In"
1540
1853
  };
1541
1854
  var DEFAULT_CURRENCY = "INR";
1542
- var HARDCODED_HANDLE = "ryze-gums";
1543
1855
 
1544
1856
  // src/adapters/moengage-adapter.ts
1545
1857
  var import_web_sdk = __toESM(require("@moengage/web-sdk"));
@@ -1591,8 +1903,9 @@ var MoengageAdapter = class extends BaseAdapter {
1591
1903
  /**
1592
1904
  * Track an event with MoenGage SDK
1593
1905
  * @param event The event to track
1906
+ * @param adapterParams Optional adapter-specific parameters
1594
1907
  */
1595
- async trackEvent(event) {
1908
+ async trackEvent(event, adapterParams) {
1596
1909
  if (!this.initialized || typeof window === "undefined" || !this.sdk) {
1597
1910
  this.logger.warn(
1598
1911
  "Cannot track event, adapter not initialized or SDK not available",
@@ -1608,106 +1921,172 @@ var MoengageAdapter = class extends BaseAdapter {
1608
1921
  this.logger.debug("Tracking event", { eventType: event.type });
1609
1922
  switch (event.type) {
1610
1923
  case "page_view" /* PAGE_VIEW */:
1611
- this.trackPageView(event);
1924
+ this.trackPageView(event, adapterParams);
1612
1925
  break;
1613
1926
  case "button_click" /* BUTTON_CLICK */:
1614
- this.trackButtonClick(event);
1927
+ this.trackButtonClick(event, adapterParams);
1615
1928
  break;
1616
1929
  case "form_submission" /* FORM_SUBMISSION */:
1617
- this.trackFormSubmission(event);
1930
+ this.trackFormSubmission(event, adapterParams);
1618
1931
  break;
1619
1932
  case "product_view" /* PRODUCT_VIEW */:
1620
- this.trackProductView(event);
1933
+ this.trackProductView(event, adapterParams);
1621
1934
  break;
1622
1935
  case "add_to_cart" /* ADD_TO_CART */:
1623
- this.trackAddToCart(event);
1936
+ this.trackAddToCart(event, adapterParams);
1624
1937
  break;
1625
1938
  case "remove_from_cart" /* REMOVE_FROM_CART */:
1626
- this.trackRemoveFromCart(event);
1939
+ this.trackRemoveFromCart(event, adapterParams);
1627
1940
  break;
1628
1941
  case "checkout_started" /* CHECKOUT_STARTED */:
1629
- this.trackCheckoutStarted(event);
1942
+ this.trackCheckoutStarted(
1943
+ event,
1944
+ adapterParams
1945
+ );
1630
1946
  break;
1631
1947
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
1632
- this.trackCheckoutCompleted(event);
1948
+ this.trackCheckoutCompleted(
1949
+ event,
1950
+ adapterParams
1951
+ );
1633
1952
  break;
1634
1953
  case "search" /* SEARCH */:
1635
- this.trackSearch(event);
1954
+ this.trackSearch(event, adapterParams);
1636
1955
  break;
1637
1956
  case "user_signup" /* USER_SIGNUP */:
1638
- this.trackUserSignup(event);
1957
+ this.trackUserSignup(event, adapterParams);
1639
1958
  break;
1640
1959
  case "user_login" /* USER_LOGIN */:
1641
- this.trackUserLogin(event);
1960
+ this.trackUserLogin(event, adapterParams);
1642
1961
  break;
1643
1962
  case "custom" /* CUSTOM */:
1644
- this.trackCustomEvent(event);
1963
+ this.trackCustomEvent(event, adapterParams);
1645
1964
  break;
1646
1965
  default:
1647
- this.sdk.track_event(event.type, this.eventToParams(event));
1966
+ const eventName = this.getEventName(adapterParams, event.type);
1967
+ const baseParams = this.eventToParams(event);
1968
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1969
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1970
+ const enhancedParams = this.mergeEventData(
1971
+ experimentParams,
1972
+ adapterParams
1973
+ );
1974
+ this.sdk.track_event(eventName, enhancedParams);
1648
1975
  break;
1649
1976
  }
1650
1977
  }
1651
1978
  /**
1652
1979
  * Track a page view event
1653
1980
  * @param event The page view event
1981
+ * @param adapterParams Optional adapter-specific parameters
1654
1982
  */
1655
- trackPageView(event) {
1983
+ trackPageView(event, adapterParams) {
1656
1984
  if (!this.sdk?.track_event) {
1657
1985
  this.logger.warn("track_event not available for PageView event");
1658
1986
  return;
1659
1987
  }
1660
- const eventData = {
1988
+ const eventName = this.getEventName(adapterParams, EventNames.PAGE_VIEWED);
1989
+ const baseEventData = {
1661
1990
  page_path: event.path,
1662
1991
  page_title: event.title,
1663
1992
  page_url: window.location.href,
1664
1993
  referrer: event.referrer || document.referrer
1665
1994
  };
1666
- this.sdk.track_event(EventNames.PAGE_VIEWED, eventData);
1667
- this.logger.debug("PageView event tracked", { eventData });
1995
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
1996
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
1997
+ const enhancedEventData = this.mergeEventData(
1998
+ experimentParams,
1999
+ adapterParams
2000
+ );
2001
+ this.sdk.track_event(eventName, enhancedEventData);
2002
+ this.logger.debug("PageView event tracked", {
2003
+ eventName,
2004
+ eventData: enhancedEventData
2005
+ });
1668
2006
  }
1669
2007
  /**
1670
2008
  * Track a button click event
1671
2009
  * @param event The button click event
2010
+ * @param adapterParams Optional adapter-specific parameters
1672
2011
  */
1673
- trackButtonClick(event) {
1674
- this.sdk?.track_event(EventNames.BUTTON_CLICKED, {
2012
+ trackButtonClick(event, adapterParams) {
2013
+ const eventName = this.getEventName(
2014
+ adapterParams,
2015
+ EventNames.BUTTON_CLICKED
2016
+ );
2017
+ const baseEventData = {
1675
2018
  button_id: event.buttonId,
1676
2019
  button_text: event.buttonText,
1677
2020
  location: event.location
1678
- });
2021
+ };
2022
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2023
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2024
+ const enhancedEventData = this.mergeEventData(
2025
+ experimentParams,
2026
+ adapterParams
2027
+ );
2028
+ this.sdk?.track_event(eventName, enhancedEventData);
1679
2029
  }
1680
2030
  /**
1681
2031
  * Track a form submission event
1682
2032
  * @param event The form submission event
2033
+ * @param adapterParams Optional adapter-specific parameters
1683
2034
  */
1684
- trackFormSubmission(event) {
1685
- this.sdk?.track_event(EventNames.FORM_SUBMITTED, {
2035
+ trackFormSubmission(event, adapterParams) {
2036
+ const eventName = this.getEventName(
2037
+ adapterParams,
2038
+ EventNames.FORM_SUBMITTED
2039
+ );
2040
+ const baseEventData = {
1686
2041
  form_id: event.formId,
1687
2042
  form_name: event.formName,
1688
2043
  success: event.success
1689
- });
2044
+ };
2045
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2046
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2047
+ const enhancedEventData = this.mergeEventData(
2048
+ experimentParams,
2049
+ adapterParams
2050
+ );
2051
+ this.sdk?.track_event(eventName, enhancedEventData);
1690
2052
  }
1691
2053
  /**
1692
2054
  * Track a product view event
1693
2055
  * @param event The product view event
2056
+ * @param adapterParams Optional adapter-specific parameters
1694
2057
  */
1695
- trackProductView(event) {
1696
- this.sdk?.track_event(EventNames.PRODUCT_VIEWED, {
2058
+ trackProductView(event, adapterParams) {
2059
+ const eventName = this.getEventName(
2060
+ adapterParams,
2061
+ EventNames.PRODUCT_VIEWED
2062
+ );
2063
+ const baseEventData = {
1697
2064
  product_id: event.productId,
1698
2065
  product_name: event.productName,
1699
2066
  price: event.price,
1700
2067
  currency: event.currency || DEFAULT_CURRENCY,
1701
2068
  category: event.category
1702
- });
2069
+ };
2070
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2071
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2072
+ const enhancedEventData = this.mergeEventData(
2073
+ experimentParams,
2074
+ adapterParams
2075
+ );
2076
+ this.sdk?.track_event(eventName, enhancedEventData);
1703
2077
  }
1704
2078
  /**
1705
2079
  * Track an add to cart event
1706
2080
  * @param event The add to cart event
2081
+ * @param adapterParams Optional adapter-specific parameters
1707
2082
  */
1708
- trackAddToCart(event) {
2083
+ trackAddToCart(event, adapterParams) {
1709
2084
  const quantity = event.quantity ?? 1;
1710
- this.sdk?.track_event(EventNames.ADDED_TO_CART, {
2085
+ const eventName = this.getEventName(
2086
+ adapterParams,
2087
+ EventNames.ADDED_TO_CART
2088
+ );
2089
+ const baseEventData = {
1711
2090
  product_id: event.productId,
1712
2091
  product_name: event.productName,
1713
2092
  price: event.price,
@@ -1715,14 +2094,26 @@ var MoengageAdapter = class extends BaseAdapter {
1715
2094
  quantity,
1716
2095
  variant: event.variant,
1717
2096
  total_value: event.price * quantity
1718
- });
2097
+ };
2098
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2099
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2100
+ const enhancedEventData = this.mergeEventData(
2101
+ experimentParams,
2102
+ adapterParams
2103
+ );
2104
+ this.sdk?.track_event(eventName, enhancedEventData);
1719
2105
  }
1720
2106
  /**
1721
2107
  * Track a remove from cart event
1722
2108
  * @param event The remove from cart event
2109
+ * @param adapterParams Optional adapter-specific parameters
1723
2110
  */
1724
- trackRemoveFromCart(event) {
1725
- this.sdk?.track_event(EventNames.REMOVED_FROM_CART, {
2111
+ trackRemoveFromCart(event, adapterParams) {
2112
+ const eventName = this.getEventName(
2113
+ adapterParams,
2114
+ EventNames.REMOVED_FROM_CART
2115
+ );
2116
+ const baseEventData = {
1726
2117
  product_id: event.productId,
1727
2118
  product_name: event.productName,
1728
2119
  price: event.price,
@@ -1730,14 +2121,26 @@ var MoengageAdapter = class extends BaseAdapter {
1730
2121
  quantity: event.quantity,
1731
2122
  variant: event.variant,
1732
2123
  total_value: event.price * event.quantity
1733
- });
2124
+ };
2125
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2126
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2127
+ const enhancedEventData = this.mergeEventData(
2128
+ experimentParams,
2129
+ adapterParams
2130
+ );
2131
+ this.sdk?.track_event(eventName, enhancedEventData);
1734
2132
  }
1735
2133
  /**
1736
2134
  * Track a checkout started event
1737
2135
  * @param event The checkout started event
2136
+ * @param adapterParams Optional adapter-specific parameters
1738
2137
  */
1739
- trackCheckoutStarted(event) {
1740
- this.sdk?.track_event(EventNames.CHECKOUT_STARTED, {
2138
+ trackCheckoutStarted(event, adapterParams) {
2139
+ const eventName = this.getEventName(
2140
+ adapterParams,
2141
+ EventNames.CHECKOUT_STARTED
2142
+ );
2143
+ const baseEventData = {
1741
2144
  cart_value: event.cartValue,
1742
2145
  currency: event.currency || DEFAULT_CURRENCY,
1743
2146
  item_count: event.itemCount,
@@ -1748,14 +2151,26 @@ var MoengageAdapter = class extends BaseAdapter {
1748
2151
  quantity: item.quantity,
1749
2152
  variant: item.variant
1750
2153
  }))
1751
- });
2154
+ };
2155
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2156
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2157
+ const enhancedEventData = this.mergeEventData(
2158
+ experimentParams,
2159
+ adapterParams
2160
+ );
2161
+ this.sdk?.track_event(eventName, enhancedEventData);
1752
2162
  }
1753
2163
  /**
1754
2164
  * Track a checkout completed event
1755
2165
  * @param event The checkout completed event
2166
+ * @param adapterParams Optional adapter-specific parameters
1756
2167
  */
1757
- trackCheckoutCompleted(event) {
1758
- this.sdk?.track_event(EventNames.PURCHASE_COMPLETED, {
2168
+ trackCheckoutCompleted(event, adapterParams) {
2169
+ const eventName = this.getEventName(
2170
+ adapterParams,
2171
+ EventNames.PURCHASE_COMPLETED
2172
+ );
2173
+ const baseEventData = {
1759
2174
  order_id: event.orderId,
1760
2175
  cart_value: event.cartValue,
1761
2176
  currency: event.currency || DEFAULT_CURRENCY,
@@ -1767,28 +2182,56 @@ var MoengageAdapter = class extends BaseAdapter {
1767
2182
  quantity: item.quantity,
1768
2183
  variant: item.variant
1769
2184
  }))
1770
- });
2185
+ };
2186
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2187
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2188
+ const enhancedEventData = this.mergeEventData(
2189
+ experimentParams,
2190
+ adapterParams
2191
+ );
2192
+ this.sdk?.track_event(eventName, enhancedEventData);
1771
2193
  }
1772
2194
  /**
1773
2195
  * Track a search event
1774
2196
  * @param event The search event
2197
+ * @param adapterParams Optional adapter-specific parameters
1775
2198
  */
1776
- trackSearch(event) {
1777
- this.sdk?.track_event(EventNames.SEARCH, {
2199
+ trackSearch(event, adapterParams) {
2200
+ const eventName = this.getEventName(adapterParams, EventNames.SEARCH);
2201
+ const baseEventData = {
1778
2202
  search_term: event.searchTerm,
1779
2203
  results_count: event.resultsCount
1780
- });
2204
+ };
2205
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2206
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2207
+ const enhancedEventData = this.mergeEventData(
2208
+ experimentParams,
2209
+ adapterParams
2210
+ );
2211
+ this.sdk?.track_event(eventName, enhancedEventData);
1781
2212
  }
1782
2213
  /**
1783
2214
  * Track a user signup event
1784
2215
  * @param event The user signup event
2216
+ * @param adapterParams Optional adapter-specific parameters
1785
2217
  */
1786
- trackUserSignup(event) {
1787
- this.sdk?.track_event(EventNames.USER_SIGNED_UP, {
2218
+ trackUserSignup(event, adapterParams) {
2219
+ const eventName = this.getEventName(
2220
+ adapterParams,
2221
+ EventNames.USER_SIGNED_UP
2222
+ );
2223
+ const baseEventData = {
1788
2224
  user_id: event.userId,
1789
2225
  method: event.method,
1790
2226
  success: event.success
1791
- });
2227
+ };
2228
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2229
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2230
+ const enhancedEventData = this.mergeEventData(
2231
+ experimentParams,
2232
+ adapterParams
2233
+ );
2234
+ this.sdk?.track_event(eventName, enhancedEventData);
1792
2235
  if (event.userId && this.getConfig("enableUserIdentification", true)) {
1793
2236
  this.sdk?.add_unique_user_id(event.userId);
1794
2237
  }
@@ -1796,13 +2239,25 @@ var MoengageAdapter = class extends BaseAdapter {
1796
2239
  /**
1797
2240
  * Track a user login event
1798
2241
  * @param event The user login event
2242
+ * @param adapterParams Optional adapter-specific parameters
1799
2243
  */
1800
- trackUserLogin(event) {
1801
- this.sdk?.track_event(EventNames.USER_LOGGED_IN, {
2244
+ trackUserLogin(event, adapterParams) {
2245
+ const eventName = this.getEventName(
2246
+ adapterParams,
2247
+ EventNames.USER_LOGGED_IN
2248
+ );
2249
+ const baseEventData = {
1802
2250
  user_id: event.userId,
1803
2251
  method: event.method,
1804
2252
  success: event.success
1805
- });
2253
+ };
2254
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2255
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2256
+ const enhancedEventData = this.mergeEventData(
2257
+ experimentParams,
2258
+ adapterParams
2259
+ );
2260
+ this.sdk?.track_event(eventName, enhancedEventData);
1806
2261
  if (event.userId && this.getConfig("enableUserIdentification", true)) {
1807
2262
  this.sdk?.add_unique_user_id(event.userId);
1808
2263
  }
@@ -1810,9 +2265,18 @@ var MoengageAdapter = class extends BaseAdapter {
1810
2265
  /**
1811
2266
  * Track a custom event
1812
2267
  * @param event The custom event
1813
- */
1814
- trackCustomEvent(event) {
1815
- this.sdk?.track_event(event.name, event.properties);
2268
+ * @param adapterParams Optional adapter-specific parameters
2269
+ */
2270
+ trackCustomEvent(event, adapterParams) {
2271
+ const eventName = this.getEventName(adapterParams, event.name);
2272
+ const baseEventData = event.properties || {};
2273
+ const affiliateParams = this.enhanceWithAffiliateParams(baseEventData);
2274
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2275
+ const enhancedEventData = this.mergeEventData(
2276
+ experimentParams,
2277
+ adapterParams
2278
+ );
2279
+ this.sdk?.track_event(eventName, enhancedEventData);
1816
2280
  }
1817
2281
  /**
1818
2282
  * Convert an event to MoenGage parameters
@@ -1899,8 +2363,9 @@ var PostHogAdapter = class extends BaseAdapter {
1899
2363
  /**
1900
2364
  * Track an event with PostHog
1901
2365
  * @param event The event to track
2366
+ * @param adapterParams Optional adapter-specific parameters
1902
2367
  */
1903
- async trackEvent(event) {
2368
+ async trackEvent(event, adapterParams) {
1904
2369
  if (!this.initialized || typeof window === "undefined" || !window.posthog) {
1905
2370
  this.logger.warn(
1906
2371
  "Cannot track event, adapter not initialized or posthog not available",
@@ -1916,74 +2381,84 @@ var PostHogAdapter = class extends BaseAdapter {
1916
2381
  this.logger.debug("Tracking event", { eventType: event.type });
1917
2382
  switch (event.type) {
1918
2383
  case "page_view" /* PAGE_VIEW */:
1919
- this.trackPageView(event);
2384
+ this.trackPageView(event, adapterParams);
1920
2385
  break;
1921
2386
  case "product_view" /* PRODUCT_VIEW */:
1922
- this.trackProductView(event);
2387
+ this.trackProductView(event, adapterParams);
1923
2388
  break;
1924
2389
  case "add_to_cart" /* ADD_TO_CART */:
1925
- this.trackAddToCart(event);
2390
+ this.trackAddToCart(event, adapterParams);
1926
2391
  break;
1927
2392
  case "checkout_started" /* CHECKOUT_STARTED */:
1928
- this.trackCheckoutStarted(event);
2393
+ this.trackCheckoutStarted(event, adapterParams);
1929
2394
  break;
1930
2395
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
1931
- this.trackCheckoutCompleted(event);
2396
+ this.trackCheckoutCompleted(event, adapterParams);
1932
2397
  break;
1933
2398
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
1934
- this.trackAddPaymentInfo(event);
2399
+ this.trackAddPaymentInfo(event, adapterParams);
1935
2400
  break;
1936
2401
  case "search" /* SEARCH */:
1937
- this.trackSearch(event);
2402
+ this.trackSearch(event, adapterParams);
1938
2403
  break;
1939
2404
  default:
1940
- const params = this.eventToParams(event);
1941
- window.posthog?.capture(
1942
- event.type,
1943
- this.enhanceWithAffiliateParams(params)
2405
+ const eventName = this.getEventName(adapterParams, event.type);
2406
+ const baseParams = this.eventToParams(event);
2407
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2408
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2409
+ const enhancedParams = this.mergeEventData(
2410
+ experimentParams,
2411
+ adapterParams
1944
2412
  );
2413
+ window.posthog?.capture(eventName, enhancedParams);
1945
2414
  break;
1946
2415
  }
1947
2416
  }
1948
2417
  /**
1949
2418
  * Track a page view event
1950
2419
  * @param event The page view event
2420
+ * @param adapterParams Optional adapter-specific parameters
1951
2421
  */
1952
- trackPageView(event) {
1953
- const params = {
2422
+ trackPageView(event, adapterParams) {
2423
+ const eventName = this.getEventName(adapterParams, "$pageview");
2424
+ const baseParams = {
1954
2425
  path: event.path,
1955
2426
  title: event.title,
1956
2427
  referrer: event.referrer
1957
2428
  };
1958
- window.posthog?.capture(
1959
- "$pageview",
1960
- this.enhanceWithAffiliateParams(params)
1961
- );
2429
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2430
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2431
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2432
+ window.posthog?.capture(eventName, enhancedParams);
1962
2433
  }
1963
2434
  /**
1964
2435
  * Track a product view event
1965
2436
  * @param event The product view event
2437
+ * @param adapterParams Optional adapter-specific parameters
1966
2438
  */
1967
- trackProductView(event) {
1968
- const params = {
2439
+ trackProductView(event, adapterParams) {
2440
+ const eventName = this.getEventName(adapterParams, "product_viewed");
2441
+ const baseParams = {
1969
2442
  product_id: event.productId,
1970
2443
  product_name: event.productName,
1971
2444
  category: event.category,
1972
2445
  price: event.price,
1973
2446
  currency: event.currency || "INR"
1974
2447
  };
1975
- window.posthog?.capture(
1976
- "product_viewed",
1977
- this.enhanceWithAffiliateParams(params)
1978
- );
2448
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2449
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2450
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2451
+ window.posthog?.capture(eventName, enhancedParams);
1979
2452
  }
1980
2453
  /**
1981
2454
  * Track an add to cart event
1982
2455
  * @param event The add to cart event
2456
+ * @param adapterParams Optional adapter-specific parameters
1983
2457
  */
1984
- trackAddToCart(event) {
2458
+ trackAddToCart(event, adapterParams) {
1985
2459
  this.logger.debug("Handling ADD_TO_CART event", { event });
1986
- const params = {
2460
+ const eventName = this.getEventName(adapterParams, "add_to_cart");
2461
+ const baseParams = {
1987
2462
  product_id: event.productId,
1988
2463
  product_name: event.productName,
1989
2464
  price: event.price,
@@ -1991,23 +2466,28 @@ var PostHogAdapter = class extends BaseAdapter {
1991
2466
  quantity: event.quantity,
1992
2467
  variant: event.variant
1993
2468
  };
1994
- this.logger.debug("Sending to PostHog with params", { params });
2469
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2470
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2471
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2472
+ this.logger.debug("Sending to PostHog with params", {
2473
+ eventName,
2474
+ params: enhancedParams
2475
+ });
1995
2476
  if (!window.posthog) {
1996
2477
  this.logger.error("window.posthog is not available");
1997
2478
  return;
1998
2479
  }
1999
- window.posthog.capture(
2000
- "add_to_cart",
2001
- this.enhanceWithAffiliateParams(params)
2002
- );
2480
+ window.posthog.capture(eventName, enhancedParams);
2003
2481
  this.logger.debug("Event sent to PostHog successfully");
2004
2482
  }
2005
2483
  /**
2006
2484
  * Track a checkout started event
2007
2485
  * @param event The checkout started event
2486
+ * @param adapterParams Optional adapter-specific parameters
2008
2487
  */
2009
- trackCheckoutStarted(event) {
2010
- const params = {
2488
+ trackCheckoutStarted(event, adapterParams) {
2489
+ const eventName = this.getEventName(adapterParams, "checkout_started");
2490
+ const baseParams = {
2011
2491
  cart_value: event.cartValue,
2012
2492
  currency: event.currency || "INR",
2013
2493
  item_count: event.itemCount,
@@ -2019,17 +2499,19 @@ var PostHogAdapter = class extends BaseAdapter {
2019
2499
  variant: item.variant
2020
2500
  }))
2021
2501
  };
2022
- window.posthog?.capture(
2023
- "checkout_started",
2024
- this.enhanceWithAffiliateParams(params)
2025
- );
2502
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2503
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2504
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2505
+ window.posthog?.capture(eventName, enhancedParams);
2026
2506
  }
2027
2507
  /**
2028
2508
  * Track a checkout completed event
2029
2509
  * @param event The checkout completed event
2510
+ * @param adapterParams Optional adapter-specific parameters
2030
2511
  */
2031
- trackCheckoutCompleted(event) {
2032
- const params = {
2512
+ trackCheckoutCompleted(event, adapterParams) {
2513
+ const eventName = this.getEventName(adapterParams, "purchase");
2514
+ const baseParams = {
2033
2515
  order_id: event.orderId,
2034
2516
  cart_value: event.cartValue,
2035
2517
  currency: event.currency || "INR",
@@ -2042,29 +2524,36 @@ var PostHogAdapter = class extends BaseAdapter {
2042
2524
  variant: item.variant
2043
2525
  }))
2044
2526
  };
2045
- window.posthog?.capture(
2046
- "purchase",
2047
- this.enhanceWithAffiliateParams(params)
2048
- );
2527
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2528
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2529
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2530
+ window.posthog?.capture(eventName, enhancedParams);
2049
2531
  }
2050
2532
  /**
2051
2533
  * Track a search event
2052
2534
  * @param event The search event
2535
+ * @param adapterParams Optional adapter-specific parameters
2053
2536
  */
2054
- trackSearch(event) {
2055
- const params = {
2537
+ trackSearch(event, adapterParams) {
2538
+ const eventName = this.getEventName(adapterParams, "search");
2539
+ const baseParams = {
2056
2540
  search_term: event.searchTerm,
2057
2541
  results_count: event.resultsCount,
2058
2542
  content_ids: event.content_ids
2059
2543
  };
2060
- window.posthog?.capture("search", this.enhanceWithAffiliateParams(params));
2544
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2545
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2546
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2547
+ window.posthog?.capture(eventName, enhancedParams);
2061
2548
  }
2062
2549
  /**
2063
2550
  * Track an add payment info event
2064
2551
  * @param event The add payment info event
2552
+ * @param adapterParams Optional adapter-specific parameters
2065
2553
  */
2066
- trackAddPaymentInfo(event) {
2067
- const params = {
2554
+ trackAddPaymentInfo(event, adapterParams) {
2555
+ const eventName = this.getEventName(adapterParams, "add_payment_info");
2556
+ const baseParams = {
2068
2557
  cart_value: event.cartValue,
2069
2558
  currency: event.currency || "INR",
2070
2559
  payment_type: event.paymentType,
@@ -2077,10 +2566,10 @@ var PostHogAdapter = class extends BaseAdapter {
2077
2566
  variant: item.variant
2078
2567
  }))
2079
2568
  };
2080
- window.posthog?.capture(
2081
- "add_payment_info",
2082
- this.enhanceWithAffiliateParams(params)
2083
- );
2569
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2570
+ const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
2571
+ const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
2572
+ window.posthog?.capture(eventName, enhancedParams);
2084
2573
  }
2085
2574
  /**
2086
2575
  * Convert an event to PostHog parameters
@@ -2199,43 +2688,62 @@ var ShopifyAdapter = class extends BaseAdapter {
2199
2688
  shopId: `gid://shopify/Shop/${this.shopId}`,
2200
2689
  currency: this.currency,
2201
2690
  acceptedLanguage: DEFAULT_LANGUAGE,
2202
- ...this.enhanceWithAffiliateParams({})
2691
+ ...this.enhanceWithExperimentParams(this.enhanceWithAffiliateParams({}))
2203
2692
  };
2204
2693
  }
2205
2694
  /**
2206
2695
  * Track an event using Shopify Analytics
2207
2696
  */
2208
- async trackEvent(event) {
2697
+ async trackEvent(event, adapterParams) {
2209
2698
  if (!this.initialized || typeof window === "undefined") {
2210
2699
  this.logger.warn(
2211
2700
  "Shopify Analytics not initialized or not in browser environment"
2212
2701
  );
2213
2702
  return;
2214
2703
  }
2704
+ const params = this.getAdapterParams(adapterParams);
2705
+ const customEventName = this.getEventName(params, event.type);
2215
2706
  this.logger.debug("Processing Shopify Analytics event", {
2216
2707
  eventType: event.type,
2217
- eventData: event
2708
+ customEventName,
2709
+ eventData: event,
2710
+ adapterParams: params
2218
2711
  });
2712
+ const affiliateParams = this.enhanceWithAffiliateParams(event);
2713
+ const enhancedEvent = this.enhanceWithExperimentParams(affiliateParams);
2219
2714
  try {
2220
2715
  switch (event.type) {
2221
2716
  case "page_view" /* PAGE_VIEW */:
2222
- this.sendPageView(import_hydrogen_react.AnalyticsEventName.PAGE_VIEW);
2223
- this.logger.debug("Sent PAGE_VIEW event to Shopify Analytics");
2717
+ const pageViewPayload = this.mergeEventData(enhancedEvent, params);
2718
+ this.sendPageView(import_hydrogen_react.AnalyticsEventName.PAGE_VIEW, pageViewPayload);
2719
+ this.logger.debug("Sent PAGE_VIEW event to Shopify Analytics", {
2720
+ payload: pageViewPayload
2721
+ });
2224
2722
  break;
2225
2723
  case "view_content" /* VIEW_CONTENT */:
2226
- this.sendPageView(import_hydrogen_react.AnalyticsEventName.PRODUCT_VIEW);
2227
- this.logger.debug("Sent PRODUCT_VIEW event to Shopify Analytics");
2724
+ const viewContentPayload = this.mergeEventData(enhancedEvent, params);
2725
+ this.sendPageView(
2726
+ import_hydrogen_react.AnalyticsEventName.PRODUCT_VIEW,
2727
+ viewContentPayload
2728
+ );
2729
+ this.logger.debug("Sent PRODUCT_VIEW event to Shopify Analytics", {
2730
+ payload: viewContentPayload
2731
+ });
2228
2732
  break;
2229
2733
  case "add_to_cart" /* ADD_TO_CART */:
2230
- this.trackAddToCart(event);
2734
+ const addToCartPayload = this.mergeEventData(enhancedEvent, params);
2735
+ this.trackAddToCart(addToCartPayload);
2231
2736
  break;
2232
2737
  case "checkout_started" /* CHECKOUT_STARTED */:
2233
2738
  case "begin_checkout" /* BEGIN_CHECKOUT */:
2234
- this.sendPageView(import_hydrogen_react.AnalyticsEventName.PAGE_VIEW, {
2235
- pageType: "checkout"
2236
- });
2739
+ const checkoutPayload = this.mergeEventData(
2740
+ { ...enhancedEvent, pageType: "checkout" },
2741
+ params
2742
+ );
2743
+ this.sendPageView(import_hydrogen_react.AnalyticsEventName.PAGE_VIEW, checkoutPayload);
2237
2744
  this.logger.debug(
2238
- "Sent checkout PAGE_VIEW event to Shopify Analytics"
2745
+ "Sent checkout PAGE_VIEW event to Shopify Analytics",
2746
+ { payload: checkoutPayload }
2239
2747
  );
2240
2748
  break;
2241
2749
  default:
@@ -2361,8 +2869,10 @@ var KwikPassAdapter = class extends BaseAdapter {
2361
2869
  }
2362
2870
  /**
2363
2871
  * Track an event using KwikPass
2872
+ * @param event The event to track
2873
+ * @param adapterParams Optional adapter-specific parameters
2364
2874
  */
2365
- async trackEvent(event) {
2875
+ async trackEvent(event, adapterParams) {
2366
2876
  if (!this.initialized || typeof window === "undefined") {
2367
2877
  this.logger.warn(
2368
2878
  "KwikPass adapter not initialized or not in browser environment"
@@ -2375,18 +2885,19 @@ var KwikPassAdapter = class extends BaseAdapter {
2375
2885
  });
2376
2886
  return;
2377
2887
  }
2888
+ const affiliateParams = this.enhanceWithAffiliateParams(event);
2889
+ const enhancedEvent = this.enhanceWithExperimentParams(affiliateParams);
2378
2890
  try {
2379
2891
  this.logger.debug("Processing event", { eventType: event.type });
2380
- const enhancedEvent = this.enhanceWithAffiliateParams(event);
2381
2892
  switch (event.type) {
2382
2893
  case "product_view" /* PRODUCT_VIEW */:
2383
- this.trackProductView(enhancedEvent);
2894
+ this.trackProductView(enhancedEvent, adapterParams);
2384
2895
  break;
2385
2896
  case "collection_view" /* COLLECTION_VIEW */:
2386
- this.trackCollectionView(enhancedEvent);
2897
+ this.trackCollectionView(enhancedEvent, adapterParams);
2387
2898
  break;
2388
2899
  case "page_view" /* PAGE_VIEW */:
2389
- this.trackPageView(enhancedEvent);
2900
+ this.trackPageView(enhancedEvent, adapterParams);
2390
2901
  break;
2391
2902
  default:
2392
2903
  this.logger.debug("Event not supported", { eventType: event.type });
@@ -2401,55 +2912,71 @@ var KwikPassAdapter = class extends BaseAdapter {
2401
2912
  /**
2402
2913
  * Send event to KwikPass platform
2403
2914
  */
2404
- sendKwikPassEvent(type, eventData) {
2405
- this.logger.debug(`Sending ${type}`, { eventData });
2915
+ sendKwikPassEvent(type, eventData, adapterParams) {
2916
+ const customEventType = this.getEventName(adapterParams, type);
2917
+ const enhancedEventData = this.mergeEventData(eventData, adapterParams);
2918
+ this.logger.debug(`Sending ${customEventType}`, {
2919
+ eventData: enhancedEventData
2920
+ });
2406
2921
  if (typeof window !== "undefined") {
2407
2922
  const customEvent = new CustomEvent(`page_view_kp`, {
2408
2923
  detail: {
2409
- type,
2410
- detail: eventData
2924
+ type: customEventType,
2925
+ detail: enhancedEventData
2411
2926
  }
2412
2927
  });
2413
2928
  window.dispatchEvent(customEvent);
2414
- this.logger.debug(`${type} sent successfully`);
2929
+ this.logger.debug(`${customEventType} sent successfully`);
2415
2930
  }
2416
2931
  }
2417
2932
  /**
2418
- * Track product view event
2933
+ * Track collection view event
2419
2934
  */
2420
- trackCollectionView(event) {
2421
- this.sendKwikPassEvent("collection", {
2422
- product_id: event.productId,
2423
- product_name: event.productName,
2424
- price: event.price,
2425
- currency: event.currency,
2426
- category: event.category,
2427
- timestamp: event.timestamp || Date.now()
2428
- });
2935
+ trackCollectionView(event, adapterParams) {
2936
+ this.sendKwikPassEvent(
2937
+ "collection",
2938
+ {
2939
+ product_id: event.productId,
2940
+ product_name: event.productName,
2941
+ price: event.price,
2942
+ currency: event.currency,
2943
+ category: event.category,
2944
+ timestamp: event.timestamp || Date.now()
2945
+ },
2946
+ adapterParams
2947
+ );
2429
2948
  }
2430
2949
  /**
2431
- * Track collection view event
2950
+ * Track product view event
2432
2951
  */
2433
- trackProductView(event) {
2434
- this.sendKwikPassEvent("product", {
2435
- product_id: event.productId,
2436
- product_name: event.productName,
2437
- price: event.price,
2438
- currency: event.currency,
2439
- category: event.category,
2440
- timestamp: event.timestamp || Date.now()
2441
- });
2952
+ trackProductView(event, adapterParams) {
2953
+ this.sendKwikPassEvent(
2954
+ "product",
2955
+ {
2956
+ product_id: event.productId,
2957
+ product_name: event.productName,
2958
+ price: event.price,
2959
+ currency: event.currency,
2960
+ category: event.category,
2961
+ timestamp: event.timestamp || Date.now()
2962
+ },
2963
+ adapterParams
2964
+ );
2442
2965
  }
2443
2966
  /**
2444
2967
  * Track page view event
2445
2968
  */
2446
- trackPageView(event) {
2447
- this.sendKwikPassEvent("other", {
2448
- path: event.path,
2449
- title: event.title,
2450
- referrer: event.referrer,
2451
- timestamp: event.timestamp || Date.now()
2452
- });
2969
+ trackPageView(event, adapterParams) {
2970
+ this.sendKwikPassEvent(
2971
+ "other",
2972
+ {
2973
+ path: event.path,
2974
+ title: event.title,
2975
+ referrer: event.referrer,
2976
+ timestamp: event.timestamp || Date.now()
2977
+ },
2978
+ adapterParams
2979
+ );
2453
2980
  }
2454
2981
  };
2455
2982
 
@@ -2483,8 +3010,10 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
2483
3010
  }
2484
3011
  /**
2485
3012
  * Track an event using GoKwik
3013
+ * @param event The event to track
3014
+ * @param adapterParams Optional adapter-specific parameters
2486
3015
  */
2487
- async trackEvent(event) {
3016
+ async trackEvent(event, adapterParams) {
2488
3017
  if (!this.initialized || typeof window === "undefined") {
2489
3018
  this.logger.warn(
2490
3019
  "GoKwik adapter not initialized or not in browser environment"
@@ -2493,49 +3022,50 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
2493
3022
  }
2494
3023
  try {
2495
3024
  this.logger.debug("Processing event", { eventType: event.type });
2496
- const enhancedEvent = this.enhanceWithAffiliateParams(event);
3025
+ const affiliateEnhanced = this.enhanceWithAffiliateParams(event);
3026
+ const enhancedEvent = this.enhanceWithExperimentParams(affiliateEnhanced);
2497
3027
  switch (event.type) {
2498
3028
  case "started_checkout_gk" /* STARTED_CHECKOUT_GK */:
2499
- this.trackStartedCheckoutGK(enhancedEvent);
3029
+ this.trackStartedCheckoutGK(enhancedEvent, adapterParams);
2500
3030
  break;
2501
3031
  case "mobile_added_gk" /* MOBILE_ADDED_GK */:
2502
- this.trackMobileAddedGK(enhancedEvent);
3032
+ this.trackMobileAddedGK(enhancedEvent, adapterParams);
2503
3033
  break;
2504
3034
  case "address_selected_gk" /* ADDRESS_SELECTED_GK */:
2505
- this.trackAddressSelectedGK(enhancedEvent);
3035
+ this.trackAddressSelectedGK(enhancedEvent, adapterParams);
2506
3036
  break;
2507
3037
  case "address_completed_gk" /* ADDRESS_COMPLETED_GK */:
2508
- this.trackAddressCompletedGK(enhancedEvent);
3038
+ this.trackAddressCompletedGK(enhancedEvent, adapterParams);
2509
3039
  break;
2510
3040
  case "address_added_gk" /* ADDRESS_ADDED_GK */:
2511
- this.trackAddressAddedGK(enhancedEvent);
3041
+ this.trackAddressAddedGK(enhancedEvent, adapterParams);
2512
3042
  break;
2513
3043
  case "pin_code_added_gk" /* PIN_CODE_ADDED_GK */:
2514
- this.trackPinCodeAddedGK(enhancedEvent);
3044
+ this.trackPinCodeAddedGK(enhancedEvent, adapterParams);
2515
3045
  break;
2516
3046
  case "payment_method_selected_gk" /* PAYMENT_METHOD_SELECTED_GK */:
2517
- this.trackPaymentMethodSelectedGK(enhancedEvent);
3047
+ this.trackPaymentMethodSelectedGK(enhancedEvent, adapterParams);
2518
3048
  break;
2519
3049
  case "payment_completed_gk" /* PAYMENT_COMPLETED_GK */:
2520
- this.trackPaymentCompletedGK(enhancedEvent);
3050
+ this.trackPaymentCompletedGK(enhancedEvent, adapterParams);
2521
3051
  break;
2522
3052
  case "order_success" /* ORDER_SUCCESS */:
2523
- this.trackOrderSuccess(enhancedEvent);
3053
+ this.trackOrderSuccess(enhancedEvent, adapterParams);
2524
3054
  break;
2525
3055
  case "order_completed" /* ORDER_COMPLETED */:
2526
- this.trackOrderCompleted(enhancedEvent);
3056
+ this.trackOrderCompleted(enhancedEvent, adapterParams);
2527
3057
  break;
2528
3058
  case "cart_viewed" /* CART_VIEWED */:
2529
- this.trackCartViewed(enhancedEvent);
3059
+ this.trackCartViewed(enhancedEvent, adapterParams);
2530
3060
  break;
2531
3061
  case "checkout_started" /* CHECKOUT_STARTED */:
2532
- this.trackCheckoutStarted(enhancedEvent);
3062
+ this.trackCheckoutStarted(enhancedEvent, adapterParams);
2533
3063
  break;
2534
3064
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
2535
- this.trackCheckoutCompleted(enhancedEvent);
3065
+ this.trackCheckoutCompleted(enhancedEvent, adapterParams);
2536
3066
  break;
2537
3067
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
2538
- this.trackAddPaymentInfo(enhancedEvent);
3068
+ this.trackAddPaymentInfo(enhancedEvent, adapterParams);
2539
3069
  break;
2540
3070
  default:
2541
3071
  this.logger.debug("Event not supported", { eventType: event.type });
@@ -2550,171 +3080,233 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
2550
3080
  /**
2551
3081
  * Send event to GoKwik platform
2552
3082
  */
2553
- sendGoKwikEvent(eventName, eventData) {
2554
- this.logger.debug(`Sending ${eventName}`, { eventData });
3083
+ sendGoKwikEvent(eventName, eventData, adapterParams) {
3084
+ const customEventName = this.getEventName(adapterParams, eventName);
3085
+ const enhancedEventData = this.mergeEventData(eventData, adapterParams);
3086
+ this.logger.debug(`Sending ${customEventName}`, {
3087
+ eventData: enhancedEventData
3088
+ });
2555
3089
  if (typeof window !== "undefined" && window.gokwikSdk) {
2556
3090
  try {
2557
- window.gokwikSdk.track?.(eventName, eventData);
2558
- this.logger.debug(`${eventName} sent via SDK successfully`);
3091
+ window.gokwikSdk.track?.(customEventName, enhancedEventData);
3092
+ this.logger.debug(`${customEventName} sent via SDK successfully`);
2559
3093
  } catch (error) {
2560
3094
  this.logger.error(
2561
- `Error sending GoKwik event ${eventName} via SDK`,
3095
+ `Error sending GoKwik event ${customEventName} via SDK`,
2562
3096
  error
2563
3097
  );
2564
3098
  }
2565
3099
  } else {
2566
3100
  if (typeof window !== "undefined") {
2567
- const customEvent = new CustomEvent(`gokwik_${eventName}`, {
2568
- detail: eventData
3101
+ const customEvent = new CustomEvent(`gokwik_${customEventName}`, {
3102
+ detail: enhancedEventData
2569
3103
  });
2570
3104
  window.dispatchEvent(customEvent);
2571
- this.logger.debug(`${eventName} sent via custom event successfully`);
3105
+ this.logger.debug(
3106
+ `${customEventName} sent via custom event successfully`
3107
+ );
2572
3108
  }
2573
3109
  }
2574
3110
  }
2575
3111
  /**
2576
3112
  * Track started checkout GK event
2577
3113
  */
2578
- trackStartedCheckoutGK(event) {
2579
- this.sendGoKwikEvent("started_checkout", {
2580
- cart_value: event.cartValue,
2581
- currency: event.currency,
2582
- timestamp: event.timestamp || Date.now()
2583
- });
3114
+ trackStartedCheckoutGK(event, adapterParams) {
3115
+ this.sendGoKwikEvent(
3116
+ "started_checkout",
3117
+ {
3118
+ cart_value: event.cartValue,
3119
+ currency: event.currency,
3120
+ timestamp: event.timestamp || Date.now()
3121
+ },
3122
+ adapterParams
3123
+ );
2584
3124
  }
2585
3125
  /**
2586
3126
  * Track mobile added GK event
2587
3127
  */
2588
- trackMobileAddedGK(event) {
2589
- this.sendGoKwikEvent("mobile_added", {
2590
- mobile: event.mobile,
2591
- timestamp: event.timestamp || Date.now()
2592
- });
3128
+ trackMobileAddedGK(event, adapterParams) {
3129
+ this.sendGoKwikEvent(
3130
+ "mobile_added",
3131
+ {
3132
+ mobile: event.mobile,
3133
+ timestamp: event.timestamp || Date.now()
3134
+ },
3135
+ adapterParams
3136
+ );
2593
3137
  }
2594
3138
  /**
2595
3139
  * Track address selected GK event
2596
3140
  */
2597
- trackAddressSelectedGK(event) {
2598
- this.sendGoKwikEvent("address_selected", {
2599
- address_id: event.addressId,
2600
- timestamp: event.timestamp || Date.now()
2601
- });
3141
+ trackAddressSelectedGK(event, adapterParams) {
3142
+ this.sendGoKwikEvent(
3143
+ "address_selected",
3144
+ {
3145
+ address_id: event.addressId,
3146
+ timestamp: event.timestamp || Date.now()
3147
+ },
3148
+ adapterParams
3149
+ );
2602
3150
  }
2603
3151
  /**
2604
3152
  * Track address completed GK event
2605
3153
  */
2606
- trackAddressCompletedGK(event) {
2607
- this.sendGoKwikEvent("address_completed", {
2608
- address_id: event.addressId,
2609
- timestamp: event.timestamp || Date.now()
2610
- });
3154
+ trackAddressCompletedGK(event, adapterParams) {
3155
+ this.sendGoKwikEvent(
3156
+ "address_completed",
3157
+ {
3158
+ address_id: event.addressId,
3159
+ timestamp: event.timestamp || Date.now()
3160
+ },
3161
+ adapterParams
3162
+ );
2611
3163
  }
2612
3164
  /**
2613
3165
  * Track address added GK event
2614
3166
  */
2615
- trackAddressAddedGK(event) {
2616
- this.sendGoKwikEvent("address_added", {
2617
- address_id: event.addressId,
2618
- timestamp: event.timestamp || Date.now()
2619
- });
3167
+ trackAddressAddedGK(event, adapterParams) {
3168
+ this.sendGoKwikEvent(
3169
+ "address_added",
3170
+ {
3171
+ address_id: event.addressId,
3172
+ timestamp: event.timestamp || Date.now()
3173
+ },
3174
+ adapterParams
3175
+ );
2620
3176
  }
2621
3177
  /**
2622
3178
  * Track PIN code added GK event
2623
3179
  */
2624
- trackPinCodeAddedGK(event) {
2625
- this.sendGoKwikEvent("pin_code_added", {
2626
- pin_code: event.pinCode,
2627
- timestamp: event.timestamp || Date.now()
2628
- });
3180
+ trackPinCodeAddedGK(event, adapterParams) {
3181
+ this.sendGoKwikEvent(
3182
+ "pin_code_added",
3183
+ {
3184
+ pin_code: event.pinCode,
3185
+ timestamp: event.timestamp || Date.now()
3186
+ },
3187
+ adapterParams
3188
+ );
2629
3189
  }
2630
3190
  /**
2631
3191
  * Track payment method selected GK event
2632
3192
  */
2633
- trackPaymentMethodSelectedGK(event) {
2634
- this.sendGoKwikEvent("payment_method_selected", {
2635
- payment_method: event.paymentMethod,
2636
- timestamp: event.timestamp || Date.now()
2637
- });
3193
+ trackPaymentMethodSelectedGK(event, adapterParams) {
3194
+ this.sendGoKwikEvent(
3195
+ "payment_method_selected",
3196
+ {
3197
+ payment_method: event.paymentMethod,
3198
+ timestamp: event.timestamp || Date.now()
3199
+ },
3200
+ adapterParams
3201
+ );
2638
3202
  }
2639
3203
  /**
2640
3204
  * Track payment completed GK event
2641
3205
  */
2642
- trackPaymentCompletedGK(event) {
2643
- this.sendGoKwikEvent("payment_completed", {
2644
- amount: event.amount,
2645
- currency: event.currency,
2646
- timestamp: event.timestamp || Date.now()
2647
- });
3206
+ trackPaymentCompletedGK(event, adapterParams) {
3207
+ this.sendGoKwikEvent(
3208
+ "payment_completed",
3209
+ {
3210
+ amount: event.amount,
3211
+ currency: event.currency,
3212
+ timestamp: event.timestamp || Date.now()
3213
+ },
3214
+ adapterParams
3215
+ );
2648
3216
  }
2649
3217
  /**
2650
3218
  * Track order success event
2651
3219
  */
2652
- trackOrderSuccess(event) {
2653
- this.sendGoKwikEvent("order_success", {
2654
- order_id: event.orderId,
2655
- amount: event.amount,
2656
- currency: event.currency,
2657
- timestamp: event.timestamp || Date.now()
2658
- });
3220
+ trackOrderSuccess(event, adapterParams) {
3221
+ this.sendGoKwikEvent(
3222
+ "order_success",
3223
+ {
3224
+ order_id: event.orderId,
3225
+ amount: event.amount,
3226
+ currency: event.currency,
3227
+ timestamp: event.timestamp || Date.now()
3228
+ },
3229
+ adapterParams
3230
+ );
2659
3231
  }
2660
3232
  /**
2661
3233
  * Track order completed event
2662
3234
  */
2663
- trackOrderCompleted(event) {
2664
- this.sendGoKwikEvent("order_completed", {
2665
- order_id: event.orderId,
2666
- amount: event.amount,
2667
- currency: event.currency,
2668
- timestamp: event.timestamp || Date.now()
2669
- });
3235
+ trackOrderCompleted(event, adapterParams) {
3236
+ this.sendGoKwikEvent(
3237
+ "order_completed",
3238
+ {
3239
+ order_id: event.orderId,
3240
+ amount: event.amount,
3241
+ currency: event.currency,
3242
+ timestamp: event.timestamp || Date.now()
3243
+ },
3244
+ adapterParams
3245
+ );
2670
3246
  }
2671
3247
  /**
2672
3248
  * Track cart viewed event
2673
3249
  */
2674
- trackCartViewed(event) {
2675
- this.sendGoKwikEvent("cart_viewed", {
2676
- cart_id: event.cartId,
2677
- products: event.products,
2678
- timestamp: event.timestamp || Date.now()
2679
- });
3250
+ trackCartViewed(event, adapterParams) {
3251
+ this.sendGoKwikEvent(
3252
+ "cart_viewed",
3253
+ {
3254
+ cart_id: event.cartId,
3255
+ products: event.products,
3256
+ timestamp: event.timestamp || Date.now()
3257
+ },
3258
+ adapterParams
3259
+ );
2680
3260
  }
2681
3261
  /**
2682
3262
  * Track checkout started event
2683
3263
  */
2684
- trackCheckoutStarted(event) {
2685
- this.sendGoKwikEvent("checkout_started", {
2686
- cart_value: event.cartValue,
2687
- currency: event.currency,
2688
- item_count: event.itemCount,
2689
- items: event.items,
2690
- timestamp: event.timestamp || Date.now()
2691
- });
3264
+ trackCheckoutStarted(event, adapterParams) {
3265
+ this.sendGoKwikEvent(
3266
+ "checkout_started",
3267
+ {
3268
+ cart_value: event.cartValue,
3269
+ currency: event.currency,
3270
+ item_count: event.itemCount,
3271
+ items: event.items,
3272
+ timestamp: event.timestamp || Date.now()
3273
+ },
3274
+ adapterParams
3275
+ );
2692
3276
  }
2693
3277
  /**
2694
3278
  * Track checkout completed event
2695
3279
  */
2696
- trackCheckoutCompleted(event) {
2697
- this.sendGoKwikEvent("checkout_completed", {
2698
- order_id: event.orderId,
2699
- cart_value: event.cartValue,
2700
- currency: event.currency,
2701
- item_count: event.itemCount,
2702
- items: event.items,
2703
- timestamp: event.timestamp || Date.now()
2704
- });
3280
+ trackCheckoutCompleted(event, adapterParams) {
3281
+ this.sendGoKwikEvent(
3282
+ "checkout_completed",
3283
+ {
3284
+ order_id: event.orderId,
3285
+ cart_value: event.cartValue,
3286
+ currency: event.currency,
3287
+ item_count: event.itemCount,
3288
+ items: event.items,
3289
+ timestamp: event.timestamp || Date.now()
3290
+ },
3291
+ adapterParams
3292
+ );
2705
3293
  }
2706
3294
  /**
2707
3295
  * Track add payment info event
2708
3296
  */
2709
- trackAddPaymentInfo(event) {
2710
- this.sendGoKwikEvent("add_payment_info", {
2711
- cart_value: event.cartValue,
2712
- currency: event.currency,
2713
- item_count: event.itemCount,
2714
- payment_type: event.paymentType,
2715
- items: event.items,
2716
- timestamp: event.timestamp || Date.now()
2717
- });
3297
+ trackAddPaymentInfo(event, adapterParams) {
3298
+ this.sendGoKwikEvent(
3299
+ "add_payment_info",
3300
+ {
3301
+ cart_value: event.cartValue,
3302
+ currency: event.currency,
3303
+ item_count: event.itemCount,
3304
+ payment_type: event.paymentType,
3305
+ items: event.items,
3306
+ timestamp: event.timestamp || Date.now()
3307
+ },
3308
+ adapterParams
3309
+ );
2718
3310
  }
2719
3311
  };
2720
3312
 
@@ -3233,6 +3825,155 @@ var ShopkitAnalytics_default = ShopkitAnalytics;
3233
3825
  // src/events/index.ts
3234
3826
  init_publisher();
3235
3827
  init_subscriber();
3828
+
3829
+ // src/services/facebook-capi.ts
3830
+ var FacebookCAPIService = class {
3831
+ constructor(config) {
3832
+ this.baseUrl = "https://graph.facebook.com/v18.0";
3833
+ this.config = config;
3834
+ }
3835
+ /**
3836
+ * Send events to Facebook CAPI
3837
+ */
3838
+ async sendEvents(events, userInfo) {
3839
+ if (!this.config.accessToken || !this.config.pixelId) {
3840
+ console.warn("Facebook CAPI: Missing access token or pixel ID");
3841
+ return;
3842
+ }
3843
+ const supportedEvents = events.filter(
3844
+ (event) => this.isSupportedEvent(event.type)
3845
+ );
3846
+ if (supportedEvents.length === 0) {
3847
+ console.log("Facebook CAPI: No supported events to send");
3848
+ return;
3849
+ }
3850
+ const capiEvents = supportedEvents.map(
3851
+ (event) => this.convertToFacebookEvent(event, userInfo)
3852
+ );
3853
+ const payload = {
3854
+ data: capiEvents,
3855
+ test_event_code: this.config.testEventCode
3856
+ };
3857
+ try {
3858
+ const response = await fetch(
3859
+ `${this.baseUrl}/${this.config.pixelId}/events?access_token=${this.config.accessToken}`,
3860
+ {
3861
+ method: "POST",
3862
+ headers: {
3863
+ "Content-Type": "application/json"
3864
+ },
3865
+ body: JSON.stringify(payload)
3866
+ }
3867
+ );
3868
+ if (!response.ok) {
3869
+ const errorData = await response.json();
3870
+ console.error("Facebook CAPI Error:", errorData);
3871
+ throw new Error(`Facebook CAPI request failed: ${response.status}`);
3872
+ }
3873
+ const result = await response.json();
3874
+ console.log("Facebook CAPI: Events sent successfully", {
3875
+ events_received: result.events_received,
3876
+ messages: result.messages
3877
+ });
3878
+ } catch (error) {
3879
+ console.error("Facebook CAPI: Failed to send events", error);
3880
+ throw error;
3881
+ }
3882
+ }
3883
+ /**
3884
+ * Check if event type is supported (matches PixelAdapter implementation)
3885
+ */
3886
+ isSupportedEvent(eventType) {
3887
+ return [
3888
+ "page_view" /* PAGE_VIEW */,
3889
+ "product_view" /* PRODUCT_VIEW */,
3890
+ "add_to_cart" /* ADD_TO_CART */,
3891
+ "search" /* SEARCH */
3892
+ ].includes(eventType);
3893
+ }
3894
+ /**
3895
+ * Convert internal event to Facebook CAPI event format
3896
+ * Only handles events implemented in PixelAdapter
3897
+ */
3898
+ convertToFacebookEvent(event, userInfo) {
3899
+ const baseEvent = {
3900
+ event_name: this.mapEventName(event.type),
3901
+ event_time: Math.floor((event.timestamp || Date.now()) / 1e3),
3902
+ event_id: event.eventId,
3903
+ action_source: "website",
3904
+ user_data: userInfo ? {
3905
+ client_ip_address: userInfo.clientIpAddress,
3906
+ client_user_agent: userInfo.clientUserAgent,
3907
+ fbc: userInfo.fbc,
3908
+ fbp: userInfo.fbp
3909
+ } : void 0
3910
+ };
3911
+ switch (event.type) {
3912
+ case "page_view" /* PAGE_VIEW */:
3913
+ baseEvent.custom_data = {};
3914
+ break;
3915
+ case "product_view" /* PRODUCT_VIEW */:
3916
+ const productEvent = event;
3917
+ baseEvent.custom_data = {
3918
+ content_type: "product_group",
3919
+ content_ids: [productEvent.productId],
3920
+ content_name: productEvent.productName,
3921
+ content_category: productEvent.event_category,
3922
+ value: productEvent.price,
3923
+ currency: productEvent.currency || "INR"
3924
+ };
3925
+ break;
3926
+ case "add_to_cart" /* ADD_TO_CART */:
3927
+ const cartEvent = event;
3928
+ baseEvent.custom_data = {
3929
+ content_type: "product_group",
3930
+ content_ids: [cartEvent.productId],
3931
+ content_name: cartEvent.productName,
3932
+ value: cartEvent.price,
3933
+ currency: cartEvent.currency || "INR"
3934
+ };
3935
+ break;
3936
+ case "search" /* SEARCH */:
3937
+ const searchEvent = event;
3938
+ baseEvent.custom_data = {
3939
+ search_string: searchEvent.searchTerm,
3940
+ content_category: "product",
3941
+ content_ids: searchEvent.content_ids || []
3942
+ };
3943
+ break;
3944
+ default:
3945
+ baseEvent.custom_data = {};
3946
+ break;
3947
+ }
3948
+ return baseEvent;
3949
+ }
3950
+ /**
3951
+ * Map internal event types to Facebook event names (matching PixelAdapter)
3952
+ */
3953
+ mapEventName(eventType) {
3954
+ const eventMap = {
3955
+ ["page_view" /* PAGE_VIEW */]: "PageView",
3956
+ ["product_view" /* PRODUCT_VIEW */]: "ViewContent",
3957
+ ["add_to_cart" /* ADD_TO_CART */]: "AddToCart",
3958
+ ["search" /* SEARCH */]: "Search"
3959
+ };
3960
+ return eventMap[eventType] || "CustomEvent";
3961
+ }
3962
+ };
3963
+ function createFacebookCAPIService(config) {
3964
+ const accessToken = config?.accessToken || process.env.FACEBOOK_CAPI_ACCESS_TOKEN;
3965
+ const pixelId = config?.pixelId || process.env.NEXT_PUBLIC_PIXEL_ID;
3966
+ const testEventCode = config?.testEventCode || process.env.FACEBOOK_TEST_EVENT_CODE;
3967
+ if (!accessToken || !pixelId) {
3968
+ console.warn("Facebook CAPI: Missing access token or pixel ID");
3969
+ return null;
3970
+ }
3971
+ return new FacebookCAPIService({
3972
+ accessToken,
3973
+ pixelId,
3974
+ testEventCode
3975
+ });
3976
+ }
3236
3977
  // Annotate the CommonJS export names for ESM import in node:
3237
3978
  0 && (module.exports = {
3238
3979
  AffiliateTracker,
@@ -3240,11 +3981,13 @@ init_subscriber();
3240
3981
  DEFAULT_CURRENCY,
3241
3982
  EventNames,
3242
3983
  EventType,
3984
+ FacebookCAPIService,
3243
3985
  GoogleAdapter,
3244
- HARDCODED_HANDLE,
3245
3986
  KwikCheckoutAdapter,
3246
3987
  KwikPassAdapter,
3247
3988
  MoengageAdapter,
3989
+ PRIMA_EXPERIMENT_COOKIES,
3990
+ PRIMA_EXPERIMENT_COOKIE_NAMES,
3248
3991
  PixelAdapter,
3249
3992
  PostHogAdapter,
3250
3993
  ShopifyAdapter,
@@ -3252,12 +3995,17 @@ init_subscriber();
3252
3995
  captureAffiliateParams,
3253
3996
  clearAffiliateParams,
3254
3997
  createAdapterLogger,
3998
+ createFacebookCAPIService,
3255
3999
  createLogger,
3256
4000
  eventPublisher,
3257
4001
  eventSubscriber,
4002
+ generateEventId,
3258
4003
  getAffiliateParams,
3259
4004
  getAffiliateSource,
4005
+ getBrowserInfo,
4006
+ getExperimentParams,
3260
4007
  hasAffiliateData,
4008
+ hasExperimentData,
3261
4009
  initTracking,
3262
4010
  initializeEventTracking,
3263
4011
  logger,