shopkit-analytics 1.0.27 → 1.1.0

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 (48) hide show
  1. package/README.md +69 -6
  2. package/dist/adapters/index.d.mts +1 -1
  3. package/dist/adapters/index.d.ts +1 -1
  4. package/dist/adapters/index.js +42 -285
  5. package/dist/adapters/index.js.map +1 -1
  6. package/dist/adapters/index.mjs +3 -5
  7. package/dist/affiliate/index.d.mts +2 -2
  8. package/dist/affiliate/index.d.ts +2 -2
  9. package/dist/{affiliate-tracker-BgHwibPv.d.mts → affiliate-tracker-B9nV3E9y.d.mts} +1 -1
  10. package/dist/{affiliate-tracker-BgHwibPv.d.ts → affiliate-tracker-B9nV3E9y.d.ts} +1 -1
  11. package/dist/{chunk-KM7BFXAJ.mjs → chunk-FKXTDMY6.mjs} +11 -8
  12. package/dist/chunk-FKXTDMY6.mjs.map +1 -0
  13. package/dist/{chunk-YLHB4WX7.mjs → chunk-FXJKI3KV.mjs} +1 -3
  14. package/dist/chunk-FXJKI3KV.mjs.map +1 -0
  15. package/dist/{chunk-NYLN6L75.mjs → chunk-JGMSIY6U.mjs} +39 -281
  16. package/dist/chunk-JGMSIY6U.mjs.map +1 -0
  17. package/dist/{chunk-2YXPYXKI.mjs → chunk-UFDN3A6M.mjs} +6 -6
  18. package/dist/chunk-UFDN3A6M.mjs.map +1 -0
  19. package/dist/events/index.d.mts +2 -1
  20. package/dist/events/index.d.ts +2 -1
  21. package/dist/events/index.js +115 -112
  22. package/dist/events/index.js.map +1 -1
  23. package/dist/events/index.mjs +4 -4
  24. package/dist/{index-BPSePEZq.d.mts → index-BgLdfy-M.d.mts} +18 -54
  25. package/dist/{index-CvfegLNy.d.ts → index-C3YOamdo.d.ts} +18 -54
  26. package/dist/index.d.mts +191 -7
  27. package/dist/index.d.ts +191 -7
  28. package/dist/index.js +372 -300
  29. package/dist/index.js.map +1 -1
  30. package/dist/index.mjs +323 -14
  31. package/dist/index.mjs.map +1 -1
  32. package/dist/types.d.mts +11 -47
  33. package/dist/types.d.ts +11 -47
  34. package/dist/types.js +0 -2
  35. package/dist/types.js.map +1 -1
  36. package/dist/types.mjs +1 -1
  37. package/dist/utils/index.js +5 -5
  38. package/dist/utils/index.js.map +1 -1
  39. package/dist/utils/index.mjs +1 -1
  40. package/package.json +9 -2
  41. package/templates/nextjs/api-events-multi-route.ts +224 -223
  42. package/templates/nextjs/api-events-route.ts +87 -110
  43. package/templates/nextjs/pages-api-events-multi.ts +231 -224
  44. package/templates/nextjs/pages-api-events.ts +96 -114
  45. package/dist/chunk-2YXPYXKI.mjs.map +0 -1
  46. package/dist/chunk-KM7BFXAJ.mjs.map +0 -1
  47. package/dist/chunk-NYLN6L75.mjs.map +0 -1
  48. package/dist/chunk-YLHB4WX7.mjs.map +0 -1
package/README.md CHANGED
@@ -85,10 +85,8 @@ The following table shows which events are supported by each analytics platform:
85
85
  | **Search** | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
86
86
  | **View Search Results** | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
87
87
  | **Cart Viewed** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
88
- | **Checkout Started** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
89
88
  | **Initiate Checkout** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
90
89
  | **Add Payment Info** | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ |
91
- | **Checkout Completed** | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ |
92
90
  | **Purchase** | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
93
91
  | **User Signup** | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
94
92
  | **User Login** | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
@@ -155,10 +153,8 @@ EventType.REMOVE_FROM_CART // Remove from cart
155
153
  EventType.CART_VIEWED // Cart page view
156
154
 
157
155
  // Checkout flow
