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