shopkit-analytics 1.0.28 → 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.
- package/README.md +1 -0
- package/dist/adapters/index.d.mts +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.js +7 -220
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/index.mjs +2 -4
- package/dist/affiliate/index.d.mts +2 -2
- package/dist/affiliate/index.d.ts +2 -2
- package/dist/{affiliate-tracker-BgHwibPv.d.mts → affiliate-tracker-B9nV3E9y.d.mts} +1 -1
- package/dist/{affiliate-tracker-BgHwibPv.d.ts → affiliate-tracker-B9nV3E9y.d.ts} +1 -1
- package/dist/{chunk-2MGNBM2B.mjs → chunk-FKXTDMY6.mjs} +11 -8
- package/dist/chunk-FKXTDMY6.mjs.map +1 -0
- package/dist/{chunk-ZH2JR3YQ.mjs → chunk-JGMSIY6U.mjs} +4 -216
- package/dist/chunk-JGMSIY6U.mjs.map +1 -0
- package/dist/{chunk-2YXPYXKI.mjs → chunk-UFDN3A6M.mjs} +6 -6
- package/dist/chunk-UFDN3A6M.mjs.map +1 -0
- package/dist/events/index.d.mts +1 -0
- package/dist/events/index.d.ts +1 -0
- package/dist/events/index.js +81 -37
- package/dist/events/index.js.map +1 -1
- package/dist/events/index.mjs +3 -3
- package/dist/{index-CLrdnmbT.d.mts → index-BgLdfy-M.d.mts} +3 -60
- package/dist/{index-Byk6ujDb.d.ts → index-C3YOamdo.d.ts} +3 -60
- package/dist/index.d.mts +190 -6
- package/dist/index.d.ts +190 -6
- package/dist/index.js +337 -233
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +322 -13
- package/dist/index.mjs.map +1 -1
- package/dist/utils/index.js +5 -5
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +1 -1
- package/package.json +9 -2
- package/templates/nextjs/api-events-multi-route.ts +224 -223
- package/templates/nextjs/api-events-route.ts +87 -110
- package/templates/nextjs/pages-api-events-multi.ts +231 -224
- package/templates/nextjs/pages-api-events.ts +96 -114
- package/dist/chunk-2MGNBM2B.mjs.map +0 -1
- package/dist/chunk-2YXPYXKI.mjs.map +0 -1
- package/dist/chunk-ZH2JR3YQ.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { B as BaseAdapter,
|
|
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';
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { B as BaseAdapter,
|
|
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';
|
package/dist/adapters/index.js
CHANGED
|
@@ -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() {
|
|
@@ -401,218 +400,6 @@ var SKIP_GOKWIK_EVENT = [
|
|
|
401
400
|
"purchase" /* PURCHASE */
|
|
402
401
|
];
|
|
403
402
|
|
|
404
|
-
// src/adapters/pixel-adapter.ts
|
|
405
|
-
var PixelAdapter = class extends BaseAdapter {
|
|
406
|
-
constructor(config) {
|
|
407
|
-
super(config);
|
|
408
|
-
this.name = "FacebookPixel";
|
|
409
|
-
this.initializeLogger();
|
|
410
|
-
}
|
|
411
|
-
/**
|
|
412
|
-
* Initialize the Facebook Pixel
|
|
413
|
-
*/
|
|
414
|
-
async initialize() {
|
|
415
|
-
if (this.initialized) {
|
|
416
|
-
return;
|
|
417
|
-
}
|
|
418
|
-
if (typeof window === "undefined") {
|
|
419
|
-
return;
|
|
420
|
-
}
|
|
421
|
-
if (!window.fbq) {
|
|
422
|
-
this.logger.warn(
|
|
423
|
-
"Facebook Pixel fbq not found. Make sure the script is loaded."
|
|
424
|
-
);
|
|
425
|
-
return;
|
|
426
|
-
} else {
|
|
427
|
-
const pixelId = this.getConfig("pixelId");
|
|
428
|
-
if (!pixelId) {
|
|
429
|
-
this.logger.warn("Pixel ID not provided. Skipping fbq init.");
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
this.initialized = true;
|
|
433
|
-
}
|
|
434
|
-
shouldSkipEvent(eventType) {
|
|
435
|
-
const gokwikActive = this.getConfig("gokwikEnabled", false);
|
|
436
|
-
if (gokwikActive) {
|
|
437
|
-
return SKIP_GOKWIK_EVENT.includes(eventType);
|
|
438
|
-
}
|
|
439
|
-
return false;
|
|
440
|
-
}
|
|
441
|
-
/**
|
|
442
|
-
* Track an event with Facebook Pixel
|
|
443
|
-
* @param event The event to track
|
|
444
|
-
* @param adapterParams Optional adapter-specific parameters
|
|
445
|
-
*/
|
|
446
|
-
async trackEvent(event, adapterParams) {
|
|
447
|
-
if (this.shouldSkipEvent(event.type)) {
|
|
448
|
-
return;
|
|
449
|
-
}
|
|
450
|
-
if (!event.eventId) {
|
|
451
|
-
event.eventId = generateEventId(event.type);
|
|
452
|
-
}
|
|
453
|
-
if (!event.timestamp) {
|
|
454
|
-
event.timestamp = Date.now();
|
|
455
|
-
}
|
|
456
|
-
await this.trackClientSide(event, adapterParams);
|
|
457
|
-
if (this.getConfig("enableCAPI", true)) {
|
|
458
|
-
await this.trackServerSide(event, adapterParams);
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
/**
|
|
462
|
-
* Track event on client-side (browser pixel)
|
|
463
|
-
*/
|
|
464
|
-
async trackClientSide(event, adapterParams) {
|
|
465
|
-
if (!this.initialized || typeof window === "undefined" || !window.fbq) {
|
|
466
|
-
this.logger.warn(
|
|
467
|
-
"Cannot track client-side event, adapter not initialized or fbq not available",
|
|
468
|
-
{
|
|
469
|
-
eventType: event.type
|
|
470
|
-
}
|
|
471
|
-
);
|
|
472
|
-
return;
|
|
473
|
-
}
|
|
474
|
-
const { eventName, enhancedParams } = this.formatEventPayload(
|
|
475
|
-
event,
|
|
476
|
-
adapterParams
|
|
477
|
-
);
|
|
478
|
-
if (!eventName) {
|
|
479
|
-
return;
|
|
480
|
-
}
|
|
481
|
-
if (event.eventId) {
|
|
482
|
-
window.fbq?.("track", eventName, enhancedParams, {
|
|
483
|
-
eventID: event.eventId
|
|
484
|
-
});
|
|
485
|
-
} else {
|
|
486
|
-
window.fbq?.("track", eventName, enhancedParams);
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
/**
|
|
490
|
-
* Track event on server-side (CAPI) as backup
|
|
491
|
-
*/
|
|
492
|
-
async trackServerSide(event, adapterParams) {
|
|
493
|
-
try {
|
|
494
|
-
const { eventName, enhancedParams } = this.formatEventPayload(
|
|
495
|
-
event,
|
|
496
|
-
adapterParams
|
|
497
|
-
);
|
|
498
|
-
if (!eventName) {
|
|
499
|
-
return;
|
|
500
|
-
}
|
|
501
|
-
const browserInfo = getBrowserInfo();
|
|
502
|
-
const payload = {
|
|
503
|
-
eventName,
|
|
504
|
-
eventId: event.eventId,
|
|
505
|
-
timestamp: event.timestamp,
|
|
506
|
-
enhancedParams,
|
|
507
|
-
userInfo: browserInfo
|
|
508
|
-
};
|
|
509
|
-
const response = await fetch("/api/events", {
|
|
510
|
-
method: "POST",
|
|
511
|
-
headers: {
|
|
512
|
-
"Content-Type": "application/json"
|
|
513
|
-
},
|
|
514
|
-
body: JSON.stringify(payload)
|
|
515
|
-
});
|
|
516
|
-
if (!response.ok) {
|
|
517
|
-
throw new Error(`Server-side tracking failed: ${response.status}`);
|
|
518
|
-
}
|
|
519
|
-
} catch (error) {
|
|
520
|
-
this.logger.error(
|
|
521
|
-
`FB Pixel: Server-side tracking failed for event ${event.type}: ${error instanceof Error ? error.message : String(error)}`
|
|
522
|
-
);
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
/**
|
|
526
|
-
* Utility function to format event payload for both client and server-side tracking
|
|
527
|
-
*/
|
|
528
|
-
formatEventPayload(event, adapterParams) {
|
|
529
|
-
let baseParams = {};
|
|
530
|
-
let eventName = "";
|
|
531
|
-
switch (event.type) {
|
|
532
|
-
case "page_view" /* PAGE_VIEW */:
|
|
533
|
-
const pageViewEvent = event;
|
|
534
|
-
eventName = this.getEventName(adapterParams, "PageView");
|
|
535
|
-
baseParams = {
|
|
536
|
-
// Facebook-compatible parameters
|
|
537
|
-
content_name: pageViewEvent.page_title || pageViewEvent.title,
|
|
538
|
-
content_category: pageViewEvent.event_category,
|
|
539
|
-
// Custom parameters that Facebook will accept in custom_data
|
|
540
|
-
page_location: pageViewEvent.page_location || pageViewEvent.path,
|
|
541
|
-
page_title: pageViewEvent.page_title || pageViewEvent.title,
|
|
542
|
-
page_referrer: pageViewEvent.page_referrer || pageViewEvent.referrer,
|
|
543
|
-
page_path: pageViewEvent.page_path || pageViewEvent.path
|
|
544
|
-
};
|
|
545
|
-
break;
|
|
546
|
-
case "view_content" /* VIEW_CONTENT */:
|
|
547
|
-
const viewContentEvent = event;
|
|
548
|
-
eventName = this.getEventName(adapterParams, "ViewContent");
|
|
549
|
-
baseParams = {
|
|
550
|
-
content_type: viewContentEvent.content_type || "product",
|
|
551
|
-
content_ids: viewContentEvent.content_ids || [],
|
|
552
|
-
content_name: viewContentEvent.content_name || "",
|
|
553
|
-
content_category: viewContentEvent.content_category || "",
|
|
554
|
-
value: viewContentEvent.value || 0,
|
|
555
|
-
currency: viewContentEvent.currency || "INR"
|
|
556
|
-
};
|
|
557
|
-
break;
|
|
558
|
-
case "add_to_cart" /* ADD_TO_CART */:
|
|
559
|
-
const cartEvent = event;
|
|
560
|
-
eventName = this.getEventName(adapterParams, "AddToCart");
|
|
561
|
-
baseParams = {
|
|
562
|
-
content_type: "product_group",
|
|
563
|
-
content_ids: [cartEvent.productId],
|
|
564
|
-
content_name: cartEvent.productName,
|
|
565
|
-
value: cartEvent.price,
|
|
566
|
-
currency: cartEvent.currency || "INR"
|
|
567
|
-
};
|
|
568
|
-
break;
|
|
569
|
-
case "search" /* SEARCH */:
|
|
570
|
-
const searchEvent = event;
|
|
571
|
-
eventName = this.getEventName(adapterParams, "Search");
|
|
572
|
-
baseParams = {
|
|
573
|
-
search_string: searchEvent.searchTerm,
|
|
574
|
-
content_category: "product",
|
|
575
|
-
content_ids: searchEvent.content_ids || []
|
|
576
|
-
};
|
|
577
|
-
break;
|
|
578
|
-
case "initiate_checkout" /* INITIATE_CHECKOUT */:
|
|
579
|
-
const checkoutEvent = event;
|
|
580
|
-
eventName = this.getEventName(adapterParams, "InitiateCheckout");
|
|
581
|
-
baseParams = {
|
|
582
|
-
content_type: "product",
|
|
583
|
-
currency: checkoutEvent.currency || "INR",
|
|
584
|
-
value: checkoutEvent.cartValue,
|
|
585
|
-
num_items: checkoutEvent.itemCount || checkoutEvent.items?.length || 0,
|
|
586
|
-
contents: checkoutEvent.items?.map((item) => ({
|
|
587
|
-
id: item.productId,
|
|
588
|
-
quantity: item.quantity || 1,
|
|
589
|
-
item_price: item.price
|
|
590
|
-
})) || []
|
|
591
|
-
};
|
|
592
|
-
break;
|
|
593
|
-
case "purchase" /* PURCHASE */:
|
|
594
|
-
const purchaseEvent = event;
|
|
595
|
-
eventName = this.getEventName(adapterParams, "Purchase");
|
|
596
|
-
baseParams = {
|
|
597
|
-
content_type: purchaseEvent.content_type || "product",
|
|
598
|
-
content_ids: purchaseEvent.content_ids || [],
|
|
599
|
-
currency: purchaseEvent.currency || "INR",
|
|
600
|
-
value: purchaseEvent.value,
|
|
601
|
-
num_items: purchaseEvent.num_items || purchaseEvent.contents?.length || 0,
|
|
602
|
-
contents: purchaseEvent.contents || []
|
|
603
|
-
};
|
|
604
|
-
break;
|
|
605
|
-
default:
|
|
606
|
-
this.logger.warn(`Skipping unknown event type: ${event.type}`);
|
|
607
|
-
return { eventName: "", enhancedParams: {} };
|
|
608
|
-
}
|
|
609
|
-
const affiliateParams = this.enhanceWithAffiliateParams(baseParams);
|
|
610
|
-
const experimentParams = this.enhanceWithExperimentParams(affiliateParams);
|
|
611
|
-
const enhancedParams = this.mergeEventData(experimentParams, adapterParams);
|
|
612
|
-
return { eventName, enhancedParams };
|
|
613
|
-
}
|
|
614
|
-
};
|
|
615
|
-
|
|
616
403
|
// src/adapters/multi-pixel-adapter.ts
|
|
617
404
|
var MultiPixelAdapter = class extends BaseAdapter {
|
|
618
405
|
constructor(config) {
|
|
@@ -1601,6 +1388,7 @@ var ShopifyAdapter = class extends BaseAdapter {
|
|
|
1601
1388
|
this.shopId = config.shopId;
|
|
1602
1389
|
this.domain = config.domain;
|
|
1603
1390
|
this.currency = config.currency || DEFAULT_CURRENCY2;
|
|
1391
|
+
this.merchantName = config.merchantName;
|
|
1604
1392
|
}
|
|
1605
1393
|
/**
|
|
1606
1394
|
* Initialize the Shopify Analytics adapter
|
|
@@ -1757,7 +1545,7 @@ var ShopifyAdapter = class extends BaseAdapter {
|
|
|
1757
1545
|
}
|
|
1758
1546
|
try {
|
|
1759
1547
|
const productGid = this.formatProductGid(event.productId);
|
|
1760
|
-
const cartKey = `merchant_${
|
|
1548
|
+
const cartKey = `merchant_${this.merchantName}_cartId`;
|
|
1761
1549
|
const cartId = localStorage.getItem(cartKey) || "";
|
|
1762
1550
|
if (!cartId) {
|
|
1763
1551
|
this.logger.warn("No cart ID found, creating anonymous session");
|
|
@@ -2156,7 +1944,6 @@ var KwikCheckoutAdapter = class extends BaseAdapter {
|
|
|
2156
1944
|
KwikPassAdapter,
|
|
2157
1945
|
MoengageAdapter,
|
|
2158
1946
|
MultiPixelAdapter,
|
|
2159
|
-
PixelAdapter,
|
|
2160
1947
|
PostHogAdapter,
|
|
2161
1948
|
ShopifyAdapter
|
|
2162
1949
|
});
|