158
- EventType.CHECKOUT_STARTED // Checkout initiation
159
156
  EventType.INITIATE_CHECKOUT // Begin checkout (GA4)
160
157
  EventType.ADD_PAYMENT_INFO // Payment info added
161
- EventType.CHECKOUT_COMPLETED // Checkout completion
162
158
  EventType.PURCHASE // Purchase completed
163
159
 
164
160
  // Discovery
@@ -220,6 +216,7 @@ EventType.SPECIFIC // Specific event with predefined structure
220
216
  googleAnalytics: {
221
217
  measurementId: "G-XXXXXXXXXX",
222
218
  enableDebugLogs: true,
219
+ gokwikEnabled: false, // Skip checkout events when GoKwik is handling them
223
220
  customDimensions: {
224
221
  user_type: "premium",
225
222
  },
@@ -228,6 +225,26 @@ EventType.SPECIFIC // Specific event with predefined structure
228
225
  />
229
226
  ```
230
227
 
228
+ #### GoKwik Conflict Prevention
229
+
230
+ When using GoKwik checkout alongside Google Analytics, you can prevent duplicate event tracking by enabling the `gokwikEnabled` flag:
231
+
232
+ ```tsx
233
+ <ShopkitAnalytics
234
+ config={{
235
+ googleAnalytics: {
236
+ measurementId: "G-XXXXXXXXXX",
237
+ gokwikEnabled: true, // Prevents duplicate tracking of checkout events
238
+ },
239
+ }}
240
+ />
241
+ ```
242
+
243
+ **Events skipped when `gokwikEnabled: true`:**
244
+ - `PURCHASE` - Purchase completion
245
+
246
+ This prevents duplicate tracking since GoKwik already sends these events to Google Analytics and Meta when enabled.
247
+
231
248
  ### Facebook Pixel (Single)
232
249
 
233
250
  ```tsx
@@ -236,12 +253,33 @@ EventType.SPECIFIC // Specific event with predefined structure
236
253
  facebookPixel: {
237
254
  pixelId: "123456789",
238
255
  enableCAPI: true, // Server-side tracking (default: true)
256
+ gokwikEnabled: false, // Skip checkout events when GoKwik is handling them
239
257
  enableAdvancedMatching: true,
240
258
  },
241
259
  }}
242
260
  />
243
261
  ```
244
262
 
263
+ #### GoKwik Conflict Prevention
264
+
265
+ When using GoKwik checkout alongside Facebook Pixel, you can prevent duplicate event tracking by enabling the `gokwikEnabled` flag:
266
+
267
+ ```tsx
268
+ <ShopkitAnalytics
269
+ config={{
270
+ facebookPixel: {
271
+ pixelId: "123456789",
272
+ gokwikEnabled: true, // Prevents duplicate tracking of checkout events
273
+ },
274
+ }}
275
+ />
276
+ ```
277
+
278
+ **Events skipped when `gokwikEnabled: true`:**
279
+ - `PURCHASE` - Purchase completion
280
+
281
+ This prevents duplicate tracking since GoKwik already sends these events to Meta and Google Analytics when enabled.
282
+
245
283
  **Environment Variables:**
246
284
  ```bash
247
285
  FACEBOOK_CAPI_ACCESS_TOKEN="your_access_token"
@@ -260,12 +298,36 @@ NEXT_PUBLIC_PIXEL_ID="123456789"
260
298
  { pixelId: "555666777", name: "Retargeting", enableCAPI: false },
261
299
  ],
262
300
  enableCAPI: true,
301
+ gokwikEnabled: false, // Skip checkout events when GoKwik is handling them
263
302
  capiEndpoint: "/api/events/multi",
264
303
  },
265
304
  }}
266
305
  />
267
306
  ```
268
307
 
308
+ #### GoKwik Conflict Prevention
309
+
310
+ When using GoKwik checkout alongside Facebook Multi-Pixel, you can prevent duplicate event tracking by enabling the `gokwikEnabled` flag:
311
+
312
+ ```tsx
313
+ <ShopkitAnalytics
314
+ config={{
315
+ facebookMultiPixel: {
316
+ pixels: [
317
+ { pixelId: "123456789", name: "Primary", enableCAPI: true },
318
+ { pixelId: "987654321", name: "Secondary", enableCAPI: true },
319
+ ],
320
+ gokwikEnabled: true, // Prevents duplicate tracking across all pixels
321
+ },
322
+ }}
323
+ />
324
+ ```
325
+
326
+ **Events skipped when `gokwikEnabled: true`:**
327
+ - `PURCHASE` - Purchase completion
328
+
329
+ This prevents duplicate tracking across all configured pixels since GoKwik already sends these events to Meta and Google Analytics when enabled.
330
+
269
331
  **Environment Variables:**
270
332
  ```bash
