shopkit-analytics 1.0.0 → 1.0.2

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 (41) hide show
  1. package/README.md +258 -3
  2. package/dist/adapters/index.d.mts +2 -2
  3. package/dist/adapters/index.d.ts +2 -2
  4. package/dist/adapters/index.js +1039 -600
  5. package/dist/adapters/index.js.map +1 -1
  6. package/dist/adapters/index.mjs +2 -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-P4OJDCEZ.mjs → chunk-BNV3EVHH.mjs} +3 -3
  10. package/dist/{chunk-JVEGG6JV.mjs → chunk-HCA4E2RA.mjs} +19 -13
  11. package/dist/chunk-HCA4E2RA.mjs.map +1 -0
  12. package/dist/{chunk-4MZH5OLR.mjs → chunk-U3UOXFS4.mjs} +1040 -603
  13. package/dist/chunk-U3UOXFS4.mjs.map +1 -0
  14. package/dist/events/index.d.mts +9 -41
  15. package/dist/events/index.d.ts +9 -41
  16. package/dist/events/index.js +801 -490
  17. package/dist/events/index.js.map +1 -1
  18. package/dist/events/index.mjs +5 -7
  19. package/dist/{index-GODWc1s6.d.mts → index-Bym1_EAp.d.mts} +74 -17
  20. package/dist/{index-BnNRgdUv.d.ts → index-DS9OI5Mz.d.ts} +74 -17
  21. package/dist/index.d.mts +6 -6
  22. package/dist/index.d.ts +6 -6
  23. package/dist/index.js +1057 -645
  24. package/dist/index.js.map +1 -1
  25. package/dist/index.mjs +4 -6
  26. package/dist/index.mjs.map +1 -1
  27. package/dist/{subscriber-43gnCKWe.d.ts → subscriber-BDAm_BAi.d.ts} +38 -2
  28. package/dist/{subscriber-sWesj_5p.d.mts → subscriber-BoyOlh9t.d.mts} +38 -2
  29. package/dist/subscriber-VF3IYUCU.mjs +8 -0
  30. package/dist/types.d.mts +4 -340
  31. package/dist/types.d.ts +4 -340
  32. package/dist/types.js +0 -30
  33. package/dist/types.js.map +1 -1
  34. package/dist/types.mjs +1 -1
  35. package/package.json +2 -3
  36. package/dist/chunk-3TQR5DOP.mjs.map +0 -1
  37. package/dist/chunk-4MZH5OLR.mjs.map +0 -1
  38. package/dist/chunk-JVEGG6JV.mjs.map +0 -1
  39. package/dist/subscriber-IFZJU57V.mjs +0 -8
  40. /package/dist/{chunk-P4OJDCEZ.mjs.map → chunk-BNV3EVHH.mjs.map} +0 -0
  41. /package/dist/{subscriber-IFZJU57V.mjs.map → subscriber-VF3IYUCU.mjs.map} +0 -0
@@ -32,9 +32,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
32
32
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
33
 
34
34
  // src/events/publisher.ts
