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