271
333
  NEXT_PUBLIC_MULTI_PIXEL_IDS="123456789,987654321,555666777"
@@ -307,6 +369,7 @@ FACEBOOK_MULTI_CAPI_ACCESS_TOKENS="token1,token2,token3"
307
369
  shopify: {
308
370
  shopId: "your-shop-id",
309
371
  domain: "your-shop.myshopify.com",
372
+ merchantName: "your-merchant-name",
310
373
  currency: "USD",
311
374
  },
312
375
  }}
@@ -636,9 +699,9 @@ publishEvent({
636
699
  variant: "Black",
637
700
  });
638
701
 
639
- // Checkout started
702
+ // Begin checkout
640
703
  publishEvent({
641
- type: EventType.CHECKOUT_STARTED,
704
+ type: EventType.INITIATE_CHECKOUT,
642
705
  cartValue: 199.99,
643
706
  currency: "USD",
644
707
  itemCount: 1,
@@ -1,4 +1,4 @@
1
- export { B as BaseAdapter, f as GoogleAdapter, G as GoogleAdapterConfig, k as KwikCheckoutAdapter, c as KwikCheckoutConfig, j as KwikPassAdapter, K as KwikPassConfig, g as MoengageAdapter, a as MoengageAdapterConfig, e as MultiPixelAdapter, M as MultiPixelAdapterConfig, d as PixelAdapter, P as PixelAdapterConfig, h as PostHogAdapter, b as PostHogAdapterConfig, i as ShopifyAdapter, S as ShopifyAdapterConfig } from '../index-BPSePEZq.mjs';
1
+ export { B as BaseAdapter, d as GoogleAdapter, G as GoogleAdapterConfig, i as KwikCheckoutAdapter, b as KwikCheckoutConfig, h as KwikPassAdapter, K as KwikPassConfig, e as MoengageAdapter, a as MoengageAdapterConfig, c as MultiPixelAdapter, M as MultiPixelAdapterConfig, f as PostHogAdapter, P as PostHogAdapterConfig, g as ShopifyAdapter, S as ShopifyAdapterConfig } from '../index-BgLdfy-M.mjs';
2
2
  import '../types.mjs';
3
3
  import '../subscriber-90r_t90W.mjs';
4
4
  import '../types-BBZbvq9-.mjs';
@@ -1,4 +1,4 @@
1
- export { B as BaseAdapter, f as GoogleAdapter, G as GoogleAdapterConfig, k as KwikCheckoutAdapter, c as KwikCheckoutConfig, j as KwikPassAdapter, K as KwikPassConfig, g as MoengageAdapter, a as MoengageAdapterConfig, e as MultiPixelAdapter, M as MultiPixelAdapterConfig, d as PixelAdapter, P as PixelAdapterConfig, h as PostHogAdapter, b as PostHogAdapterConfig, i as ShopifyAdapter, S as ShopifyAdapterConfig } from '../index-CvfegLNy.js';
1
+ export { B as BaseAdapter, d as GoogleAdapter, G as GoogleAdapterConfig, i as KwikCheckoutAdapter, b as KwikCheckoutConfig, h as KwikPassAdapter, K as KwikPassConfig, e as MoengageAdapter, a as MoengageAdapterConfig, c as MultiPixelAdapter, M as MultiPixelAdapterConfig, f as PostHogAdapter, P as PostHogAdapterConfig, g as ShopifyAdapter, S as ShopifyAdapterConfig } from '../index-C3YOamdo.js';
2
2
  import '../types.js';
3
3
  import '../subscriber-AtiHiP3i.js';
4
4
  import '../types-BBZbvq9-.js';
@@ -36,7 +36,6 @@ __export(adapters_exports, {
36
36
  KwikPassAdapter: () => KwikPassAdapter,
37
37
  MoengageAdapter: () => MoengageAdapter,
38
38
  MultiPixelAdapter: () => MultiPixelAdapter,
39
- PixelAdapter: () => PixelAdapter,
40
39
  PostHogAdapter: () => PostHogAdapter,
41
40
  ShopifyAdapter: () => ShopifyAdapter
42
41
  });
@@ -366,11 +365,6 @@ function getFacebookClickId() {
366
365
  if (typeof window === "undefined") {
367
366
  return void 0;
368
367
  }
369
- const urlParams = new URLSearchParams(window.location.search);
370
- const fbclid = urlParams.get("fbclid");
371
- if (fbclid) {
372
- return `fb.1.${Date.now()}.${fbclid}`;
373
- }
374
368
  const cookies = document.cookie.split(";");
375
369
  for (const cookie of cookies) {
376
370
  const [name, value] = cookie.trim().split("=");
@@ -378,6 +372,11 @@ function getFacebookClickId() {
378
372
  return value;
379
373
  }
380
374
  }
375
+ const urlParams = new URLSearchParams(window.location.search);
376
+ const fbclid = urlParams.get("fbclid");
377
+ if (fbclid) {
378
+ return fbclid;
379
+ }
381
380
  return void 0;
382
381
  }
383
382
  function getFacebookBrowserId() {
@@ -394,207 +393,12 @@ function getFacebookBrowserId() {
394
393
  return void 0;
395
394
  }
396
395
 
397
- // src/adapters/pixel-adapter.ts
398
- var PixelAdapter = class extends BaseAdapter {
399
- constructor(config) {
400
- super(config);
401
- this.name = "FacebookPixel";
402
- this.initializeLogger();
403
- }
404
- /**
405
- * Initialize the Facebook Pixel
406
- */
407
- async initialize() {
408
- if (this.initialized) {
409
- return;
410
- }
411
- if (typeof window === "undefined") {
412
- return;
413
- }
414
- if (!window.fbq) {
415
- this.logger.warn(
416
- "Facebook Pixel fbq not found. Make sure the script is loaded."
417
- );
418
- return;
419
- } else {
420
- const pixelId = this.getConfig("pixelId");
421
- if (!pixelId) {
422
- this.logger.warn("Pixel ID not provided. Skipping fbq init.");
423
- }
424
- }
425
- this.initialized = true;
426
- }
427
- /**
428
- * Track an event with Facebook Pixel
429
- * @param event The event to track
430
- * @param adapterParams Optional adapter-specific parameters
431
- */
432
- async trackEvent(event, adapterParams) {
433
- if (!event.eventId) {
434
- event.eventId = generateEventId(event.type);
435
- }
436
- if (!event.timestamp) {
437
- event.timestamp = Date.now();
438
- }
439
- await this.trackClientSide(event, adapterParams);
440
- if (this.getConfig("enableCAPI", true)) {
441
- await this.trackServerSide(event, adapterParams);
442
- }
443
- }
444
- /**
445
- * Track event on client-side (browser pixel)
446
- */
447
- async trackClientSide(event, adapterParams) {
448
- if (!this.initialized || typeof window === "undefined" || !window.fbq) {
449
- this.logger.warn(
450
- "Cannot track client-side event, adapter not initialized or fbq not available",
451
- {
452
- eventType: event.type
453
- }
454
- );
455
- return;
456
- }
457
- const { eventName, enhancedParams } = this.formatEventPayload(
458
- event,
459
- adapterParams
460
- );
461
- if (!eventName) {
462
- return;
463
- }
464
- if (event.eventId) {
465
- window.fbq?.("track", eventName, enhancedParams, {
466
- eventID: event.eventId
467
- });
468
- } else {
469
- window.fbq?.("track", eventName, enhancedParams);
470
- }
471
- }
472
- /**
473
- * Track event on server-side (CAPI) as backup
474
- */
475
- async trackServerSide(event, adapterParams) {
476
- try {
477
- const { eventName, enhancedParams } = this.formatEventPayload(
478
- event,
479
- adapterParams
480
- );
481
- if (!eventName) {
482
- return;
483
- }
484
- const browserInfo = getBrowserInfo();
485
- const payload = {
486
- eventName,
487
- eventId: event.eventId,
488
- timestamp: event.timestamp,
489
- enhancedParams,
490
- userInfo: browserInfo
491
- };
492
- const response = await fetch("/api/events", {
493
- method: "POST",
494
- headers: {
495
- "Content-Type": "application/json"
496
- },
497
- body: JSON.stringify(payload)
498
- });
499
- if (!response.ok) {
500
- throw new Error(`Server-side tracking failed: ${response.status}`);
501
- }
502
- } catch (error) {
503
- this.logger.error(
504
- `FB Pixel: Server-side tracking failed for event ${event.type}: ${error instanceof Error ? error.message : String(error)}`
505
- );
506
- }
507
- }
508
- /**
509
- * Utility function to format event payload for both client and server-side tracking
510
- */
511
- formatEventPayload(event, adapterParams) {
512
- let baseParams = {};
513
- let eventName = "";
514
- switch (event.type) {
515
- case "page_view" /* PAGE_VIEW */:
516
- const pageViewEvent = event;
517
- eventName = this.getEventName(adapterParams, "PageView");
518
- baseParams = {
519
- // Facebook-compatible parameters
520
- content_name: pageViewEvent.page_title || pageViewEvent.title,
521
- content_category: pageViewEvent.event_category,
522
- // Custom parameters that Facebook will accept in custom_data
523
- page_location: pageViewEvent.page_location || pageViewEvent.path,
524
- page_title: pageViewEvent.page_title || pageViewEvent.title,
525
- page_referrer: pageViewEvent.page_referrer || pageViewEvent.referrer,
526
- page_path: pageViewEvent.page_path || pageViewEvent.path
527
- };
528
- break;
529
- case "view_content" /* VIEW_CONTENT */:
530
- const viewContentEvent = event;
531
- eventName = this.getEventName(adapterParams, "ViewContent");
532
- baseParams = {
533
- content_type: viewContentEvent.content_type || "product",
534
- content_ids: viewContentEvent.content_ids || [],
535
- content_name: viewContentEvent.content_name || "",
536
- content_category: viewContentEvent.content_category || "",
537
- value: viewContentEvent.value || 0,
538
- currency: viewContentEvent.currency || "INR"
539
- };
540
- break;
541
- case "add_to_cart" /* ADD_TO_CART */:
542
- const cartEvent = event;
543
- eventName = this.getEventName(adapterParams, "AddToCart");
544
- baseParams = {
545
- content_type: "product_group",
546
- content_ids: [cartEvent.productId],
547
- content_name: cartEvent.productName,
548
- value: cartEvent.price,
549
- currency: cartEvent.currency || "INR"
550
- };
551
- break;
552
- case "search" /* SEARCH */:
553
- const searchEvent = event;
554
- eventName = this.getEventName(adapterParams, "Search");
555
- baseParams = {
556
- search_string: searchEvent.searchTerm,
557
- content_category: "product",
558
- content_ids: searchEvent.content_ids || []
559
- };
560
- break;
561
- case "initiate_checkout" /* INITIATE_CHECKOUT */:
562
- const checkoutEvent = event;
563
- eventName = this.getEventName(adapterParams, "InitiateCheckout");
564
- baseParams = {
565
- content_type: "product",
566
- currency: checkoutEvent.currency || "INR",
567
- value: checkoutEvent.cartValue,
568
- num_items: checkoutEvent.itemCount || checkoutEvent.items?.length || 0,
569
- contents: checkoutEvent.items?.map((item) => ({
570
- id: item.productId,
571
- quantity: item.quantity || 1,
572
- item_price: item.price
573
- })) || []
574
- };
575
- break;
576
- case "purchase" /* PURCHASE */:
577
- const purchaseEvent = event;
578
- eventName = this.getEventName(adapterParams, "Purchase");
579
- baseParams = {
580
- content_type: purchaseEvent.content_type || "product",
581
- content_ids: purchaseEvent.content_ids || [],
582
- currency: purchaseEvent.currency || "INR",
583
- value: purchaseEvent.value,
584
- num_items: purchaseEvent.num_items || purchaseEvent.contents?.length || 0,
585
- contents: purchaseEvent.contents || []
586
- };
587
- break;
588
- default:
589
- this.logger.warn(`Skipping unknown event type: ${event.type}`);
590
- return { eventName: "", enhancedParams: {} };
591
- }
592
- const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
593
- const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
594
- const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
595
- return { eventName, enhancedParams };
596
- }
597
- };
396
+ // src/adapters/constants.ts
397
+ var SKIP_GOKWIK_EVENT = [
398
+ "initiate_checkout" /* INITIATE_CHECKOUT */,
399
+ "add_payment_info" /* ADD_PAYMENT_INFO */,
400
+ "purchase" /* PURCHASE */
401
+ ];
598
402
 
599
403
  // src/adapters/multi-pixel-adapter.ts
600
404
  var MultiPixelAdapter = class extends BaseAdapter {
@@ -647,10 +451,20 @@ var MultiPixelAdapter = class extends BaseAdapter {
647
451
  }
648
452
  this.initialized = true;
649
453
  }
454
+ shouldSkipEvent(eventType) {
455
+ const gokwikActive = this.getConfig("gokwikEnabled", false);
456
+ if (gokwikActive) {
457
+ return SKIP_GOKWIK_EVENT.includes(eventType);
458
+ }
459
+ return false;
460
+ }
650
461
  /**
651
462
  * Track an event across all configured pixels
652
463
  */
653
464
  async trackEvent(event, adapterParams) {
465
+ if (this.shouldSkipEvent(event.type)) {
466
+ return;
467
+ }
654
468
  if (!event.eventId) {
655
469
  event.eventId = generateEventId(event.type);
656
470
  }
@@ -864,12 +678,22 @@ var GoogleAdapter = class extends BaseAdapter {
864
678
  }
865
679
  this.initialized = true;
866
680
  }
681
+ shouldSkipEvent(eventType) {
682
+ const gokwikActive = this.getConfig("gokwikEnabled", false);
683
+ if (gokwikActive) {
684
+ return SKIP_GOKWIK_EVENT.includes(eventType);
685
+ }
686
+ return false;
687
+ }
867
688
  /**
868
689
  * Track an event with Google Analytics
869
690
  * @param event The event to track
870
691
  * @param adapterParams Optional adapter-specific parameters
871
692
  */
872
693
  async trackEvent(event, adapterParams) {
694
+ if (this.shouldSkipEvent(event.type)) {
695
+ return;
696
+ }
873
697
  if (!event.eventId) {
874
698
  event.eventId = generateEventId(event.type);
875
699
  }
@@ -990,24 +814,6 @@ var GoogleAdapter = class extends BaseAdapter {
990
814
  search_term: viewSearchResultsEvent.search_term
991
815
  };
992
816
  break;
993
- case "checkout_started" /* CHECKOUT_STARTED */:
994
- const checkoutStartedEvent = event;
995
- eventName = this.getEventName(adapterParams, "begin_checkout");
996
- baseParams = {
997
- currency: checkoutStartedEvent.currency || "INR",
998
- value: checkoutStartedEvent.cartValue,
999
- items: checkoutStartedEvent.items?.map((item) => ({
1000
- item_id: item.productId,
1001
- item_name: item.productName,
1002
- price: item.price,
1003
- quantity: item.quantity,
1004
- item_variant: item.variant
1005
- })) || [],
1006
- page_location: typeof window !== "undefined" ? window.location.href : "",
1007
- page_referrer: typeof document !== "undefined" ? document.referrer : "",
1008
- page_title: typeof document !== "undefined" ? document.title : ""
1009
- };
1010
- break;
1011
817
  case "initiate_checkout" /* INITIATE_CHECKOUT */:
1012
818
  const checkoutEvent = event;
1013
819
  eventName = this.getEventName(adapterParams, "begin_checkout");
@@ -1027,7 +833,10 @@ var GoogleAdapter = class extends BaseAdapter {
1027
833
  item_variant: item.item_variant,
1028
834
  price: item.price,
1029
835
  quantity: item.quantity
1030
- })) || []
836
+ })) || [],
837
+ page_location: typeof window !== "undefined" ? window.location.href : "",
838
+ page_referrer: typeof document !== "undefined" ? document.referrer : "",
839
+ page_title: typeof document !== "undefined" ? document.title : ""
1031
840
  };
