UNPKG

@comparaonline/event-tracker

Version:

This library it's an interface between any frontend application and some event tracking platforms, currently Snowplow and Tag Manager.

59 lines (58 loc) 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.trackToABTasty = trackToABTasty; var _constants = require("../constants"); var _eventNames = require("../constants/eventNames"); function trackToABTasty(event) { if (typeof window.abtasty !== 'object') { console.warn("abtasty wasn't initialized, failed to track an event push"); return; } if (typeof window.abtasty.send !== 'function') { console.warn("Can't track events to abtasty, failed to track an event push"); return; } const eventData = MAP_EVENT_TO_PARSER[event.name]?.(event) || parseEvent(event); const eventName = MAP_EVENT_NAME_TO_ABTASITY_EVENT[event.name] || 'event'; window.abtasty.send(eventName, eventData); } const MAP_EVENT_NAME_TO_ABTASITY_EVENT = { [_eventNames.EVENT_NAME.TRANSACTION]: 'transaction' }; const MAP_EVENT_TO_PARSER = { [_eventNames.EVENT_NAME.TRANSACTION]: parseTransaction, [_eventNames.EVENT_NAME.FORM_STEP_RENDER]: parseFormStepRender }; function parseEvent(event) { return { ec: 'Action Tracking', ea: event.name }; } function parseTransaction(event) { const data = event.data; return { tid: data.orderId, ta: data.type, tr: data.price, tt: data.tax, tc: data.currency, tcc: data.couponCode, pm: data.paymentMethod, icn: data.itemCount || 1 }; } function parseFormStepRender(event) { const { accordion_name: accordionName, business_unit: businessUnit, country_code: countryCode } = event.data; const BU = `${_constants.SHORT_BUSINESS_UNIT[businessUnit]}${countryCode}`.toUpperCase(); return { ec: 'Action Tracking', ea: `${BU} - Render ${accordionName}` }; }