35
- function publishEvent(event) {
35
+ function publishEvent(event, params) {
36
36
  try {
37
- eventPublisher.publish(event);
37
+ eventPublisher.publish(event, params);
38
38
  } catch (error) {
39
39
  console.error("Error in publishEvent helper:", error);
40
40
  }
@@ -75,19 +75,24 @@ var init_publisher = __esm({
75
75
  /**
76
76
  * Publish an event to all subscribers
77
77
  * @param event The event to publish
78
+ * @param params Optional adapter-specific parameters
78
79
  */
79
- publish(event) {
80
+ publish(event, params) {
80
81
  try {
81
82
  console.log("EventPublisher: Received event", {
82
83
  type: event.type,
83
- data: event
84
+ data: event,
85
+ params
84
86
  });
85
87
  const eventWithTimestamp = !event.timestamp ? { ...event, timestamp: Date.now() } : event;
86
- console.log("EventPublisher: Number of subscribers:", this.subscribers.length);
88
+ console.log(
89
+ "EventPublisher: Number of subscribers:",
90
+ this.subscribers.length
91
+ );
87
92
  for (const subscriber of this.subscribers) {
88
93
  try {
89
94
  console.log("EventPublisher: Notifying subscriber");
90
- subscriber(eventWithTimestamp);
95
+ subscriber(eventWithTimestamp, params);
91
96
  console.log("EventPublisher: Subscriber notified successfully");
92
97
  } catch (error) {
93
98
  console.error("EventPublisher: Error in subscriber:", error);
@@ -196,18 +201,19 @@ var init_subscriber = __esm({
196
201
  /**
197
202
  * Handle an event by forwarding it to all enabled adapters
198
203
  * @param event The event to handle
204
+ * @param params Optional adapter-specific parameters
199
205
  */
200
- handleEvent(event) {
201
- console.log("Handling event:", event.type);
206
+ handleEvent(event, params) {
207
+ console.log("Handling event:", event.type, "with params:", params);
202
208
  if (!this.initialized) {
203
209
  console.log("Subscriber not initialized, queueing event");
204
- this.eventQueue.push(event);
210
+ this.eventQueue.push({ event, params });
205
211
  return;
206
212
  }
207
213
  for (const adapter of this.adapters) {
208
214
  if (adapter.isEnabled()) {
209
215
  console.log(`Forwarding event to adapter: ${adapter.name}`);
210
- adapter.trackEvent(event).catch((error) => {
216
+ adapter.trackEvent(event, params).catch((error) => {
211
217
  console.error(
212
218
  `Error tracking event in adapter "${adapter.name}":`,
213
219
  error
@@ -226,8 +232,8 @@ var init_subscriber = __esm({
226
232
  return;
227
233
  }
228
234
  console.log(`Processing ${this.eventQueue.length} queued events.`);
229
- for (const event of this.eventQueue) {
230
- this.handleEvent(event);
235
+ for (const { event, params } of this.eventQueue) {
236
+ this.handleEvent(event, params);
231
237
  }
232
238
  this.eventQueue = [];
233
239
  }
@@ -259,7 +265,6 @@ __export(events_exports, {
259
265
  DEFAULT_CURRENCY: () => DEFAULT_CURRENCY,
260
266
  EventNames: () => EventNames,
261
267
  EventType: () => EventType,
262
- HARDCODED_HANDLE: () => HARDCODED_HANDLE,
263
268
  eventPublisher: () => eventPublisher,
264
269
  eventSubscriber: () => eventSubscriber,
265
270
  initTracking: () => initTracking,
@@ -271,7 +276,6 @@ module.exports = __toCommonJS(events_exports);
271
276
  // src/types.ts
272
277
  var EventType = /* @__PURE__ */ ((EventType2) => {
273
278
  EventType2["PRODUCT_VIEW"] = "product_view";
274
- EventType2["STARTED_ORDER"] = "started_order";
275
279
  EventType2["PAGE_VIEW"] = "page_view";
276
280
  EventType2["BUTTON_CLICK"] = "button_click";
277
281
  EventType2["FORM_SUBMISSION"] = "form_submission";
@@ -284,11 +288,6 @@ var EventType = /* @__PURE__ */ ((EventType2) => {
284
288
  EventType2["CHECKOUT_STARTED"] = "checkout_started";
285
289
  EventType2["CHECKOUT_COMPLETED"] = "checkout_completed";
286
290
  EventType2["SEARCH"] = "search";
287
- EventType2["CART_PAGE_LAND"] = "cart_page_land";
288
- EventType2["CLOSE_CART"] = "close_cart";
289
- EventType2["QUANTITY_CHANGE"] = "quantity_change";
290
- EventType2["FILTER_APPLIED"] = "filter_applied";
291
- EventType2["NEWSLETTER_SUBSCRIPTION"] = "newsletter_subscription";
292
291
  EventType2["USER_SIGNUP"] = "user_signup";
293
292
  EventType2["USER_LOGIN"] = "user_login";
294
293
  EventType2["CUSTOM"] = "custom";
@@ -299,25 +298,11 @@ var EventType = /* @__PURE__ */ ((EventType2) => {
299
298
  EventType2["FORM_START"] = "form_start";
300
299
  EventType2["ADD_PAYMENT_INFO"] = "add_payment_info";
301
300
  EventType2["CART_VIEWED"] = "cart_viewed";
302
- EventType2["PAGES_SCREENS_PER_SESSION"] = "pages_screens_per_session";
303
301
  EventType2["VIEW_CONTENT"] = "view_content";
304
302
  EventType2["PURCHASE"] = "purchase";
305
303
  EventType2["VIEW_SEARCH_RESULTS"] = "view_search_results";
306
304
  EventType2["ORDER_PLACED"] = "order_placed";
307
305
  EventType2["BEGIN_CHECKOUT"] = "begin_checkout";
308
- EventType2["ITEM_PURCHASED"] = "item_purchased";
309
- EventType2["UPDATE_CART"] = "update_cart";
310
- EventType2["CUSTOMER_REGISTERED"] = "customer_registered";
311
- EventType2["CUSTOMER_LOGGED_IN"] = "customer_logged_in";
312
- EventType2["SHOPIFY_CHECKOUT_UPDATED"] = "shopify_checkout_updated";
313
- EventType2["SHOPIFY_ABANDONED_CHECKOUT"] = "shopify_abandoned_checkout";
314
- EventType2["SHOPIFY_ORDER_FULFILLED"] = "shopify_order_fulfilled";
315
- EventType2["SHOPIFY_CHECKOUT_STARTED"] = "shopify_checkout_started";
316
- EventType2["SHOPIFY_ADD_TO_CART"] = "shopify_add_to_cart";
317
- EventType2["SHOPIFY_REMOVED_FROM_CART"] = "shopify_removed_from_cart";
318
- EventType2["SHOPIFY_UPDATE_CART"] = "shopify_update_cart";
319
- EventType2["SPINFORM_RESULT"] = "spinform_result";
320
- EventType2["COUPON_COPIED"] = "coupon_copied";
321
306
  EventType2["STARTED_CHECKOUT_GK"] = "started_checkout_gk";
322
307
  EventType2["MOBILE_ADDED_GK"] = "mobile_added_gk";
323
308
  EventType2["ADDRESS_SELECTED_GK"] = "address_selected_gk";
@@ -328,16 +313,6 @@ var EventType = /* @__PURE__ */ ((EventType2) => {
328
313
  EventType2["ORDER_COMPLETED"] = "order_completed";
329
314
  EventType2["PIN_CODE_ADDED_GK"] = "pin_code_added_gk";
330
315
  EventType2["ADDRESS_ADDED_GK"] = "address_added_gk";
331
- EventType2["KP_MP_PHONE_NUMBER_LOGGED_IN"] = "kp_mp_phone_number_logged_in";
332
- EventType2["KP_PHONE_NUMBER_LOGGED_IN"] = "kp_phone_number_logged_in";
333
- EventType2["KP_MP_SHOPIFY_LOGGED_IN"] = "kp_mp_shopify_logged_in";
334
- EventType2["KP_MP_SUCCESSFULLY_LOGGED_OUT"] = "kp_mp_successfully_logged_out";
335
- EventType2["KP_WHATSAPP_LOGGED_IN"] = "kp_whatsapp_logged_in";
336
- EventType2["KP_MP_TRUECALLER_LOGGED_IN"] = "kp_mp_truecaller_logged_in";
337
- EventType2["KP_MP_WHATSAPP_LOGGED_IN"] = "kp_mp_whatsapp_logged_in";
338
- EventType2["KP_TRUECALLER_LOGGED_IN"] = "kp_truecaller_logged_in";
339
- EventType2["KP_SHOPIFY_LOGGED_IN"] = "kp_shopify_logged_in";
340
- EventType2["KP_SUCCESSFULLY_LOGGED_OUT"] = "kp_successfully_logged_out";
341
316
  return EventType2;
342
317
  })(EventType || {});
343
318
 
@@ -346,7 +321,14 @@ init_publisher();
346
321
  init_subscriber();
347
322
 
348
323
  // src/logger/index.ts
349
- var import_pino = __toESM(require("pino"));
324
+ var LOG_LEVELS = {
325
+ trace: 10,
326
+ debug: 20,
327
+ info: 30,
328
+ warn: 40,
329
+ error: 50,
330
+ fatal: 60
331
+ };
350
332
  var NoOpLogger = class _NoOpLogger {
351
333
  trace() {
352
334
  }
@@ -364,92 +346,109 @@ var NoOpLogger = class _NoOpLogger {
364
346
  return new _NoOpLogger();
365
347
  }
366
348
  };
367
- var PinoLogger = class _PinoLogger {
368
- constructor(logger2) {
369
- this.logger = logger2;
349
+ var UniversalLogger = class _UniversalLogger {
350
+ constructor(config, bindings = {}) {
351
+ this.config = config;
352
+ this.bindings = bindings;
353
+ }
354
+ shouldLog(level) {
355
+ return LOG_LEVELS[level] >= LOG_LEVELS[this.config.level];
356
+ }
357
+ formatMessage(level, message, args, error) {
358
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
359
+ const name = this.config.name;
360
+ let logMessage = this.config.prettyPrint ? `[${timestamp}] ${level.toUpperCase()} [${name}]: ${message}` : JSON.stringify({
361
+ timestamp,
362
+ level,
363
+ name,
364
+ message,
365
+ ...this.bindings,
366
+ ...args.length > 0 && { args },
367
+ ...error && {
368
+ error: { message: error.message, stack: error.stack }
369
+ }
370
+ });
371
+ if (this.config.prettyPrint && args.length > 0) {
372
+ logMessage += ` ${args.map(
373
+ (arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
374
+ ).join(" ")}`;
375
+ }
376
+ if (this.config.prettyPrint && error) {
377
+ logMessage += ` Error: ${error.message}`;
378
+ if (error.stack) {
379
+ logMessage += `
380
+ ${error.stack}`;
381
+ }
382
+ }
383
+ return this.redactSensitiveData(logMessage);
384
+ }
385
+ redactSensitiveData(message) {
386
+ let redactedMessage = message;
387
+ for (const field of this.config.redact) {
388
+ const regex = new RegExp(`"${field}"\\s*:\\s*"[^"]*"`, "gi");
389
+ redactedMessage = redactedMessage.replace(
390
+ regex,
391
+ `"${field}":"[REDACTED]"`
392
+ );
393
+ }
394
+ return redactedMessage;
395
+ }
396
+ log(level, message, args, error) {
397
+ if (!this.shouldLog(level)) return;
398
+ const formattedMessage = this.formatMessage(level, message, args, error);
399
+ switch (level) {
400
+ case "trace":
401
+ console.trace(formattedMessage);
402
+ break;
403
+ case "debug":
404
+ console.debug(formattedMessage);
405
+ break;
406
+ case "info":
407
+ console.info(formattedMessage);
408
+ break;
409
+ case "warn":
410
+ console.warn(formattedMessage);
411
+ break;
412
+ case "error":
413
+ case "fatal":
414
+ console.error(formattedMessage);
415
+ break;
416
+ }
370
417
  }
371
418
  trace(message, ...args) {
372
- this.logger.trace({ args }, message);
419
+ this.log("trace", message, args);
373
420
  }
374
421
  debug(message, ...args) {
375
- this.logger.debug({ args }, message);
422
+ this.log("debug", message, args);
376
423
  }
377
424
  info(message, ...args) {
378
- this.logger.info({ args }, message);
425
+ this.log("info", message, args);
379
426
  }
380
427
  warn(message, ...args) {
381
- this.logger.warn({ args }, message);
428
+ this.log("warn", message, args);
382
429
  }
383
430
  error(message, error, ...args) {
384
- this.logger.error({ error, args }, message);
431
+ this.log("error", message, args, error);
385
432
  }
386
433
  fatal(message, error, ...args) {
387
- this.logger.fatal({ error, args }, message);
434
+ this.log("fatal", message, args, error);
388
435
  }
389
436
  child(bindings) {
390
- return new _PinoLogger(this.logger.child(bindings));
437
+ return new _UniversalLogger(this.config, { ...this.bindings, ...bindings });
391
438
  }
392
439
  };
393
440
  function createLogger(config = {}) {
394
- const {
395
- level = "info",
396
- enabled = true,
397
- name = "@shopkit/analytics",
398
- prettyPrint = false,
399
- redact = []
400
- } = config;
401
- if (!enabled) {
402
- return new NoOpLogger();
403
- }
404
- const pinoConfig = {
405
- name,
406
- level,
407
- redact,
408
- browser: {
409
- asObject: true,
410
- serialize: true,
411
- write: {
412
- trace: (o) => console.trace(formatBrowserLog(o)),
413
- debug: (o) => console.debug(formatBrowserLog(o)),
414
- info: (o) => console.info(formatBrowserLog(o)),
415
- warn: (o) => console.warn(formatBrowserLog(o)),
416
- error: (o) => console.error(formatBrowserLog(o)),
417
- fatal: (o) => console.error(formatBrowserLog(o))
418
- }
419
- }
441
+ const fullConfig = {
442
+ level: config.level || "info",
443
+ enabled: config.enabled !== false,
444
+ name: config.name || "@shopkit/analytics",
445
+ prettyPrint: config.prettyPrint || false,
446
+ redact: config.redact || []
420
447
  };
421
- if (prettyPrint && typeof window === "undefined") {
422
- pinoConfig.transport = {
423
- target: "pino-pretty",
424
- options: {
425
- colorize: true,
426
- translateTime: "HH:MM:ss Z",
427
- ignore: "pid,hostname"
428
- }
429
- };
430
- }
431
- const pinoLogger = (0, import_pino.default)(pinoConfig);
432
- return new PinoLogger(pinoLogger);
433
- }
434
- function formatBrowserLog(logObj) {
435
- const { level, time, msg, name, args, error, ...rest } = logObj;
436
- let message = `[${name}] ${msg}`;
437
- if (args && args.length > 0) {
438
- message += ` ${args.map(
439
- (arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
440
- ).join(" ")}`;
441
- }
442
- if (error) {
443
- message += ` Error: ${error.message}`;
444
- if (error.stack) {
445
- message += `
446
- ${error.stack}`;
447
- }
448
- }
449
- if (Object.keys(rest).length > 0) {
450
- message += ` ${JSON.stringify(rest)}`;
448
+ if (!fullConfig.enabled) {
449
+ return new NoOpLogger();
451
450
  }
452
- return message;
451
+ return new UniversalLogger(fullConfig);
453
452
  }
454
453
  var logger = createLogger({
455
454
  enabled: true,
@@ -498,6 +497,38 @@ var BaseAdapter = class {
498
497
  isEnabled() {
499
498
  return this.initialized;
500
499
  }
500
+ /**
501
+ * Extract adapter-specific parameters for this adapter
502
+ * @param params The adapter parameters object
503
+ * @returns Adapter-specific parameters or empty object
504
+ */
505
+ getAdapterParams(params) {
506
+ return params?.[this.name] || {};
507
+ }
508
+ /**
509
+ * Get custom event name or fall back to default
510
+ * @param params The adapter parameters object
511
+ * @param defaultName The default event name to use
512
+ * @returns Custom event name or default
513
+ */
514
+ getEventName(params, defaultName) {
515
+ const adapterParams = this.getAdapterParams(params);
516
+ return adapterParams.event_name || defaultName;
517
+ }
518
+ /**
519
+ * Merge standard event data with adapter-specific parameters
520
+ * @param params The adapter parameters object
521
+ * @param standardData The standard event data
522
+ * @returns Merged data with adapter-specific overrides
523
+ */
524
+ mergeEventData(standardData, params) {
525
+ const adapterParams = this.getAdapterParams(params);
526
+ const { event_name, ...customParams } = adapterParams;
527
+ return {
528
+ ...standardData,
529
+ ...customParams
530
+ };
531
+ }
501
532
  /**
502
533
  * Get a configuration value
503
534
  * @param key The configuration key
@@ -530,6 +561,57 @@ var BaseAdapter = class {
530
561
  }
531
562
  };
532
563
 
564
+ // src/utils/event-id.ts
565
+ function generateEventId(eventType) {
566
+ const timestamp = Date.now();
567
+ const randomString = Math.random().toString(36).substring(2, 8);
568
+ return `${timestamp}_${randomString}_${eventType}`;
569
+ }
570
+ function getBrowserInfo() {
571
+ if (typeof window === "undefined") {
572
+ return {};
573
+ }
574
+ const userAgent = navigator.userAgent;
575
+ const fbc = getFacebookClickId();
576
+ const fbp = getFacebookBrowserId();
577
+ return {
578
+ clientUserAgent: userAgent,
579
+ fbc,
580
+ fbp
581
+ };
582
+ }
583
+ function getFacebookClickId() {
584
+ if (typeof window === "undefined") {
585
+ return void 0;
586
+ }
587
+ const urlParams = new URLSearchParams(window.location.search);
588
+ const fbclid = urlParams.get("fbclid");
589
+ if (fbclid) {
590
+ return `fb.1.${Date.now()}.${fbclid}`;
591
+ }
592
+ const cookies = document.cookie.split(";");
593
+ for (const cookie of cookies) {
594
+ const [name, value] = cookie.trim().split("=");
595
+ if (name === "_fbc") {
596
+ return value;
597
+ }
598
+ }
599
+ return void 0;
600
+ }
601
+ function getFacebookBrowserId() {
602
+ if (typeof window === "undefined") {
603
+ return void 0;
604
+ }
605
+ const cookies = document.cookie.split(";");
606
+ for (const cookie of cookies) {
607
+ const [name, value] = cookie.trim().split("=");
608
+ if (name === "_fbp") {
609
+ return value;
610
+ }
611
+ }
612
+ return void 0;
613
+ }
614
+
533
615
  // src/adapters/pixel-adapter.ts
534
616
  var PixelAdapter = class extends BaseAdapter {
535
617
  constructor(config) {
@@ -555,18 +637,34 @@ var PixelAdapter = class extends BaseAdapter {
555
637
  );
556
638
  return;
557
639
  }
558
- const pixelId = this.getConfig("pixelId");
559
640
  this.logger.info("Successfully initialized", { pixelId: "***" });
560
641
  this.initialized = true;
561
642
  }
562
643
  /**
563
644
  * Track an event with Facebook Pixel
564
645
  * @param event The event to track
646
+ * @param adapterParams Optional adapter-specific parameters
565
647
  */
566
- async trackEvent(event) {
648
+ async trackEvent(event, adapterParams) {
649
+ if (!event.eventId) {
650
+ event.eventId = generateEventId(event.type);
651
+ }
652
+ this.logger.debug("Tracking event", {
653
+ eventType: event.type,
654
+ eventId: event.eventId
655
+ });
656
+ await this.trackClientSide(event, adapterParams);
657
+ if (this.getConfig("enableCAPI", true)) {
658
+ await this.trackServerSide(event);
659
+ }
660
+ }
661
+ /**
662
+ * Track event on client-side (browser pixel)
663
+ */
664
+ async trackClientSide(event, adapterParams) {
567
665
  if (!this.initialized || typeof window === "undefined" || !window.fbq) {
568
666
  this.logger.warn(
569
- "Cannot track event, adapter not initialized or fbq not available",
667
+ "Cannot track client-side event, adapter not initialized or fbq not available",
570
668
  {
571
669
  eventType: event.type,
572
670
  initialized: this.initialized,
@@ -576,55 +674,95 @@ var PixelAdapter = class extends BaseAdapter {
576
674
  );
577
675
  return;
578
676
  }
579
- this.logger.debug("Tracking event", { eventType: event.type });
580
677
  switch (event.type) {
581
678
  case "page_view" /* PAGE_VIEW */:
582
- this.trackPageView(event);
679
+ this.trackPageView(event, adapterParams);
583
680
  break;
584
681
  case "view_content" /* VIEW_CONTENT */:
585
- this.trackViewContent(event);
682
+ this.trackViewContent(event, adapterParams);
586
683
  break;
587
684
  case "product_view" /* PRODUCT_VIEW */:
588
- this.trackProductView(event);
685
+ this.trackProductView(event, adapterParams);
589
686
  break;
590
687
  case "add_to_cart" /* ADD_TO_CART */:
591
- this.trackAddToCart(event);
688
+ this.trackAddToCart(event, adapterParams);
592
689
  break;
593
690
  case "checkout_started" /* CHECKOUT_STARTED */:
594
- this.trackCheckoutStarted(event);
691
+ this.trackCheckoutStarted(event, adapterParams);
595
692
  break;
596
693
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
597
- this.trackCheckoutCompleted(event);
694
+ this.trackCheckoutCompleted(event, adapterParams);
598
695
  break;
599
696
  case "purchase" /* PURCHASE */:
600
- this.trackPurchase(event);
697
+ this.trackPurchase(event, adapterParams);
601
698
  break;
602
699
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
603
- this.trackAddPaymentInfo(event);
700
+ this.trackAddPaymentInfo(event, adapterParams);
604
701
  break;
605
702
  case "search" /* SEARCH */:
606
- this.trackSearch(event);
703
+ this.trackSearch(event, adapterParams);
607
704
  break;
608
705
  default:
609
706
  this.logger.debug("Unhandled event type", { eventType: event.type });
610
707
  break;
611
708
  }
612
709
  }
710
+ /**
711
+ * Track event on server-side (CAPI) as backup
712
+ */
713
+ async trackServerSide(event) {
714
+ try {
715
+ const browserInfo = getBrowserInfo();
716
+ const payload = {
717
+ events: [event],
718
+ userInfo: browserInfo
719
+ };
720
+ const response = await fetch("/api/events", {
721
+ method: "POST",
722
+ headers: {
723
+ "Content-Type": "application/json"
724
+ },
725
+ body: JSON.stringify(payload)
726
+ });
727
+ if (!response.ok) {
728
+ throw new Error(`Server-side tracking failed: ${response.status}`);
729
+ }
730
+ this.logger.debug(
731
+ `FB Pixel: Server-side backup sent for event ${event.type}`
732
+ );
733
+ } catch (error) {
734
+ this.logger.error(
735
+ `FB Pixel: Server-side backup failed for event ${event.type}: ${error instanceof Error ? error.message : String(error)}`
736
+ );
737
+ }
738
+ }
613
739
  /**
614
740
  * Track a page view event
615
741
  * @param event The page view event
616
742
  */
617
- trackPageView(event) {
618
- const params = this.enhanceWithAffiliateParams({});
619
- window.fbq?.("track", "PageView", params);
620
- this.logger.debug("PageView event tracked", { params });
743
+ trackPageView(event, adapterParams) {
744
+ const eventName = this.getEventName(adapterParams, "PageView");
745
+ const baseParams = this.enhanceWithAffiliateParams({});
746
+ const enhancedParams = this.mergeEventData(baseParams, adapterParams);
747
+ if (event.eventId) {
748
+ window.fbq?.("track", eventName, enhancedParams, {
749
+ eventID: event.eventId
750
+ });
751
+ } else {
752
+ window.fbq?.("track", eventName, enhancedParams);
753
+ }
754
+ this.logger.debug("PageView event tracked", {
755
+ eventName,
756
+ params: enhancedParams
757
+ });
621
758
  }
622
759
  /**
623
760
  * Track a product view event
624
761
  * @param event The product view event
625
762
  */
626
- trackProductView(event) {
627
- const params = {
763
+ trackProductView(event, adapterParams) {
764
+ const eventName = this.getEventName(adapterParams, "ViewContent");
765
+ const baseParams = {
628
766
  content_type: "product_group",
629
767
  content_ids: [event.productId],
630
768
  content_name: event.productName,
@@ -632,34 +770,54 @@ var PixelAdapter = class extends BaseAdapter {
632
770
  value: event.price,
633
771
  currency: event.currency || "INR"
634
772
  };
635
- window.fbq?.(
636
- "track",
637
- "ViewContent",
638
- this.enhanceWithAffiliateParams(params)
639
- );
773
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
774
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
775
+ if (event.eventId) {
776
+ window.fbq?.("track", eventName, enhancedParams, {
777
+ eventID: event.eventId
778
+ });
779
+ } else {
780
+ window.fbq?.("track", eventName, enhancedParams);
781
+ }
782
+ this.logger.debug("ProductView event tracked", {
783
+ eventName,
784
+ params: enhancedParams
785
+ });
640
786
  }
641
787
  /**
642
788
  * Track an add to cart event
643
789
  * @param event The add to cart event
644
790
  */
645
- trackAddToCart(event) {
646
- const params = {
791
+ trackAddToCart(event, adapterParams) {
792
+ const eventName = this.getEventName(adapterParams, "AddToCart");
793
+ const baseParams = {
647
794
  content_type: "product_group",
648
795
  content_ids: [event.productId],
649
796
  content_name: event.productName,
650
797
  value: event.price,
651
798
  currency: event.currency || "INR"
652
799
  };
653
- const enhancedParams = this.enhanceWithAffiliateParams(params);
654
- window.fbq?.("track", "AddToCart", enhancedParams);
655
- this.logger.debug("AddToCart event tracked", { params: enhancedParams });
800
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
801
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
802
+ if (event.eventId) {
803
+ window.fbq?.("track", eventName, enhancedParams, {
804
+ eventID: event.eventId
805
+ });
806
+ } else {
807
+ window.fbq?.("track", eventName, enhancedParams);
808
+ }
809
+ this.logger.debug("AddToCart event tracked", {
810
+ eventName,
811
+ params: enhancedParams
812
+ });
656
813
  }
657
814
  /**
658
815
  * Track a checkout started event
659
816
  * @param event The checkout started event
660
817
  */
661
- trackCheckoutStarted(event) {
662
- const params = {
818
+ trackCheckoutStarted(event, adapterParams) {
819
+ const eventName = this.getEventName(adapterParams, "InitiateCheckout");
820
+ const baseParams = {
663
821
  content_ids: event.items.map((item) => item.productId),
664
822
  content_type: "product_group",
665
823
  value: event.cartValue,
@@ -671,18 +829,27 @@ var PixelAdapter = class extends BaseAdapter {
671
829
  item_price: item.price
672
830
  }))
673
831
  };
674
- window.fbq?.(
675
- "track",
676
- "InitiateCheckout",
677
- this.enhanceWithAffiliateParams(params)
678
- );
832
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
833
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
834
+ if (event.eventId) {
835
+ window.fbq?.("track", eventName, enhancedParams, {
836
+ eventID: event.eventId
837
+ });
838
+ } else {
839
+ window.fbq?.("track", eventName, enhancedParams);
840
+ }
841
+ this.logger.debug("CheckoutStarted event tracked", {
842
+ eventName,
843
+ params: enhancedParams
844
+ });
679
845
  }
680
846
  /**
681
847
  * Track a checkout completed event
682
848
  * @param event The checkout completed event
683
849
  */
684
- trackCheckoutCompleted(event) {
685
- const params = {
850
+ trackCheckoutCompleted(event, adapterParams) {
851
+ const eventName = this.getEventName(adapterParams, "Purchase");
852
+ const baseParams = {
686
853
  value: event.cartValue,
687
854
  currency: event.currency || "INR",
688
855
  content_type: "product_group",
@@ -694,26 +861,52 @@ var PixelAdapter = class extends BaseAdapter {
694
861
  item_price: item.price
695
862
  }))
696
863
  };
697
- window.fbq?.("track", "Purchase", this.enhanceWithAffiliateParams(params));
864
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
865
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
866
+ if (event.eventId) {
867
+ window.fbq?.("track", eventName, enhancedParams, {
868
+ eventID: event.eventId
869
+ });
870
+ } else {
871
+ window.fbq?.("track", eventName, enhancedParams);
872
+ }
873
+ this.logger.debug("CheckoutCompleted event tracked", {
874
+ eventName,
875
+ params: enhancedParams
876
+ });
698
877
  }
699
878
  /**
700
879
  * Track a search event
701
880
  * @param event The search event
702
881
  */
703
- trackSearch(event) {
704
- const params = {
882
+ trackSearch(event, adapterParams) {
883
+ const eventName = this.getEventName(adapterParams, "Search");
884
+ const baseParams = {
705
885
  search_string: event.searchTerm,
706
886
  content_category: "product",
707
887
  content_ids: event.content_ids || []
708
888
  };
709
- window.fbq?.("track", "Search", this.enhanceWithAffiliateParams(params));
889
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
890
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
891
+ if (event.eventId) {
892
+ window.fbq?.("track", eventName, enhancedParams, {
893
+ eventID: event.eventId
894
+ });
895
+ } else {
896
+ window.fbq?.("track", eventName, enhancedParams);
897
+ }
898
+ this.logger.debug("Search event tracked", {
899
+ eventName,
900
+ params: enhancedParams
901
+ });
710
902
  }
711
903
  /**
712
904
  * Track an add payment info event
713
905
  * @param event The add payment info event
714
906
  */
715
- trackAddPaymentInfo(event) {
716
- const params = {
907
+ trackAddPaymentInfo(event, adapterParams) {
908
+ const eventName = this.getEventName(adapterParams, "AddPaymentInfo");
909
+ const baseParams = {
717
910
  value: event.cartValue,
718
911
  currency: event.currency || "INR",
719
912
  content_type: "product_group",
@@ -725,18 +918,27 @@ var PixelAdapter = class extends BaseAdapter {
725
918
  })),
726
919
  payment_type: event.paymentType || ""
727
920
  };
728
- window.fbq?.(
729
- "track",
730
- "AddPaymentInfo",
731
- this.enhanceWithAffiliateParams(params)
732
- );
921
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
922
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
923
+ if (event.eventId) {
924
+ window.fbq?.("track", eventName, enhancedParams, {
925
+ eventID: event.eventId
926
+ });
927
+ } else {
928
+ window.fbq?.("track", eventName, enhancedParams);
929
+ }
930
+ this.logger.debug("AddPaymentInfo event tracked", {
931
+ eventName,
932
+ params: enhancedParams
933
+ });
733
934
  }
734
935
  /**
735
936
  * Track a view content event
736
937
  * @param event The view content event
737
938
  */
738
- trackViewContent(event) {
739
- const params = {
939
+ trackViewContent(event, adapterParams) {
940
+ const eventName = this.getEventName(adapterParams, "ViewContent");
941
+ const baseParams = {
740
942
  content_type: event.content_type || "product",
741
943
  content_ids: event.content_ids || [],
742
944
  content_name: event.content_name || "",
@@ -744,18 +946,27 @@ var PixelAdapter = class extends BaseAdapter {
744
946
  value: event.value || 0,
745
947
  currency: event.currency || "INR"
746
948
  };
747
- window.fbq?.(
748
- "track",
749
- "ViewContent",
750
- this.enhanceWithAffiliateParams(params)
751
- );
949
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
950
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
951
+ if (event.eventId) {
952
+ window.fbq?.("track", eventName, enhancedParams, {
953
+ eventID: event.eventId
954
+ });
955
+ } else {
956
+ window.fbq?.("track", eventName, enhancedParams);
957
+ }
958
+ this.logger.debug("ViewContent event tracked", {
959
+ eventName,
960
+ params: enhancedParams
961
+ });
752
962
  }
753
963
  /**
754
964
  * Track a purchase event
755
965
  * @param event The purchase event
756
966
  */
757
- trackPurchase(event) {
758
- const params = {
967
+ trackPurchase(event, adapterParams) {
968
+ const eventName = this.getEventName(adapterParams, "Purchase");
969
+ const baseParams = {
759
970
  value: event.value,
760
971
  currency: event.currency || "INR",
761
972
  content_type: event.content_type || "product_group",
@@ -763,15 +974,19 @@ var PixelAdapter = class extends BaseAdapter {
763
974
  num_items: event.num_items || 1,
764
975
  contents: event.contents || []
765
976
  };
766
- window.fbq?.("track", "Purchase", this.enhanceWithAffiliateParams(params));
767
- }
768
- /**
769
- * Convert an event to Facebook Pixel parameters
770
- * @param event The event to convert
771
- */
772
- eventToParams(event) {
773
- const { type, timestamp, ...params } = event;
774
- return this.enhanceWithAffiliateParams(params);
977
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
978
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
979
+ if (event.eventId) {
980
+ window.fbq?.("track", eventName, enhancedParams, {
981
+ eventID: event.eventId
982
+ });
983
+ } else {
984
+ window.fbq?.("track", eventName, enhancedParams);
985
+ }
986
+ this.logger.debug("Purchase event tracked", {
987
+ eventName,
988
+ params: enhancedParams
989
+ });
775
990
  }
776
991
  };
777
992
 
@@ -820,8 +1035,9 @@ var GoogleAdapter = class extends BaseAdapter {
820
1035
  /**
821
1036
  * Track an event with Google Analytics
822
1037
  * @param event The event to track
1038
+ * @param adapterParams Optional adapter-specific parameters
823
1039
  */
824
- async trackEvent(event) {
1040
+ async trackEvent(event, adapterParams) {
825
1041
  this.logger.debug("Attempting to track event", {
826
1042
  initialized: this.initialized,
827
1043
  hasWindow: typeof window !== "undefined",
@@ -847,76 +1063,93 @@ var GoogleAdapter = class extends BaseAdapter {
847
1063
  });
848
1064
  switch (event.type) {
849
1065
  case "page_view" /* PAGE_VIEW */:
850
- this.trackPageView(event, measurementId);
1066
+ this.trackPageView(
1067
+ event,
1068
+ measurementId,
1069
+ adapterParams
1070
+ );
851
1071
  break;
852
1072
  case "user_engagement" /* USER_ENGAGEMENT */:
853
- this.trackUserEngagement();
1073
+ this.trackUserEngagement(adapterParams);
854
1074
  break;
855
1075
  case "session_start" /* SESSION_START */:
856
- this.trackSessionStart();
1076
+ this.trackSessionStart(adapterParams);
857
1077
  break;
858
1078
  case "first_visit" /* FIRST_VISIT */:
859
- this.trackFirstVisit();
1079
+ this.trackFirstVisit(adapterParams);
860
1080
  break;
861
1081
  case "view_item" /* VIEW_ITEM */:
862
- this.trackViewItem(event);
1082
+ this.trackViewItem(event, adapterParams);
863
1083
  break;
864
1084
  case "viewed_product" /* VIEWED_PRODUCT */:
865
- this.trackViewedProduct(event);
1085
+ this.trackViewedProduct(event, adapterParams);
866
1086
  break;
867
1087
  case "checkout_payment" /* CHECKOUT_PAYMENT */:
868
- this.trackCheckoutPayment(event);
1088
+ this.trackCheckoutPayment(
1089
+ event,
1090
+ adapterParams
1091
+ );
869
1092
  break;
870
1093
  case "scroll" /* SCROLL */:
871
- this.trackScroll();
1094
+ this.trackScroll(adapterParams);
872
1095
  break;
873
1096
  case "add_to_cart" /* ADD_TO_CART */:
874
- case "shopify_add_to_cart" /* SHOPIFY_ADD_TO_CART */:
875
- this.trackAddToCart(event);
1097
+ this.trackAddToCart(event, adapterParams);
876
1098
  break;
877
1099
  case "form_start" /* FORM_START */:
878
- this.trackFormStart();
1100
+ this.trackFormStart(adapterParams);
879
1101
  break;
880
1102
  case "checkout_started" /* CHECKOUT_STARTED */:
881
- this.trackCheckoutStarted(event);
1103
+ this.trackCheckoutStarted(
1104
+ event,
1105
+ adapterParams
1106
+ );
882
1107
  break;
883
1108
  case "form_submission" /* FORM_SUBMISSION */:
884
- this.trackFormSubmission(event);
1109
+ this.trackFormSubmission(event, adapterParams);
885
1110
  break;
886
1111
  case "search" /* SEARCH */:
887
- this.trackSearch(event);
1112
+ this.trackSearch(event, adapterParams);
888
1113
  break;
889
1114
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
890
- this.trackCheckoutCompleted(event);
1115
+ this.trackCheckoutCompleted(
1116
+ event,
1117
+ adapterParams
1118
+ );
891
1119
  break;
892
1120
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
893
- this.trackAddPaymentInfo(event);
1121
+ this.trackAddPaymentInfo(event, adapterParams);
894
1122
  break;
895
1123
  case "view_content" /* VIEW_CONTENT */:
896
- this.trackViewContent(event);
1124
+ this.trackViewContent(event, adapterParams);
897
1125
  break;
898
1126
  case "purchase" /* PURCHASE */:
899
- this.trackPurchase(event);
1127
+ this.trackPurchase(event, adapterParams);
900
1128
  break;
901
1129
  case "view_search_results" /* VIEW_SEARCH_RESULTS */:
902
- this.trackViewSearchResults(event);
1130
+ this.trackViewSearchResults(
1131
+ event,
1132
+ adapterParams
1133
+ );
903
1134
  break;
904
1135
  case "order_placed" /* ORDER_PLACED */:
905
- this.trackOrderPlaced(event);
1136
+ this.trackOrderPlaced(event, adapterParams);
906
1137
  break;
907
1138
  case "begin_checkout" /* BEGIN_CHECKOUT */:
908
- this.trackBeginCheckout(event);
1139
+ this.trackBeginCheckout(event, adapterParams);
909
1140
  break;
910
1141
  case "custom" /* CUSTOM */:
911
- this.trackCustomEvent(event);
1142
+ this.trackCustomEvent(event, adapterParams);
912
1143
  break;
913
1144
  default: {
914
- const params = this.eventToParams(event);
915
- window.gtag(
916
- "event",
917
- event.type,
918
- this.enhanceWithAffiliateParams(params)
1145
+ const eventName = this.getEventName(adapterParams, event.type);
1146
+ const baseParams = this.eventToParams(event);
1147
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1148
+ const enhancedParams = this.mergeEventData(
1149
+ affiliateParams,
1150
+ adapterParams
919
1151
  );
1152
+ window.gtag("event", eventName, enhancedParams);
920
1153
  break;
921
1154
  }
922
1155
  }
@@ -926,8 +1159,9 @@ var GoogleAdapter = class extends BaseAdapter {
926
1159
  * @param event The page view event
927
1160
  * @param measurementId The Google Analytics measurement ID
928
1161
  */
929
- trackPageView(event, measurementId) {
930
- const params = {
1162
+ trackPageView(event, measurementId, adapterParams) {
1163
+ const eventName = this.getEventName(adapterParams, "page_view");
1164
+ const baseParams = {
931
1165
  page_path: event.path,
932
1166
  page_title: event.title || document.title,
933
1167
  page_location: event.page_location || window.location.href,
@@ -950,14 +1184,13 @@ var GoogleAdapter = class extends BaseAdapter {
950
1184
  user_properties: event.user_properties,
951
1185
  session_engaged: event.session_engaged
952
1186
  };
953
- window.gtag?.(
954
- "event",
955
- "page_view",
956
- this.enhanceWithAffiliateParams(params)
957
- );
1187
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1188
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1189
+ window.gtag?.("event", eventName, enhancedParams);
958
1190
  }
959
- trackUserEngagement() {
960
- const params = {
1191
+ trackUserEngagement(adapterParams) {
1192
+ const eventName = this.getEventName(adapterParams, "user_engagement");
1193
+ const baseParams = {
961
1194
  batch_ordering_id: "",
962
1195
  batch_page_id: "",
963
1196
  campaign: "",
@@ -974,14 +1207,13 @@ var GoogleAdapter = class extends BaseAdapter {
974
1207
  srsltid: "",
975
1208
  term: ""
976
1209
  };
977
- window.gtag?.(
978
- "event",
979
- "user_engagement",
980
- this.enhanceWithAffiliateParams(params)
981
- );
1210
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1211
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1212
+ window.gtag?.("event", eventName, enhancedParams);
982
1213
  }
983
- trackSessionStart() {
984
- const params = {
1214
+ trackSessionStart(adapterParams) {
1215
+ const eventName = this.getEventName(adapterParams, "session_start");
1216
+ const baseParams = {
985
1217
  batch_ordering_id: "",
986
1218
  batch_page_id: "",
987
1219
  campaign: "",
@@ -1000,14 +1232,13 @@ var GoogleAdapter = class extends BaseAdapter {
1000
1232
  srsltid: "",
1001
1233
  term: ""
1002
1234
  };
1003
- window.gtag?.(
1004
- "event",
1005
- "session_start",
1006
- this.enhanceWithAffiliateParams(params)
1007
- );
1235
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1236
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1237
+ window.gtag?.("event", eventName, enhancedParams);
1008
1238
  }
1009
- trackFirstVisit() {
1010
- const params = {
1239
+ trackFirstVisit(adapterParams) {
1240
+ const eventName = this.getEventName(adapterParams, "first_visit");
1241
+ const baseParams = {
1011
1242
  batch_ordering_id: "",
1012
1243
  batch_page_id: "",
1013
1244
  campaign: "",
@@ -1028,25 +1259,24 @@ var GoogleAdapter = class extends BaseAdapter {
1028
1259
  page_source: "",
1029
1260
  page_term: ""
1030
1261
  };
1031
- window.gtag?.(
1032
- "event",
1033
- "first_visit",
1034
- this.enhanceWithAffiliateParams(params)
1035
- );
1036
- }
1037
- trackViewItem(event) {
1038
- window.gtag?.(
1039
- "event",
1040
- "view_item",
1041
- this.enhanceWithAffiliateParams({
1042
- currency: event.currency,
1043
- value: event.value,
1044
- items: event.items
1045
- })
1046
- );
1262
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1263
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1264
+ window.gtag?.("event", eventName, enhancedParams);
1265
+ }
1266
+ trackViewItem(event, adapterParams) {
1267
+ const eventName = this.getEventName(adapterParams, "view_item");
1268
+ const baseParams = {
1269
+ currency: event.currency,
1270
+ value: event.value,
1271
+ items: event.items
1272
+ };
1273
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1274
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1275
+ window.gtag?.("event", eventName, enhancedParams);
1047
1276
  }
1048
- trackScroll() {
1049
- const params = {
1277
+ trackScroll(adapterParams) {
1278
+ const eventName = this.getEventName(adapterParams, "scroll");
1279
+ const baseParams = {
1050
1280
  batch_ordering_id: "",
1051
1281
  batch_page_id: "",
1052
1282
  engagement_time_msec: void 0,
@@ -1060,46 +1290,49 @@ var GoogleAdapter = class extends BaseAdapter {
1060
1290
  percent_scrolled: 90
1061
1291
  // or dynamically captured
1062
1292
  };
1063
- window.gtag?.("event", "scroll", this.enhanceWithAffiliateParams(params));
1064
- }
1065
- trackCheckoutPayment(event) {
1066
- window.gtag?.(
1067
- "event",
1068
- "checkout_payment",
1069
- this.enhanceWithAffiliateParams({
1070
- currency: event.currency,
1071
- value: event.cartValue,
1072
- items: event.items.map((item) => ({
1073
- item_id: item.productId,
1074
- item_name: item.productName,
1075
- price: item.price,
1076
- quantity: item.quantity
1077
- }))
1078
- })
1079
- );
1080
- }
1081
- trackViewedProduct(event) {
1082
- window.gtag?.(
1083
- "event",
1084
- "viewed_product",
1085
- this.enhanceWithAffiliateParams({
1086
- currency: event.currency,
1087
- value: event.price,
1088
- items: [
1089
- {
1090
- item_id: event.productId,
1091
- item_name: event.productName,
1092
- price: event.price,
1093
- currency: event.currency
1094
- }
1095
- ],
1096
- view_duration: event.viewDuration
1097
- })
1098
- );
1293
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1294
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1295
+ window.gtag?.("event", eventName, enhancedParams);
1296
+ }
1297
+ trackCheckoutPayment(event, adapterParams) {
1298
+ const eventName = this.getEventName(adapterParams, "checkout_payment");
1299
+ const baseParams = {
1300
+ currency: event.currency,
1301
+ value: event.cartValue,
1302
+ items: event.items.map((item) => ({
1303
+ item_id: item.productId,
1304
+ item_name: item.productName,
1305
+ price: item.price,
1306
+ quantity: item.quantity
1307
+ }))
1308
+ };
1309
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1310
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1311
+ window.gtag?.("event", eventName, enhancedParams);
1312
+ }
1313
+ trackViewedProduct(event, adapterParams) {
1314
+ const eventName = this.getEventName(adapterParams, "viewed_product");
1315
+ const baseParams = {
1316
+ currency: event.currency,
1317
+ value: event.price,
1318
+ items: [
1319
+ {
1320
+ item_id: event.productId,
1321
+ item_name: event.productName,
1322
+ price: event.price,
1323
+ currency: event.currency
1324
+ }
1325
+ ],
1326
+ view_duration: event.viewDuration
1327
+ };
1328
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1329
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1330
+ window.gtag?.("event", eventName, enhancedParams);
1099
1331
  }
1100
- trackAddToCart(event) {
1332
+ trackAddToCart(event, adapterParams) {
1101
1333
  this.logger.debug("Processing add_to_cart event", { event });
1102
- const params = {
1334
+ const eventName = this.getEventName(adapterParams, "add_to_cart");
1335
+ const baseParams = {
1103
1336
  currency: event.currency || "INR",
1104
1337
  value: event.price * (event.quantity || 1),
1105
1338
  // Calculate total value
@@ -1125,14 +1358,17 @@ var GoogleAdapter = class extends BaseAdapter {
1125
1358
  user_id: event.user_id,
1126
1359
  user_properties: event.user_properties
1127
1360
  };
1128
- const enhancedParams = this.enhanceWithAffiliateParams(params);
1361
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1362
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1129
1363
  this.logger.debug("Sending add_to_cart event to gtag", {
1364
+ eventName,
1130
1365
  params: enhancedParams
1131
1366
  });
1132
- window.gtag?.("event", "add_to_cart", enhancedParams);
1367
+ window.gtag?.("event", eventName, enhancedParams);
1133
1368
  }
1134
- trackFormStart() {
1135
- const params = {
1369
+ trackFormStart(adapterParams) {
1370
+ const eventName = this.getEventName(adapterParams, "form_start");
1371
+ const baseParams = {
1136
1372
  batch_ordering_id: "",
1137
1373
  batch_page_id: "",
1138
1374
  engagement_time_msec: void 0,
@@ -1150,14 +1386,13 @@ var GoogleAdapter = class extends BaseAdapter {
1150
1386
  page_referrer: document.referrer,
1151
1387
  page_title: document.title
1152
1388
  };
1153
- window.gtag?.(
1154
- "event",
1155
- "form_start",
1156
- this.enhanceWithAffiliateParams(params)
1157
- );
1389
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1390
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1391
+ window.gtag?.("event", eventName, enhancedParams);
1158
1392
  }
1159
- trackCheckoutStarted(event) {
1160
- const params = {
1393
+ trackCheckoutStarted(event, adapterParams) {
1394
+ const eventName = this.getEventName(adapterParams, "begin_checkout");
1395
+ const baseParams = {
1161
1396
  batch_ordering_id: "",
1162
1397
  batch_page_id: "",
1163
1398
  currency: event.currency || "INR",
@@ -1180,14 +1415,13 @@ var GoogleAdapter = class extends BaseAdapter {
1180
1415
  item_variant: item.variant
1181
1416
  }))
1182
1417
  };
1183
- window.gtag?.(
1184
- "event",
1185
- "begin_checkout",
1186
- this.enhanceWithAffiliateParams(params)
1187
- );
1418
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1419
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1420
+ window.gtag?.("event", eventName, enhancedParams);
1188
1421
  }
1189
- trackFormSubmission(event) {
1190
- const params = {
1422
+ trackFormSubmission(event, adapterParams) {
1423
+ const eventName = this.getEventName(adapterParams, "form_submit");
1424
+ const baseParams = {
1191
1425
  batch_ordering_id: "",
1192
1426
  batch_page_id: "",
1193
1427
  engagement_time_msec: void 0,
@@ -1201,14 +1435,13 @@ var GoogleAdapter = class extends BaseAdapter {
1201
1435
  page_referrer: document.referrer,
1202
1436
  page_title: document.title
1203
1437
  };
1204
- window.gtag?.(
1205
- "event",
1206
- "form_submit",
1207
- this.enhanceWithAffiliateParams(params)
1208
- );
1438
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1439
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1440
+ window.gtag?.("event", eventName, enhancedParams);
1209
1441
  }
1210
- trackSearch(event) {
1211
- const params = {
1442
+ trackSearch(event, adapterParams) {
1443
+ const eventName = this.getEventName(adapterParams, "search");
1444
+ const baseParams = {
1212
1445
  batch_ordering_id: "",
1213
1446
  batch_page_id: "",
1214
1447
  engagement_time_msec: void 0,
@@ -1220,14 +1453,17 @@ var GoogleAdapter = class extends BaseAdapter {
1220
1453
  page_title: document.title,
1221
1454
  search_term: event.searchTerm
1222
1455
  };
1223
- window.gtag?.("event", "search", this.enhanceWithAffiliateParams(params));
1456
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1457
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1458
+ window.gtag?.("event", eventName, enhancedParams);
1224
1459
  }
1225
1460
  /**
1226
1461
  * Track a checkout completed event
1227
1462
  * @param event The checkout completed event
1228
1463
  */
1229
- trackCheckoutCompleted(event) {
1230
- const params = {
1464
+ trackCheckoutCompleted(event, adapterParams) {
1465
+ const eventName = this.getEventName(adapterParams, "purchase");
1466
+ const baseParams = {
1231
1467
  transaction_id: event.orderId,
1232
1468
  currency: event.currency || "INR",
1233
1469
  value: event.cartValue,
@@ -1239,22 +1475,28 @@ var GoogleAdapter = class extends BaseAdapter {
1239
1475
  item_variant: item.variant
1240
1476
  }))
1241
1477
  };
1242
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1478
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1479
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1480
+ window.gtag?.("event", eventName, enhancedParams);
1243
1481
  }
1244
1482
  /**
1245
1483
  * Track a custom event
1246
1484
  * @param event The custom event
1247
1485
  */
1248
- trackCustomEvent(event) {
1249
- const params = event.properties || {};
1250
- window.gtag?.("event", event.name, this.enhanceWithAffiliateParams(params));
1486
+ trackCustomEvent(event, adapterParams) {
1487
+ const eventName = this.getEventName(adapterParams, event.name);
1488
+ const baseParams = event.properties || {};
1489
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1490
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1491
+ window.gtag?.("event", eventName, enhancedParams);
1251
1492
  }
1252
1493
  /**
1253
1494
  * Track an add payment info event
1254
1495
  * @param event The add payment info event
1255
1496
  */
1256
- trackAddPaymentInfo(event) {
1257
- const params = {
1497
+ trackAddPaymentInfo(event, adapterParams) {
1498
+ const eventName = this.getEventName(adapterParams, "add_payment_info");
1499
+ const baseParams = {
1258
1500
  currency: event.currency || "INR",
1259
1501
  value: event.cartValue,
1260
1502
  payment_type: event.paymentType || "",
@@ -1266,18 +1508,17 @@ var GoogleAdapter = class extends BaseAdapter {
1266
1508
  item_variant: item.variant
1267
1509
  }))
1268
1510
  };
1269
- window.gtag?.(
1270
- "event",
1271
- "add_payment_info",
1272
- this.enhanceWithAffiliateParams(params)
1273
- );
1511
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1512
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1513
+ window.gtag?.("event", eventName, enhancedParams);
1274
1514
  }
1275
1515
  /**
1276
1516
  * Track a view content event
1277
1517
  * @param event The view content event
1278
1518
  */
1279
- trackViewContent(event) {
1280
- const params = {
1519
+ trackViewContent(event, adapterParams) {
1520
+ const eventName = this.getEventName(adapterParams, "view_item");
1521
+ const baseParams = {
1281
1522
  currency: event.currency || "USD",
1282
1523
  value: event.value || 0,
1283
1524
  items: event.items?.map((item) => ({
@@ -1306,18 +1547,17 @@ var GoogleAdapter = class extends BaseAdapter {
1306
1547
  user_id: event.user_id,
1307
1548
  user_properties: event.user_properties
1308
1549
  };
1309
- window.gtag?.(
1310
- "event",
1311
- "view_item",
1312
- this.enhanceWithAffiliateParams(params)
1313
- );
1550
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1551
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1552
+ window.gtag?.("event", eventName, enhancedParams);
1314
1553
  }
1315
1554
  /**
1316
1555
  * Track a purchase event
1317
1556
  * @param event The purchase event
1318
1557
  */
1319
- trackPurchase(event) {
1320
- const params = {
1558
+ trackPurchase(event, adapterParams) {
1559
+ const eventName = this.getEventName(adapterParams, "purchase");
1560
+ const baseParams = {
1321
1561
  transaction_id: event.transaction_id,
1322
1562
  value: event.value,
1323
1563
  currency: event.currency || "USD",
@@ -1350,14 +1590,17 @@ var GoogleAdapter = class extends BaseAdapter {
1350
1590
  user_id: event.user_id,
1351
1591
  user_properties: event.user_properties
1352
1592
  };
1353
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1593
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1594
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1595
+ window.gtag?.("event", eventName, enhancedParams);
1354
1596
  }
1355
1597
  /**
1356
1598
  * Track a view search results event
1357
1599
  * @param event The view search results event
1358
1600
  */
1359
- trackViewSearchResults(event) {
1360
- const params = {
1601
+ trackViewSearchResults(event, adapterParams) {
1602
+ const eventName = this.getEventName(adapterParams, "view_search_results");
1603
+ const baseParams = {
1361
1604
  search_term: event.search_term,
1362
1605
  // GA4-specific parameters
1363
1606
  batch_ordering_id: event.batch_ordering_id || "",
@@ -1372,18 +1615,17 @@ var GoogleAdapter = class extends BaseAdapter {
1372
1615
  user_id: event.user_id,
1373
1616
  user_properties: event.user_properties
1374
1617
  };
1375
- window.gtag?.(
1376
- "event",
1377
- "view_search_results",
1378
- this.enhanceWithAffiliateParams(params)
1379
- );
1618
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1619
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1620
+ window.gtag?.("event", eventName, enhancedParams);
1380
1621
  }
1381
1622
  /**
1382
1623
  * Track an order placed event
1383
1624
  * @param event The order placed event
1384
1625
  */
1385
- trackOrderPlaced(event) {
1386
- const params = {
1626
+ trackOrderPlaced(event, adapterParams) {
1627
+ const eventName = this.getEventName(adapterParams, "purchase");
1628
+ const baseParams = {
1387
1629
  transaction_id: event.order_id,
1388
1630
  value: event.total_amount,
1389
1631
  currency: event.currency || "USD",
@@ -1409,14 +1651,17 @@ var GoogleAdapter = class extends BaseAdapter {
1409
1651
  user_id: event.user_id,
1410
1652
  user_properties: event.user_properties
1411
1653
  };
1412
- window.gtag?.("event", "purchase", this.enhanceWithAffiliateParams(params));
1654
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1655
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1656
+ window.gtag?.("event", eventName, enhancedParams);
1413
1657
  }
1414
1658
  /**
1415
1659
  * Track a begin checkout event
1416
1660
  * @param event The begin checkout event
1417
1661
  */
1418
- trackBeginCheckout(event) {
1419
- const params = {
1662
+ trackBeginCheckout(event, adapterParams) {
1663
+ const eventName = this.getEventName(adapterParams, "begin_checkout");
1664
+ const baseParams = {
1420
1665
  currency: event.currency || "USD",
1421
1666
  value: event.value || 0,
1422
1667
  coupon: event.coupon,
@@ -1446,11 +1691,9 @@ var GoogleAdapter = class extends BaseAdapter {
1446
1691
  user_id: event.user_id,
1447
1692
  user_properties: event.user_properties
1448
1693
  };
1449
- window.gtag?.(
1450
- "event",
1451
- "begin_checkout",
1452
- this.enhanceWithAffiliateParams(params)
1453
- );
1694
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
1695
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
1696
+ window.gtag?.("event", eventName, enhancedParams);
1454
1697
  }
1455
1698
  /**
1456
1699
  * Convert an event to Google Analytics parameters
@@ -1480,44 +1723,9 @@ var EventNames = {
1480
1723
  SEARCH: "Search",
1481
1724
  // User events
1482
1725
  USER_SIGNED_UP: "User Signed Up",
1483
- USER_LOGGED_IN: "User Logged In",
1484
- // MoEngage events
1485
- ITEM_PURCHASED: "Item Purchased",
1486
- UPDATE_CART: "Update Cart",
1487
- CUSTOMER_REGISTERED: "Customer Registered",
1488
- CUSTOMER_LOGGED_IN: "Customer Logged In",
1489
- SHOPIFY_CHECKOUT_UPDATED: "Shopify - Checkout Updated",
1490
- SHOPIFY_ABANDONED_CHECKOUT: "Shopify - Abandoned Checkout",
1491
- SHOPIFY_ORDER_FULFILLED: "Shopify - Order Fulfilled",
1492
- SHOPIFY_CHECKOUT_STARTED: "Shopify - Checkout Started",
1493
- SHOPIFY_ADD_TO_CART: "Shopify - Add To Cart",
1494
- SHOPIFY_REMOVED_FROM_CART: "Shopify - Removed From Cart",
1495
- SHOPIFY_UPDATE_CART: "Shopify - Update Cart",
1496
- SPINFORM_RESULT: "Spinform Result",
1497
- COUPON_COPIED: "Coupon Copied",
1498
- STARTED_CHECKOUT_GK: "Started Checkout GK",
1499
- MOBILE_ADDED_GK: "Mobile Added GK",
1500
- ADDRESS_SELECTED_GK: "Address Selected GK",
1501
- ADDRESS_COMPLETED_GK: "Address Completed GK",
1502
- PAYMENT_METHOD_SELECTED_GK: "Payment Method Selected GK",
1503
- PAYMENT_COMPLETED_GK: "Payment Completed GK",
1504
- ORDER_SUCCESS: "Order Success",
1505
- ORDER_COMPLETED: "Order Completed",
1506
- PIN_CODE_ADDED_GK: "PIN Code Added GK",
1507
- ADDRESS_ADDED_GK: "Address Added GK",
1508
- KP_MP_PHONE_NUMBER_LOGGED_IN: "KP MP Phone Number Logged In",
1509
- KP_PHONE_NUMBER_LOGGED_IN: "KP Phone Number Logged In",
1510
- KP_MP_SHOPIFY_LOGGED_IN: "KP MP Shopify Logged In",
1511
- KP_MP_SUCCESSFULLY_LOGGED_OUT: "KP MP Successfully Logged Out",
1512
- KP_WHATSAPP_LOGGED_IN: "KP Whatsapp Logged In",
1513
- KP_MP_TRUECALLER_LOGGED_IN: "KP MP Truecaller Logged In",
1514
- KP_MP_WHATSAPP_LOGGED_IN: "KP MP Whatsapp Logged In",
1515
- KP_TRUECALLER_LOGGED_IN: "KP Truecaller Logged In",
1516
- KP_SHOPIFY_LOGGED_IN: "KP Shopify Logged In",
1517
- KP_SUCCESSFULLY_LOGGED_OUT: "KP Successfully Logged Out"
1726
+ USER_LOGGED_IN: "User Logged In"
1518
1727
  };
1519
1728
  var DEFAULT_CURRENCY = "INR";
1520
- var HARDCODED_HANDLE = "ryze-gums";
1521
1729
 
1522
1730
  // src/adapters/moengage-adapter.ts
1523
1731
  var import_web_sdk = __toESM(require("@moengage/web-sdk"));
@@ -1569,8 +1777,9 @@ var MoengageAdapter = class extends BaseAdapter {
1569
1777
  /**
1570
1778
  * Track an event with MoenGage SDK
1571
1779
  * @param event The event to track
1780
+ * @param adapterParams Optional adapter-specific parameters
1572
1781
  */
1573
- async trackEvent(event) {
1782
+ async trackEvent(event, adapterParams) {
1574
1783
  if (!this.initialized || typeof window === "undefined" || !this.sdk) {
1575
1784
  this.logger.warn(
1576
1785
  "Cannot track event, adapter not initialized or SDK not available",
@@ -1586,106 +1795,147 @@ var MoengageAdapter = class extends BaseAdapter {
1586
1795
  this.logger.debug("Tracking event", { eventType: event.type });
1587
1796
  switch (event.type) {
1588
1797
  case "page_view" /* PAGE_VIEW */:
1589
- this.trackPageView(event);
1798
+ this.trackPageView(event, adapterParams);
1590
1799
  break;
1591
1800
  case "button_click" /* BUTTON_CLICK */:
1592
- this.trackButtonClick(event);
1801
+ this.trackButtonClick(event, adapterParams);
1593
1802
  break;
1594
1803
  case "form_submission" /* FORM_SUBMISSION */:
1595
- this.trackFormSubmission(event);
1804
+ this.trackFormSubmission(event, adapterParams);
1596
1805
  break;
1597
1806
  case "product_view" /* PRODUCT_VIEW */:
1598
- this.trackProductView(event);
1807
+ this.trackProductView(event, adapterParams);
1599
1808
  break;
1600
1809
  case "add_to_cart" /* ADD_TO_CART */:
1601
- this.trackAddToCart(event);
1810
+ this.trackAddToCart(event, adapterParams);
1602
1811
  break;
1603
1812
  case "remove_from_cart" /* REMOVE_FROM_CART */:
1604
- this.trackRemoveFromCart(event);
1813
+ this.trackRemoveFromCart(event, adapterParams);
1605
1814
  break;
1606
1815
  case "checkout_started" /* CHECKOUT_STARTED */:
1607
- this.trackCheckoutStarted(event);
1816
+ this.trackCheckoutStarted(
1817
+ event,
1818
+ adapterParams
1819
+ );
1608
1820
  break;
1609
1821
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
1610
- this.trackCheckoutCompleted(event);
1822
+ this.trackCheckoutCompleted(
1823
+ event,
1824
+ adapterParams
1825
+ );
1611
1826
  break;
1612
1827
  case "search" /* SEARCH */:
1613
- this.trackSearch(event);
1828
+ this.trackSearch(event, adapterParams);
1614
1829
  break;
1615
1830
  case "user_signup" /* USER_SIGNUP */:
1616
- this.trackUserSignup(event);
1831
+ this.trackUserSignup(event, adapterParams);
1617
1832
  break;
1618
1833
  case "user_login" /* USER_LOGIN */:
1619
- this.trackUserLogin(event);
1834
+ this.trackUserLogin(event, adapterParams);
1620
1835
  break;
1621
1836
  case "custom" /* CUSTOM */:
1622
- this.trackCustomEvent(event);
1837
+ this.trackCustomEvent(event, adapterParams);
1623
1838
  break;
1624
1839
  default:
1625
- this.sdk.track_event(event.type, this.eventToParams(event));
1840
+ const eventName = this.getEventName(adapterParams, event.type);
1841
+ const baseParams = this.eventToParams(event);
1842
+ const enhancedParams = this.mergeEventData(baseParams, adapterParams);
1843
+ this.sdk.track_event(eventName, enhancedParams);
1626
1844
  break;
1627
1845
  }
1628
1846
  }
1629
1847
  /**
1630
1848
  * Track a page view event
1631
1849
  * @param event The page view event
1850
+ * @param adapterParams Optional adapter-specific parameters
1632
1851
  */
1633
- trackPageView(event) {
1852
+ trackPageView(event, adapterParams) {
1634
1853
  if (!this.sdk?.track_event) {
1635
1854
  this.logger.warn("track_event not available for PageView event");
1636
1855
  return;
1637
1856
  }
1638
- const eventData = {
1857
+ const eventName = this.getEventName(adapterParams, EventNames.PAGE_VIEWED);
1858
+ const baseEventData = {
1639
1859
  page_path: event.path,
1640
1860
  page_title: event.title,
1641
1861
  page_url: window.location.href,
1642
1862
  referrer: event.referrer || document.referrer
1643
1863
  };
1644
- this.sdk.track_event(EventNames.PAGE_VIEWED, eventData);
1645
- this.logger.debug("PageView event tracked", { eventData });
1864
+ const enhancedEventData = this.mergeEventData(baseEventData, adapterParams);
1865
+ this.sdk.track_event(eventName, enhancedEventData);
1866
+ this.logger.debug("PageView event tracked", {
1867
+ eventName,
1868
+ eventData: enhancedEventData
1869
+ });
1646
1870
  }
1647
1871
  /**
1648
1872
  * Track a button click event
1649
1873
  * @param event The button click event
1874
+ * @param adapterParams Optional adapter-specific parameters
1650
1875
  */
1651
- trackButtonClick(event) {
1652
- this.sdk?.track_event(EventNames.BUTTON_CLICKED, {
1876
+ trackButtonClick(event, adapterParams) {
1877
+ const eventName = this.getEventName(
1878
+ adapterParams,
1879
+ EventNames.BUTTON_CLICKED
1880
+ );
1881
+ const baseEventData = {
1653
1882
  button_id: event.buttonId,
1654
1883
  button_text: event.buttonText,
1655
1884
  location: event.location
1656
- });
1885
+ };
1886
+ const enhancedEventData = this.mergeEventData(baseEventData, adapterParams);
1887
+ this.sdk?.track_event(eventName, enhancedEventData);
1657
1888
  }
1658
1889
  /**
1659
1890
  * Track a form submission event
1660
1891
  * @param event The form submission event
1892
+ * @param adapterParams Optional adapter-specific parameters
1661
1893
  */
1662
- trackFormSubmission(event) {
1663
- this.sdk?.track_event(EventNames.FORM_SUBMITTED, {
1894
+ trackFormSubmission(event, adapterParams) {
1895
+ const eventName = this.getEventName(
1896
+ adapterParams,
1897
+ EventNames.FORM_SUBMITTED
1898
+ );
1899
+ const baseEventData = {
1664
1900
  form_id: event.formId,
1665
1901
  form_name: event.formName,
1666
1902
  success: event.success
1667
- });
1903
+ };
1904
+ const enhancedEventData = this.mergeEventData(baseEventData, adapterParams);
1905
+ this.sdk?.track_event(eventName, enhancedEventData);
1668
1906
  }
1669
1907
  /**
1670
1908
  * Track a product view event
1671
1909
  * @param event The product view event
1910
+ * @param adapterParams Optional adapter-specific parameters
1672
1911
  */
1673
- trackProductView(event) {
1674
- this.sdk?.track_event(EventNames.PRODUCT_VIEWED, {
1912
+ trackProductView(event, adapterParams) {
1913
+ const eventName = this.getEventName(
1914
+ adapterParams,
1915
+ EventNames.PRODUCT_VIEWED
1916
+ );
1917
+ const baseEventData = {
1675
1918
  product_id: event.productId,
1676
1919
  product_name: event.productName,
1677
1920
  price: event.price,
1678
1921
  currency: event.currency || DEFAULT_CURRENCY,
1679
1922
  category: event.category
1680
- });
1923
+ };
1924
+ const enhancedEventData = this.mergeEventData(baseEventData, adapterParams);
1925
+ this.sdk?.track_event(eventName, enhancedEventData);
1681
1926
  }
1682
1927
  /**
1683
1928
  * Track an add to cart event
1684
1929
  * @param event The add to cart event
1930
+ * @param adapterParams Optional adapter-specific parameters
1685
1931
  */
1686
- trackAddToCart(event) {
1932
+ trackAddToCart(event, adapterParams) {
1687
1933
  const quantity = event.quantity ?? 1;
1688
- this.sdk?.track_event(EventNames.ADDED_TO_CART, {
1934
+ const eventName = this.getEventName(
1935
+ adapterParams,
1936
+ EventNames.ADDED_TO_CART
1937
+ );
1938
+ const baseEventData = {
1689
1939
  product_id: event.productId,
1690
1940
  product_name: event.productName,
1691
1941
  price: event.price,
@@ -1693,14 +1943,21 @@ var MoengageAdapter = class extends BaseAdapter {
1693
1943
  quantity,
1694
1944
  variant: event.variant,
1695
1945
  total_value: event.price * quantity
1696
- });
1946
+ };
1947
+ const enhancedEventData = this.mergeEventData(baseEventData, adapterParams);
1948
+ this.sdk?.track_event(eventName, enhancedEventData);
1697
1949
  }
1698
1950
  /**
1699
1951
  * Track a remove from cart event
1700
1952
  * @param event The remove from cart event
1953
+ * @param adapterParams Optional adapter-specific parameters
1701
1954
  */
1702
- trackRemoveFromCart(event) {
1703
- this.sdk?.track_event(EventNames.REMOVED_FROM_CART, {
1955
+ trackRemoveFromCart(event, adapterParams) {
1956
+ const eventName = this.getEventName(
1957
+ adapterParams,
1958
+ EventNames.REMOVED_FROM_CART
1959
+ );
1960
+ const baseEventData = {
1704
1961
  product_id: event.productId,
1705
1962
  product_name: event.productName,
1706
1963
  price: event.price,
@@ -1708,14 +1965,21 @@ var MoengageAdapter = class extends BaseAdapter {
1708
1965
  quantity: event.quantity,
1709
1966
  variant: event.variant,
1710
1967
  total_value: event.price * event.quantity
1711
- });
1968
+ };
1969
+ const enhancedEventData = this.mergeEventData(baseEventData, adapterParams);
1970
+ this.sdk?.track_event(eventName, enhancedEventData);
1712
1971
  }
1713
1972
  /**
1714
1973
  * Track a checkout started event
1715
1974
  * @param event The checkout started event
1975
+ * @param adapterParams Optional adapter-specific parameters
1716
1976
  */
1717
- trackCheckoutStarted(event) {
1718
- this.sdk?.track_event(EventNames.CHECKOUT_STARTED, {
1977
+ trackCheckoutStarted(event, adapterParams) {
1978
+ const eventName = this.getEventName(
1979
+ adapterParams,
1980
+ EventNames.CHECKOUT_STARTED
1981
+ );
1982
+ const baseEventData = {
1719
1983
  cart_value: event.cartValue,
1720
1984
  currency: event.currency || DEFAULT_CURRENCY,
1721
1985
  item_count: event.itemCount,
@@ -1726,14 +1990,21 @@ var MoengageAdapter = class extends BaseAdapter {
1726
1990
  quantity: item.quantity,
1727
1991
  variant: item.variant
1728
1992
  }))
1729
- });
1993
+ };
1994
+ const enhancedEventData = this.mergeEventData(baseEventData, adapterParams);
1995
+ this.sdk?.track_event(eventName, enhancedEventData);
1730
1996
  }
1731
1997
  /**
1732
1998
  * Track a checkout completed event
1733
1999
  * @param event The checkout completed event
2000
+ * @param adapterParams Optional adapter-specific parameters
1734
2001
  */
1735
- trackCheckoutCompleted(event) {
1736
- this.sdk?.track_event(EventNames.PURCHASE_COMPLETED, {
2002
+ trackCheckoutCompleted(event, adapterParams) {
2003
+ const eventName = this.getEventName(
2004
+ adapterParams,
2005
+ EventNames.PURCHASE_COMPLETED
2006
+ );
2007
+ const baseEventData = {
1737
2008
  order_id: event.orderId,
1738
2009
  cart_value: event.cartValue,
1739
2010
  currency: event.currency || DEFAULT_CURRENCY,
@@ -1745,28 +2016,41 @@ var MoengageAdapter = class extends BaseAdapter {
1745
2016
  quantity: item.quantity,
1746
2017
  variant: item.variant
1747
2018
  }))
1748
- });
2019
+ };
2020
+ const enhancedEventData = this.mergeEventData(baseEventData, adapterParams);
2021
+ this.sdk?.track_event(eventName, enhancedEventData);
1749
2022
  }
1750
2023
  /**
1751
2024
  * Track a search event
1752
2025
  * @param event The search event
2026
+ * @param adapterParams Optional adapter-specific parameters
1753
2027
  */
1754
- trackSearch(event) {
1755
- this.sdk?.track_event(EventNames.SEARCH, {
2028
+ trackSearch(event, adapterParams) {
2029
+ const eventName = this.getEventName(adapterParams, EventNames.SEARCH);
2030
+ const baseEventData = {
1756
2031
  search_term: event.searchTerm,
1757
2032
  results_count: event.resultsCount
1758
- });
2033
+ };
2034
+ const enhancedEventData = this.mergeEventData(baseEventData, adapterParams);
2035
+ this.sdk?.track_event(eventName, enhancedEventData);
1759
2036
  }
1760
2037
  /**
1761
2038
  * Track a user signup event
1762
2039
  * @param event The user signup event
2040
+ * @param adapterParams Optional adapter-specific parameters
1763
2041
  */
1764
- trackUserSignup(event) {
1765
- this.sdk?.track_event(EventNames.USER_SIGNED_UP, {
2042
+ trackUserSignup(event, adapterParams) {
2043
+ const eventName = this.getEventName(
2044
+ adapterParams,
2045
+ EventNames.USER_SIGNED_UP
2046
+ );
2047
+ const baseEventData = {
1766
2048
  user_id: event.userId,
1767
2049
  method: event.method,
1768
2050
  success: event.success
1769
- });
2051
+ };
2052
+ const enhancedEventData = this.mergeEventData(baseEventData, adapterParams);
2053
+ this.sdk?.track_event(eventName, enhancedEventData);
1770
2054
  if (event.userId && this.getConfig("enableUserIdentification", true)) {
1771
2055
  this.sdk?.add_unique_user_id(event.userId);
1772
2056
  }
@@ -1774,13 +2058,20 @@ var MoengageAdapter = class extends BaseAdapter {
1774
2058
  /**
1775
2059
  * Track a user login event
1776
2060
  * @param event The user login event
2061
+ * @param adapterParams Optional adapter-specific parameters
1777
2062
  */
1778
- trackUserLogin(event) {
1779
- this.sdk?.track_event(EventNames.USER_LOGGED_IN, {
2063
+ trackUserLogin(event, adapterParams) {
2064
+ const eventName = this.getEventName(
2065
+ adapterParams,
2066
+ EventNames.USER_LOGGED_IN
2067
+ );
2068
+ const baseEventData = {
1780
2069
  user_id: event.userId,
1781
2070
  method: event.method,
1782
2071
  success: event.success
1783
- });
2072
+ };
2073
+ const enhancedEventData = this.mergeEventData(baseEventData, adapterParams);
2074
+ this.sdk?.track_event(eventName, enhancedEventData);
1784
2075
  if (event.userId && this.getConfig("enableUserIdentification", true)) {
1785
2076
  this.sdk?.add_unique_user_id(event.userId);
1786
2077
  }
@@ -1788,9 +2079,13 @@ var MoengageAdapter = class extends BaseAdapter {
1788
2079
  /**
1789
2080
  * Track a custom event
1790
2081
  * @param event The custom event
2082
+ * @param adapterParams Optional adapter-specific parameters
1791
2083
  */
1792
- trackCustomEvent(event) {
1793
- this.sdk?.track_event(event.name, event.properties);
2084
+ trackCustomEvent(event, adapterParams) {
2085
+ const eventName = this.getEventName(adapterParams, event.name);
2086
+ const baseEventData = event.properties || {};
2087
+ const enhancedEventData = this.mergeEventData(baseEventData, adapterParams);
2088
+ this.sdk?.track_event(eventName, enhancedEventData);
1794
2089
  }
1795
2090
  /**
1796
2091
  * Convert an event to MoenGage parameters
@@ -1877,8 +2172,9 @@ var PostHogAdapter = class extends BaseAdapter {
1877
2172
  /**
1878
2173
  * Track an event with PostHog
1879
2174
  * @param event The event to track
2175
+ * @param adapterParams Optional adapter-specific parameters
1880
2176
  */
1881
- async trackEvent(event) {
2177
+ async trackEvent(event, adapterParams) {
1882
2178
  if (!this.initialized || typeof window === "undefined" || !window.posthog) {
1883
2179
  this.logger.warn(
1884
2180
  "Cannot track event, adapter not initialized or posthog not available",
@@ -1894,74 +2190,81 @@ var PostHogAdapter = class extends BaseAdapter {
1894
2190
  this.logger.debug("Tracking event", { eventType: event.type });
1895
2191
  switch (event.type) {
1896
2192
  case "page_view" /* PAGE_VIEW */:
1897
- this.trackPageView(event);
2193
+ this.trackPageView(event, adapterParams);
1898
2194
  break;
1899
2195
  case "product_view" /* PRODUCT_VIEW */:
1900
- this.trackProductView(event);
2196
+ this.trackProductView(event, adapterParams);
1901
2197
  break;
1902
2198
  case "add_to_cart" /* ADD_TO_CART */:
1903
- this.trackAddToCart(event);
2199
+ this.trackAddToCart(event, adapterParams);
1904
2200
  break;
1905
2201
  case "checkout_started" /* CHECKOUT_STARTED */:
1906
- this.trackCheckoutStarted(event);
2202
+ this.trackCheckoutStarted(event, adapterParams);
1907
2203
  break;
1908
2204
  case "checkout_completed" /* CHECKOUT_COMPLETED */:
1909
- this.trackCheckoutCompleted(event);
2205
+ this.trackCheckoutCompleted(event, adapterParams);
1910
2206
  break;
1911
2207
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
1912
- this.trackAddPaymentInfo(event);
2208
+ this.trackAddPaymentInfo(event, adapterParams);
1913
2209
  break;
1914
2210
  case "search" /* SEARCH */:
1915
- this.trackSearch(event);
2211
+ this.trackSearch(event, adapterParams);
1916
2212
  break;
1917
2213
  default:
1918
- const params = this.eventToParams(event);
1919
- window.posthog?.capture(
1920
- event.type,
1921
- this.enhanceWithAffiliateParams(params)
2214
+ const eventName = this.getEventName(adapterParams, event.type);
2215
+ const baseParams = this.eventToParams(event);
2216
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2217
+ const enhancedParams = this.mergeEventData(
2218
+ affiliateParams,
2219
+ adapterParams
1922
2220
  );
2221
+ window.posthog?.capture(eventName, enhancedParams);
1923
2222
  break;
1924
2223
  }
1925
2224
  }
1926
2225
  /**
1927
2226
  * Track a page view event
1928
2227
  * @param event The page view event
2228
+ * @param adapterParams Optional adapter-specific parameters
1929
2229
  */
1930
- trackPageView(event) {
1931
- const params = {
2230
+ trackPageView(event, adapterParams) {
2231
+ const eventName = this.getEventName(adapterParams, "$pageview");
2232
+ const baseParams = {
1932
2233
  path: event.path,
1933
2234
  title: event.title,
1934
2235
  referrer: event.referrer
1935
2236
  };
1936
- window.posthog?.capture(
1937
- "$pageview",
1938
- this.enhanceWithAffiliateParams(params)
1939
- );
2237
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2238
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
2239
+ window.posthog?.capture(eventName, enhancedParams);
1940
2240
  }
1941
2241
  /**
1942
2242
  * Track a product view event
1943
2243
  * @param event The product view event
2244
+ * @param adapterParams Optional adapter-specific parameters
1944
2245
  */
1945
- trackProductView(event) {
1946
- const params = {
2246
+ trackProductView(event, adapterParams) {
2247
+ const eventName = this.getEventName(adapterParams, "product_viewed");
2248
+ const baseParams = {
1947
2249
  product_id: event.productId,
1948
2250
  product_name: event.productName,
1949
2251
  category: event.category,
1950
2252
  price: event.price,
1951
2253
  currency: event.currency || "INR"
1952
2254
  };
1953
- window.posthog?.capture(
1954
- "product_viewed",
1955
- this.enhanceWithAffiliateParams(params)
1956
- );
2255
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2256
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
2257
+ window.posthog?.capture(eventName, enhancedParams);
1957
2258
  }
1958
2259
  /**
1959
2260
  * Track an add to cart event
1960
2261
  * @param event The add to cart event
2262
+ * @param adapterParams Optional adapter-specific parameters
1961
2263
  */
1962
- trackAddToCart(event) {
2264
+ trackAddToCart(event, adapterParams) {
1963
2265
  this.logger.debug("Handling ADD_TO_CART event", { event });
1964
- const params = {
2266
+ const eventName = this.getEventName(adapterParams, "add_to_cart");
2267
+ const baseParams = {
1965
2268
  product_id: event.productId,
1966
2269
  product_name: event.productName,
1967
2270
  price: event.price,
@@ -1969,23 +2272,27 @@ var PostHogAdapter = class extends BaseAdapter {
1969
2272
  quantity: event.quantity,
1970
2273
  variant: event.variant
1971
2274
  };
1972
- this.logger.debug("Sending to PostHog with params", { params });
2275
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2276
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
2277
+ this.logger.debug("Sending to PostHog with params", {
2278
+ eventName,
2279
+ params: enhancedParams
2280
+ });
1973
2281
  if (!window.posthog) {
1974
2282
  this.logger.error("window.posthog is not available");
1975
2283
  return;
1976
2284
  }
1977
- window.posthog.capture(
1978
- "add_to_cart",
1979
- this.enhanceWithAffiliateParams(params)
1980
- );
2285
+ window.posthog.capture(eventName, enhancedParams);
1981
2286
  this.logger.debug("Event sent to PostHog successfully");
1982
2287
  }
1983
2288
  /**
1984
2289
  * Track a checkout started event
1985
2290
  * @param event The checkout started event
2291
+ * @param adapterParams Optional adapter-specific parameters
1986
2292
  */
1987
- trackCheckoutStarted(event) {
1988
- const params = {
2293
+ trackCheckoutStarted(event, adapterParams) {
2294
+ const eventName = this.getEventName(adapterParams, "checkout_started");
2295
+ const baseParams = {
1989
2296
  cart_value: event.cartValue,
1990
2297
  currency: event.currency || "INR",
1991
2298
  item_count: event.itemCount,
@@ -1997,17 +2304,18 @@ var PostHogAdapter = class extends BaseAdapter {
1997
2304
  variant: item.variant
1998
2305
  }))
1999
2306
  };
2000
- window.posthog?.capture(
2001
- "checkout_started",
2002
- this.enhanceWithAffiliateParams(params)
2003
- );
2307
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2308
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
2309
+ window.posthog?.capture(eventName, enhancedParams);
2004
2310
  }
2005
2311
  /**
2006
2312
  * Track a checkout completed event
2007
2313
  * @param event The checkout completed event
2314
+ * @param adapterParams Optional adapter-specific parameters
2008
2315
  */
2009
- trackCheckoutCompleted(event) {
2010
- const params = {
2316
+ trackCheckoutCompleted(event, adapterParams) {
2317
+ const eventName = this.getEventName(adapterParams, "purchase");
2318
+ const baseParams = {
2011
2319
  order_id: event.orderId,
2012
2320
  cart_value: event.cartValue,
2013
2321
  currency: event.currency || "INR",
@@ -2020,29 +2328,34 @@ var PostHogAdapter = class extends BaseAdapter {
2020
2328
  variant: item.variant
2021
2329
  }))
2022
2330
  };
2023
- window.posthog?.capture(
2024
- "purchase",
2025
- this.enhanceWithAffiliateParams(params)
2026
- );
2331
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2332
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
2333
+ window.posthog?.capture(eventName, enhancedParams);
2027
2334
  }
2028
2335
  /**
2029
2336
  * Track a search event
2030
2337
  * @param event The search event
2338
+ * @param adapterParams Optional adapter-specific parameters
2031
2339
  */
2032
- trackSearch(event) {
2033
- const params = {
2340
+ trackSearch(event, adapterParams) {
2341
+ const eventName = this.getEventName(adapterParams, "search");
2342
+ const baseParams = {
2034
2343
  search_term: event.searchTerm,
2035
2344
  results_count: event.resultsCount,
2036
2345
  content_ids: event.content_ids
2037
2346
  };
2038
- window.posthog?.capture("search", this.enhanceWithAffiliateParams(params));
2347
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2348
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
2349
+ window.posthog?.capture(eventName, enhancedParams);
2039
2350
  }
2040
2351
  /**
2041
2352
  * Track an add payment info event
2042
2353
  * @param event The add payment info event
2354
+ * @param adapterParams Optional adapter-specific parameters
2043
2355
  */
2044
- trackAddPaymentInfo(event) {
2045
- const params = {
2356
+ trackAddPaymentInfo(event, adapterParams) {
2357
+ const eventName = this.getEventName(adapterParams, "add_payment_info");
2358
+ const baseParams = {
2046
2359
  cart_value: event.cartValue,
2047
2360
  currency: event.currency || "INR",
2048
2361
  payment_type: event.paymentType,
@@ -2055,10 +2368,9 @@ var PostHogAdapter = class extends BaseAdapter {
2055
2368
  variant: item.variant
2056
2369
  }))
2057
2370
  };
2058
- window.posthog?.capture(
2059
- "add_payment_info",
2060
- this.enhanceWithAffiliateParams(params)
2061
- );
2371
+ const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
2372
+ const enhancedParams = this.mergeEventData(affiliateParams, adapterParams);
2373
+ window.posthog?.capture(eventName, enhancedParams);
2062
2374
  }
2063
2375
  /**
2064
2376
  * Convert an event to PostHog parameters
@@ -2121,7 +2433,6 @@ async function initTracking(config) {
2121
2433
  DEFAULT_CURRENCY,
2122
2434
  EventNames,
2123
2435
  EventType,
2124
- HARDCODED_HANDLE,
2125
2436
  eventPublisher,
2126
2437
  eventSubscriber,
2127
2438
  initTracking,