1032
841
  break;
1033
842
  case "add_payment_info" /* ADD_PAYMENT_INFO */:
@@ -1046,22 +855,6 @@ var GoogleAdapter = class extends BaseAdapter {
1046
855
  })) || []
1047
856
  };
1048
857
  break;
1049
- case "checkout_completed" /* CHECKOUT_COMPLETED */:
1050
- const checkoutCompletedEvent = event;
1051
- eventName = this.getEventName(adapterParams, "purchase");
1052
- baseParams = {
1053
- transaction_id: checkoutCompletedEvent.orderId,
1054
- currency: checkoutCompletedEvent.currency || "INR",
1055
- value: checkoutCompletedEvent.cartValue,
1056
- items: checkoutCompletedEvent.items?.map((item) => ({
1057
- item_id: item.productId,
1058
- item_name: item.productName,
1059
- price: item.price,
1060
- quantity: item.quantity,
1061
- item_variant: item.variant
1062
- })) || []
1063
- };
1064
- break;
1065
858
  case "purchase" /* PURCHASE */:
1066
859
  const purchaseEvent = event;
1067
860
  eventName = this.getEventName(adapterParams, "purchase");
@@ -1120,7 +913,7 @@ var EventNames = {
1120
913
  ADDED_TO_CART: "Added To Cart",
1121
914
  REMOVED_FROM_CART: "Removed From Cart",
1122
915
  // Checkout events
1123
- CHECKOUT_STARTED: "Checkout Started",
916
+ CHECKOUT_INITIATED: "Checkout Started",
1124
917
  PURCHASE_COMPLETED: "Purchase Completed",
1125
918
  // Search events
1126
919
  SEARCH: "Search",
@@ -1281,12 +1074,11 @@ var MoengageAdapter = class extends BaseAdapter {
1281
1074
  total_value: removeCartEvent.price * removeCartEvent.quantity
1282
1075
  };
1283
1076
  break;
1284
- case "checkout_started" /* CHECKOUT_STARTED */:
1285
1077
  case "initiate_checkout" /* INITIATE_CHECKOUT */:
1286
1078
  const checkoutStartedEvent = event;
1287
1079
  eventName = this.getEventName(
1288
1080
  adapterParams,
1289
- EventNames.CHECKOUT_STARTED
1081
+ EventNames.CHECKOUT_INITIATED
1290
1082
  );
1291
1083
  baseParams = {
1292
1084
  cart_value: checkoutStartedEvent.cartValue,
@@ -1301,7 +1093,6 @@ var MoengageAdapter = class extends BaseAdapter {
1301
1093
  })) || []
1302
1094
  };
1303
1095
  break;
1304
- case "checkout_completed" /* CHECKOUT_COMPLETED */:
1305
1096
  case "purchase" /* PURCHASE */:
1306
1097
  const checkoutCompletedEvent = event;
1307
1098
  eventName = this.getEventName(
@@ -1507,25 +1298,6 @@ var PostHogAdapter = class extends BaseAdapter {
1507
1298
  $quantity: cartEvent.quantity
1508
1299
  };
1509
1300
  break;
1510
- case "checkout_started" /* CHECKOUT_STARTED */:
1511
- const checkoutStartedEvent = event;
1512
- eventName = this.getEventName(adapterParams, "checkout_started");
1513
- baseParams = {
1514
- currency: checkoutStartedEvent.currency || "INR",
1515
- value: checkoutStartedEvent.cartValue,
1516
- num_items: checkoutStartedEvent.itemCount || checkoutStartedEvent.items?.length || 0,
1517
- items: checkoutStartedEvent.items?.map((item) => ({
1518
- product_id: item.productId,
1519
- product_name: item.productName,
1520
- price: item.price,
1521
- quantity: item.quantity || 1,
1522
- variant: item.variant
1523
- })) || [],
1524
- // PostHog specific format
1525
- $cart_value: checkoutStartedEvent.cartValue,
1526
- $item_count: checkoutStartedEvent.itemCount || checkoutStartedEvent.items?.length || 0
1527
- };
1528
- break;
1529
1301
  case "initiate_checkout" /* INITIATE_CHECKOUT */:
1530
1302
  const checkoutEvent = event;
1531
1303
  eventName = this.getEventName(adapterParams, "checkout_started");
@@ -1545,7 +1317,7 @@ var PostHogAdapter = class extends BaseAdapter {
1545
1317
  $item_count: checkoutEvent.itemCount || checkoutEvent.items?.length || 0
1546
1318
  };
1547
1319
  break;
1548
- case "checkout_completed" /* CHECKOUT_COMPLETED */:
1320
+ case "purchase" /* PURCHASE */:
1549
1321
  const checkoutCompletedEvent = event;
1550
1322
  eventName = this.getEventName(adapterParams, "purchase");
1551
1323
  baseParams = {
@@ -1567,20 +1339,6 @@ var PostHogAdapter = class extends BaseAdapter {
1567
1339
  $order_items_count: checkoutCompletedEvent.itemCount || checkoutCompletedEvent.items?.length || 0
1568
1340
  };
1569
1341
  break;
1570
- case "purchase" /* PURCHASE */:
1571
- const purchaseEvent = event;
1572
- eventName = this.getEventName(adapterParams, "purchase");
1573
- baseParams = {
1574
- currency: purchaseEvent.currency || "INR",
1575
- value: purchaseEvent.value,
1576
- num_items: purchaseEvent.num_items || purchaseEvent.contents?.length || 0,
1577
- contents: purchaseEvent.contents || [],
1578
- // PostHog specific format
1579
- $order_value: purchaseEvent.value,
1580
- $order_currency: purchaseEvent.currency || "INR",
1581
- $order_items_count: purchaseEvent.num_items || purchaseEvent.contents?.length || 0
1582
- };
1583
- break;
1584
1342
  default:
1585
1343
  this.logger.warn(`Skipping unknown event type: ${event.type}`);
1586
1344
  return { eventName: "", enhancedParams: {} };
@@ -1630,6 +1388,7 @@ var ShopifyAdapter = class extends BaseAdapter {
1630
1388
  this.shopId = config.shopId;
1631
1389
  this.domain = config.domain;
1632
1390
  this.currency = config.currency || DEFAULT_CURRENCY2;
1391
+ this.merchantName = config.merchantName;
1633
1392
  }
1634
1393
  /**
1635
1394
  * Initialize the Shopify Analytics adapter
@@ -1729,7 +1488,6 @@ var ShopifyAdapter = class extends BaseAdapter {
1729
1488
  const addToCartPayload = this.mergeEventData(enhancedEvent, params);
1730
1489
  this.trackAddToCart(addToCartPayload);
1731
1490
  break;
1732
- case "checkout_started" /* CHECKOUT_STARTED */:
1733
1491
  case "initiate_checkout" /* INITIATE_CHECKOUT */:
1734
1492
  const checkoutPayload = this.mergeEventData(
1735
1493
  { ...enhancedEvent, pageType: "checkout" },
@@ -1787,7 +1545,7 @@ var ShopifyAdapter = class extends BaseAdapter {
1787
1545
  }
1788
1546
  try {
1789
1547
  const productGid = this.formatProductGid(event.productId);
1790
- const cartKey = `merchant_${process.env.NEXT_PUBLIC_MERCHANT_NAME}_cartId`;
1548
+ const cartKey = `merchant_${this.merchantName}_cartId`;
1791
1549
  const cartId = localStorage.getItem(cartKey) || "";
1792
1550
  if (!cartId) {
1793
1551
  this.logger.warn("No cart ID found, creating anonymous session");
@@ -2114,7 +1872,7 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
2114
1872
  timestamp: event.timestamp || Date.now()
2115
1873
  };
2116
1874
  break;
2117
- case "checkout_started" /* CHECKOUT_STARTED */:
1875
+ case "initiate_checkout" /* INITIATE_CHECKOUT */:
2118
1876
  eventName = this.getEventName(adapterParams, "checkout_started");
2119
1877
  baseParams = {
2120
1878
  cart_value: event.cartValue,
@@ -2124,7 +1882,7 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
2124
1882
  timestamp: event.timestamp || Date.now()
2125
1883
  };
2126
1884
  break;
2127
- case "checkout_completed" /* CHECKOUT_COMPLETED */:
1885
+ case "purchase" /* PURCHASE */:
2128
1886
  eventName = this.getEventName(adapterParams, "checkout_completed");
2129
1887
  baseParams = {
2130
1888
  order_id: event.orderId,
@@ -2186,7 +1944,6 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
2186
1944
  KwikPassAdapter,
2187
1945
  MoengageAdapter,
2188
1946
  MultiPixelAdapter,
2189
- PixelAdapter,
2190
1947
  PostHogAdapter,
2191
1948
  ShopifyAdapter
2192
1949
  });