@sellout/utils 0.0.405 → 0.0.407

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.
@@ -1,5 +1,10 @@
1
1
  export declare enum ClientTrackingEventTypes {
2
- Purchase = "Purchase"
2
+ ViewContent = "ViewContent",
3
+ AddToCart = "AddToCart",
4
+ InitiateCheckout = "InitiateCheckout",
5
+ AddPaymentInfo = "AddPaymentInfo",
6
+ Purchase = "Purchase",
7
+ Lead = "Lead"
3
8
  }
4
9
  export interface IClientTrackingIds {
5
10
  googleAnalyticsId?: string;
@@ -1,11 +1,27 @@
1
1
  "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
2
13
  Object.defineProperty(exports, "__esModule", { value: true });
3
14
  exports.track = exports.initialize = exports.ClientTrackingEventTypes = void 0;
4
15
  const GoogleUtil = require("./GoogleUtil");
5
16
  const FacebookUtil = require("./FacebookUtil");
6
17
  var ClientTrackingEventTypes;
7
18
  (function (ClientTrackingEventTypes) {
19
+ ClientTrackingEventTypes["ViewContent"] = "ViewContent";
20
+ ClientTrackingEventTypes["AddToCart"] = "AddToCart";
21
+ ClientTrackingEventTypes["InitiateCheckout"] = "InitiateCheckout";
22
+ ClientTrackingEventTypes["AddPaymentInfo"] = "AddPaymentInfo";
8
23
  ClientTrackingEventTypes["Purchase"] = "Purchase";
24
+ ClientTrackingEventTypes["Lead"] = "Lead";
9
25
  })(ClientTrackingEventTypes = exports.ClientTrackingEventTypes || (exports.ClientTrackingEventTypes = {}));
10
26
  ;
11
27
  function initialize(clientTrackingIds) {
@@ -15,23 +31,229 @@ function initialize(clientTrackingIds) {
15
31
  exports.initialize = initialize;
16
32
  function track(type, params) {
17
33
  switch (type) {
34
+ case ClientTrackingEventTypes.ViewContent:
35
+ return trackViewContent(params);
36
+ case ClientTrackingEventTypes.AddToCart:
37
+ return trackAddToCart(params);
38
+ case ClientTrackingEventTypes.InitiateCheckout:
39
+ return trackInitiateCheckout(params);
40
+ case ClientTrackingEventTypes.AddPaymentInfo:
41
+ return trackAddPaymentInfo(params);
18
42
  case ClientTrackingEventTypes.Purchase:
19
43
  return trackPurchase(params);
44
+ case ClientTrackingEventTypes.Lead:
45
+ return trackLead(params);
20
46
  default:
21
47
  return null;
22
48
  }
23
49
  }
24
50
  exports.track = track;
25
- function trackPurchase({ order, orderTotal, channel, currency = 'USD', }) {
26
- GoogleUtil.track('event', 'purchase', {
51
+ function hasGoogleTracking(event) {
52
+ var _a;
53
+ return Boolean((_a = event === null || event === void 0 ? void 0 : event.organization) === null || _a === void 0 ? void 0 : _a.googleAnalyticsId);
54
+ }
55
+ function hasFacebookTracking(event) {
56
+ var _a;
57
+ return Boolean((_a = event === null || event === void 0 ? void 0 : event.organization) === null || _a === void 0 ? void 0 : _a.facebookPixelId);
58
+ }
59
+ function trackGoogleEvent(event, action, params) {
60
+ if (!hasGoogleTracking(event)) {
61
+ return;
62
+ }
63
+ GoogleUtil.track('event', action, params);
64
+ }
65
+ function trackFacebookEvent(event, action, params) {
66
+ if (!hasFacebookTracking(event)) {
67
+ return;
68
+ }
69
+ FacebookUtil.track('track', action, params);
70
+ }
71
+ function normalizePrice(value) {
72
+ const amount = Number(value !== null && value !== void 0 ? value : 0);
73
+ return Number.isFinite(amount) ? amount : 0;
74
+ }
75
+ function formatValue(amount) {
76
+ return amount / 100;
77
+ }
78
+ function makeTrackingItem(item, fallbackId) {
79
+ var _a;
80
+ return {
81
+ id: String((item === null || item === void 0 ? void 0 : item.ticketTypeId) || (item === null || item === void 0 ? void 0 : item.upgradeId) || (item === null || item === void 0 ? void 0 : item._id) || fallbackId),
82
+ name: String((item === null || item === void 0 ? void 0 : item.name) || 'Item'),
83
+ price: normalizePrice((_a = item === null || item === void 0 ? void 0 : item.price) !== null && _a !== void 0 ? _a : item === null || item === void 0 ? void 0 : item.values),
84
+ quantity: Number((item === null || item === void 0 ? void 0 : item.quantity) || 1),
85
+ };
86
+ }
87
+ function buildCheckoutItems(orderParams = {}) {
88
+ const tickets = Array.isArray(orderParams === null || orderParams === void 0 ? void 0 : orderParams.tickets)
89
+ ? orderParams.tickets.map((ticket, index) => makeTrackingItem(ticket, `ticket-${index}`))
90
+ : [];
91
+ const upgrades = Array.isArray(orderParams === null || orderParams === void 0 ? void 0 : orderParams.upgrades)
92
+ ? orderParams.upgrades.map((upgrade, index) => makeTrackingItem(upgrade, `upgrade-${index}`))
93
+ : [];
94
+ return [...tickets, ...upgrades];
95
+ }
96
+ function buildGoogleItems(items) {
97
+ return items.map((item) => ({
98
+ item_id: item.id,
99
+ item_name: item.name,
100
+ price: formatValue(item.price),
101
+ quantity: item.quantity,
102
+ }));
103
+ }
104
+ function buildFacebookContents(items) {
105
+ return items.map((item) => ({
106
+ id: item.id,
107
+ quantity: item.quantity,
108
+ }));
109
+ }
110
+ function buildFacebookContentIds(items) {
111
+ return items.map((item) => item.id);
112
+ }
113
+ function getTotalValue(items) {
114
+ return items.reduce((sum, item) => sum + item.price * item.quantity, 0);
115
+ }
116
+ function getTicketDisplayName(ticketType, tier) {
117
+ if (!(ticketType === null || ticketType === void 0 ? void 0 : ticketType.name)) {
118
+ return 'Ticket';
119
+ }
120
+ return (tier === null || tier === void 0 ? void 0 : tier.name) ? `${ticketType.name} - ${tier.name}` : ticketType.name;
121
+ }
122
+ function trackViewContent({ event, currency = 'USD', }) {
123
+ if (!hasGoogleTracking(event) && !hasFacebookTracking(event)) {
124
+ return;
125
+ }
126
+ const item = {
127
+ id: String((event === null || event === void 0 ? void 0 : event._id) || (event === null || event === void 0 ? void 0 : event.eventId) || 'event'),
128
+ name: String((event === null || event === void 0 ? void 0 : event.name) || 'Event'),
129
+ price: normalizePrice(event === null || event === void 0 ? void 0 : event.lowestPrice),
130
+ quantity: 1,
131
+ };
132
+ trackGoogleEvent(event, 'view_item', {
133
+ currency,
134
+ value: formatValue(item.price),
135
+ items: buildGoogleItems([item]),
136
+ });
137
+ trackFacebookEvent(event, 'ViewContent', {
138
+ content_name: item.name,
139
+ content_ids: [item.id],
140
+ content_type: 'product',
141
+ value: formatValue(item.price),
142
+ currency,
143
+ });
144
+ }
145
+ function buildAddToCartItem({ ticketType, tier, upgrade, }) {
146
+ var _a, _b;
147
+ if (upgrade) {
148
+ return {
149
+ id: String(upgrade._id || upgrade.upgradeId || 'upgrade'),
150
+ name: String(upgrade.name || 'Upgrade'),
151
+ price: normalizePrice(upgrade.price),
152
+ quantity: 1,
153
+ };
154
+ }
155
+ return {
156
+ id: String((ticketType === null || ticketType === void 0 ? void 0 : ticketType._id) || (ticketType === null || ticketType === void 0 ? void 0 : ticketType.ticketTypeId) || 'ticket'),
157
+ name: getTicketDisplayName(ticketType, tier),
158
+ price: normalizePrice((_b = (_a = tier === null || tier === void 0 ? void 0 : tier.price) !== null && _a !== void 0 ? _a : ticketType === null || ticketType === void 0 ? void 0 : ticketType.price) !== null && _b !== void 0 ? _b : ticketType === null || ticketType === void 0 ? void 0 : ticketType.values),
159
+ quantity: 1,
160
+ };
161
+ }
162
+ function trackAddToCart(_a) {
163
+ var { event, currency = 'USD' } = _a, params = __rest(_a, ["event", "currency"]);
164
+ if (!hasGoogleTracking(event) && !hasFacebookTracking(event)) {
165
+ return;
166
+ }
167
+ const item = buildAddToCartItem(params);
168
+ trackGoogleEvent(event, 'add_to_cart', {
169
+ currency,
170
+ value: formatValue(item.price),
171
+ items: buildGoogleItems([item]),
172
+ });
173
+ trackFacebookEvent(event, 'AddToCart', {
174
+ content_name: String((event === null || event === void 0 ? void 0 : event.name) || item.name),
175
+ content_ids: [item.id],
176
+ content_type: 'product',
177
+ contents: buildFacebookContents([item]),
178
+ value: formatValue(item.price),
179
+ currency,
180
+ num_items: item.quantity,
181
+ });
182
+ }
183
+ function trackInitiateCheckout({ event, order, currency = 'USD', }) {
184
+ if (!hasGoogleTracking(event) && !hasFacebookTracking(event)) {
185
+ return;
186
+ }
187
+ const items = buildCheckoutItems((order === null || order === void 0 ? void 0 : order.createOrderParams) || order);
188
+ const totalValue = getTotalValue(items);
189
+ trackGoogleEvent(event, 'begin_checkout', {
190
+ currency,
191
+ value: formatValue(totalValue),
192
+ items: buildGoogleItems(items),
193
+ });
194
+ trackFacebookEvent(event, 'InitiateCheckout', {
195
+ content_name: String((event === null || event === void 0 ? void 0 : event.name) || 'Checkout'),
196
+ content_ids: buildFacebookContentIds(items),
197
+ content_type: 'product',
198
+ contents: buildFacebookContents(items),
199
+ value: formatValue(totalValue),
200
+ currency,
201
+ num_items: items.reduce((sum, item) => sum + item.quantity, 0),
202
+ });
203
+ }
204
+ function trackAddPaymentInfo({ event, order, paymentSource, currency = 'USD', }) {
205
+ if (!hasGoogleTracking(event) && !hasFacebookTracking(event)) {
206
+ return;
207
+ }
208
+ const items = buildCheckoutItems((order === null || order === void 0 ? void 0 : order.createOrderParams) || order);
209
+ const totalValue = getTotalValue(items);
210
+ trackGoogleEvent(event, 'add_payment_info', {
211
+ currency,
212
+ value: formatValue(totalValue),
213
+ payment_type: paymentSource,
214
+ items: buildGoogleItems(items),
215
+ });
216
+ trackFacebookEvent(event, 'AddPaymentInfo', {
217
+ content_name: String((event === null || event === void 0 ? void 0 : event.name) || 'Checkout'),
218
+ content_ids: buildFacebookContentIds(items),
219
+ content_type: 'product',
220
+ contents: buildFacebookContents(items),
221
+ value: formatValue(totalValue),
222
+ currency,
223
+ num_items: items.reduce((sum, item) => sum + item.quantity, 0),
224
+ });
225
+ }
226
+ function trackPurchase({ event, order, orderTotal, channel, currency = 'USD', }) {
227
+ if (!hasGoogleTracking(event) && !hasFacebookTracking(event)) {
228
+ return;
229
+ }
230
+ const items = buildCheckoutItems(order);
231
+ trackGoogleEvent(event, 'purchase', {
27
232
  transaction_id: order._id,
28
- value: orderTotal / 100,
233
+ value: formatValue(orderTotal),
29
234
  affiliation: channel,
30
235
  currency,
236
+ items: buildGoogleItems(items),
31
237
  });
32
- FacebookUtil.track('track', 'Purchase', {
33
- value: orderTotal / 100,
238
+ trackFacebookEvent(event, 'Purchase', {
239
+ content_ids: buildFacebookContentIds(items),
240
+ content_type: 'product',
241
+ contents: buildFacebookContents(items),
242
+ value: formatValue(orderTotal),
34
243
  currency,
35
244
  });
36
245
  }
246
+ function trackLead({ event, source, }) {
247
+ if (!hasGoogleTracking(event) && !hasFacebookTracking(event)) {
248
+ return;
249
+ }
250
+ trackGoogleEvent(event, 'generate_lead', {
251
+ lead_source: source,
252
+ event_name: event === null || event === void 0 ? void 0 : event.name,
253
+ });
254
+ trackFacebookEvent(event, 'Lead', {
255
+ content_name: String((event === null || event === void 0 ? void 0 : event.name) || 'Lead'),
256
+ content_category: source,
257
+ });
258
+ }
37
259
  //# sourceMappingURL=ClientTrackingUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientTrackingUtil.js","sourceRoot":"","sources":["../src/ClientTrackingUtil.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAC3C,+CAA+C;AAE/C,IAAY,wBAEX;AAFD,WAAY,wBAAwB;IAClC,iDAAqB,CAAA;AACvB,CAAC,EAFW,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAEnC;AAAA,CAAC;AAOF,SAAgB,UAAU,CAAC,iBAAqC;IAC9D,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAC7D,CAAC;AAHD,gCAGC;AAED,SAAgB,KAAK,CAAC,IAA8B,EAAE,MAAW;IAC/D,QAAQ,IAAI,EAAE;QACZ,KAAK,wBAAwB,CAAC,QAAQ;YACpC,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/B;YACE,OAAO,IAAI,CAAC;KACf;AACH,CAAC;AAPD,sBAOC;AAED,SAAS,aAAa,CAAC,EACrB,KAAK,EACL,UAAU,EACV,OAAO,EACP,QAAQ,GAAG,KAAK,GACjB;IACC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE;QACpC,cAAc,EAAE,KAAK,CAAC,GAAG;QACzB,KAAK,EAAE,UAAU,GAAG,GAAG;QACvB,WAAW,EAAE,OAAO;QACpB,QAAQ;KACT,CAAC,CAAC;IAEH,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE;QACtC,KAAK,EAAE,UAAU,GAAG,GAAG;QACvB,QAAQ;KACT,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"ClientTrackingUtil.js","sourceRoot":"","sources":["../src/ClientTrackingUtil.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.track = exports.initialize = void 0;
13
13
  const Wait = require("./wait");
14
- const SELLOUT_FACEBOOK_PIXEL_ID = '205397967210775';
15
14
  function waitForPixel() {
16
15
  return __awaiter(this, void 0, void 0, function* () {
17
16
  return yield Wait.forTrue(() => Boolean(window.fbq));
@@ -22,7 +21,6 @@ function waitForPixel() {
22
21
  ****************************************************************************************/
23
22
  function initialize(facebookPixelId) {
24
23
  try {
25
- injectPixel(SELLOUT_FACEBOOK_PIXEL_ID);
26
24
  if (facebookPixelId) {
27
25
  injectPixel(facebookPixelId);
28
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FacebookUtil.js","sourceRoot":"","sources":["../src/FacebookUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAA+B;AAE/B,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAEpD,SAAe,YAAY;;QACzB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAE,MAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;CAAA;AAED;;yFAEyF;AAEzF,SAAgB,UAAU,CAAC,eAA+B;IACxD,IAAI;QACF,WAAW,CAAC,yBAAyB,CAAC,CAAC;QACvC,IAAI,eAAe,EAAE;YACnB,WAAW,CAAC,eAAe,CAAC,CAAC;SAC9B;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;SAC9C;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC;AAZD,gCAYC;AAED,SAAS,WAAW,CAAC,eAAuB;IAC1C,MAAM,QAAQ,GAAG;;;;;;;;;;;mBAWA,eAAe;;;;4CAIU,eAAe;;;GAGxD,CAAC;IAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC7E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;yFAEyF;AAEzF,SAAsB,KAAK,CAAC,IAAY,EAAE,MAAc,EAAE,MAAc;;QACtE,IAAI;YACF,MAAM,YAAY,EAAE,CAAC;YACpB,MAAc,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SAC3C;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;SACvD;IACH,CAAC;CAAA;AAPD,sBAOC"}
1
+ {"version":3,"file":"FacebookUtil.js","sourceRoot":"","sources":["../src/FacebookUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAA+B;AAE/B,SAAe,YAAY;;QACzB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAE,MAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;CAAA;AAED;;yFAEyF;AAEzF,SAAgB,UAAU,CAAC,eAA+B;IACxD,IAAI;QACF,IAAI,eAAe,EAAE;YACnB,WAAW,CAAC,eAAe,CAAC,CAAC;SAC9B;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;SAC9C;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC;AAXD,gCAWC;AAED,SAAS,WAAW,CAAC,eAAuB;IAC1C,MAAM,QAAQ,GAAG;;;;;;;;;;;mBAWA,eAAe;;;;4CAIU,eAAe;;;GAGxD,CAAC;IAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC7E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;yFAEyF;AAEzF,SAAsB,KAAK,CAAC,IAAY,EAAE,MAAc,EAAE,MAAc;;QACtE,IAAI;YACF,MAAM,YAAY,EAAE,CAAC;YACpB,MAAc,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SAC3C;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;SACvD;IACH,CAAC;CAAA;AAPD,sBAOC"}
@@ -12,7 +12,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.track = exports.initialize = void 0;
13
13
  const Wait = require("./wait");
14
14
  const env_1 = require("./env");
15
- const SELLOUT_GOOGLE_ANALYTICS_ID = 'UA-112750612-5';
16
15
  function waitForGTag() {
17
16
  return __awaiter(this, void 0, void 0, function* () {
18
17
  return yield Wait.forTrue(() => Boolean(window.gtag));
@@ -23,9 +22,8 @@ function waitForGTag() {
23
22
  ****************************************************************************************/
24
23
  function initialize(googleAnalyticsId) {
25
24
  try {
26
- injectGoogleAnalytics(SELLOUT_GOOGLE_ANALYTICS_ID);
27
- injectGoogleTagManager(env_1.SELLOUT_GOOGLE_TAG_ID);
28
25
  if (googleAnalyticsId) {
26
+ injectGoogleTagManager(env_1.SELLOUT_GOOGLE_TAG_ID);
29
27
  injectGoogleAnalytics(googleAnalyticsId);
30
28
  }
31
29
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleUtil.js","sourceRoot":"","sources":["../src/GoogleUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAA+B;AAC/B,+BAA4C;AAE5C,MAAM,2BAA2B,GAAG,gBAAgB,CAAC;AAErD,SAAe,WAAW;;QACxB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;CAAA;AAED;;yFAEyF;AAEzF,SAAgB,UAAU,CAAC,iBAAiC;IAC1D,IAAI;QACF,qBAAqB,CAAC,2BAA2B,CAAC,CAAC;QACnD,sBAAsB,CAAC,2BAAqB,CAAC,CAAC;QAC9C,IAAI,iBAAiB,EAAE;YACrB,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;SAC1C;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;SAChD;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC;AAbD,gCAaC;AAED,SAAS,qBAAqB,CAAC,iBAAyB;IACtD,MAAM,QAAQ,GAAG;;qEAEkD,iBAAiB;;;;;wBAK9D,iBAAiB;;GAEtC,CAAC;IAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC7E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,sBAAsB,CAAC,yBAAiC;IAC/D,MAAM,QAAQ,GAAG;;;;;;iDAM8B,yBAAyB;;KAErE,CAAC;IAEJ,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC7E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG;;yEAEsD,yBAAyB;;;GAG/F,CAAC;IAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC7E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;yFAEyF;AAEzF,SAAsB,KAAK,CAAC,IAAY,EAAE,MAAc,EAAE,MAAc;;QACtE,IAAI;YACF,MAAM,WAAW,EAAE,CAAC;YACnB,MAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SAC5C;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;SACzD;IACH,CAAC;CAAA;AAPD,sBAOC"}
1
+ {"version":3,"file":"GoogleUtil.js","sourceRoot":"","sources":["../src/GoogleUtil.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAA+B;AAC/B,+BAA4C;AAE5C,SAAe,WAAW;;QACxB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAE,MAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;CAAA;AAED;;yFAEyF;AAEzF,SAAgB,UAAU,CAAC,iBAAiC;IAC1D,IAAI;QACF,IAAI,iBAAiB,EAAE;YACrB,sBAAsB,CAAC,2BAAqB,CAAC,CAAC;YAC9C,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;SAC1C;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;SAChD;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC;AAZD,gCAYC;AAED,SAAS,qBAAqB,CAAC,iBAAyB;IACtD,MAAM,QAAQ,GAAG;;qEAEkD,iBAAiB;;;;;wBAK9D,iBAAiB;;GAEtC,CAAC;IAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC7E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,sBAAsB,CAAC,yBAAiC;IAC/D,MAAM,QAAQ,GAAG;;;;;;iDAM8B,yBAAyB;;KAErE,CAAC;IAEJ,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC7E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG;;yEAEsD,yBAAyB;;;GAG/F,CAAC;IAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC7E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;yFAEyF;AAEzF,SAAsB,KAAK,CAAC,IAAY,EAAE,MAAc,EAAE,MAAc;;QACtE,IAAI;YACF,MAAM,WAAW,EAAE,CAAC;YACnB,MAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SAC5C;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;SACzD;IACH,CAAC;CAAA;AAPD,sBAOC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellout/utils",
3
- "version": "0.0.405",
3
+ "version": "0.0.407",
4
4
  "description": "Sellout.io utils",
5
5
  "scripts": {
6
6
  "prepare": "npm run build",
@@ -24,5 +24,5 @@
24
24
  "nodemon": "^2.0.22",
25
25
  "typescript": "^4.4.2"
26
26
  },
27
- "gitHead": "122a28ca18bb558de3114d2017f0d63a4560a16e"
27
+ "gitHead": "4c9696c220be3abcad94295004bc81566c2bd012"
28
28
  }
@@ -2,7 +2,12 @@ import * as GoogleUtil from './GoogleUtil';
2
2
  import * as FacebookUtil from './FacebookUtil';
3
3
 
4
4
  export enum ClientTrackingEventTypes {
5
+ ViewContent = 'ViewContent',
6
+ AddToCart = 'AddToCart',
7
+ InitiateCheckout = 'InitiateCheckout',
8
+ AddPaymentInfo = 'AddPaymentInfo',
5
9
  Purchase = 'Purchase',
10
+ Lead = 'Lead',
6
11
  };
7
12
 
8
13
  export interface IClientTrackingIds {
@@ -10,6 +15,94 @@ export interface IClientTrackingIds {
10
15
  facebookPixelId?: string;
11
16
  }
12
17
 
18
+ type TrackingOrganization = {
19
+ facebookPixelId?: string | null;
20
+ googleAnalyticsId?: string | null;
21
+ };
22
+
23
+ type TrackingEvent = {
24
+ _id?: string;
25
+ eventId?: string;
26
+ name?: string;
27
+ lowestPrice?: number;
28
+ organization?: TrackingOrganization;
29
+ };
30
+
31
+ type TrackingUpgrade = {
32
+ _id?: string;
33
+ upgradeId?: string;
34
+ name?: string;
35
+ price?: number;
36
+ };
37
+
38
+ type TrackingTicketType = {
39
+ _id?: string;
40
+ ticketTypeId?: string;
41
+ name?: string;
42
+ price?: number;
43
+ values?: string | number;
44
+ };
45
+
46
+ type TrackingTier = {
47
+ _id?: string;
48
+ name?: string;
49
+ price?: number;
50
+ };
51
+
52
+ type TrackingOrderItem = {
53
+ _id?: string;
54
+ ticketTypeId?: string;
55
+ upgradeId?: string;
56
+ name?: string;
57
+ price?: number;
58
+ values?: string | number;
59
+ quantity?: number;
60
+ };
61
+
62
+ type TrackingOrder = {
63
+ _id?: string;
64
+ tickets?: TrackingOrderItem[];
65
+ upgrades?: TrackingOrderItem[];
66
+ createOrderParams?: {
67
+ tickets?: TrackingOrderItem[];
68
+ upgrades?: TrackingOrderItem[];
69
+ };
70
+ };
71
+
72
+ type BaseTrackingParams = {
73
+ event?: TrackingEvent | null;
74
+ currency?: string;
75
+ };
76
+
77
+ type ViewContentTrackingParams = BaseTrackingParams;
78
+
79
+ type AddToCartTrackingParams = BaseTrackingParams & {
80
+ ticketType?: TrackingTicketType;
81
+ tier?: TrackingTier;
82
+ upgrade?: TrackingUpgrade;
83
+ };
84
+
85
+ type CheckoutTrackingParams = BaseTrackingParams & {
86
+ order?: TrackingOrder;
87
+ };
88
+
89
+ type AddPaymentInfoTrackingParams = CheckoutTrackingParams & {
90
+ paymentSource?: string;
91
+ };
92
+
93
+ type PurchaseTrackingParams = {
94
+ event?: TrackingEvent | null;
95
+ order: TrackingOrder;
96
+ orderTotal: number;
97
+ channel?: string;
98
+ currency?: string;
99
+ };
100
+
101
+ type LeadTrackingParams = {
102
+ event?: TrackingEvent | null;
103
+ source?: string;
104
+ };
105
+
13
106
  export function initialize(clientTrackingIds: IClientTrackingIds) {
14
107
  GoogleUtil.initialize(clientTrackingIds.googleAnalyticsId);
15
108
  FacebookUtil.initialize(clientTrackingIds.facebookPixelId);
@@ -17,28 +110,311 @@ export function initialize(clientTrackingIds: IClientTrackingIds) {
17
110
 
18
111
  export function track(type: ClientTrackingEventTypes, params: any) {
19
112
  switch (type) {
113
+ case ClientTrackingEventTypes.ViewContent:
114
+ return trackViewContent(params);
115
+ case ClientTrackingEventTypes.AddToCart:
116
+ return trackAddToCart(params);
117
+ case ClientTrackingEventTypes.InitiateCheckout:
118
+ return trackInitiateCheckout(params);
119
+ case ClientTrackingEventTypes.AddPaymentInfo:
120
+ return trackAddPaymentInfo(params);
20
121
  case ClientTrackingEventTypes.Purchase:
21
122
  return trackPurchase(params);
123
+ case ClientTrackingEventTypes.Lead:
124
+ return trackLead(params);
22
125
  default:
23
126
  return null;
24
127
  }
25
128
  }
26
129
 
130
+ type TrackingItem = {
131
+ id: string;
132
+ name: string;
133
+ price: number;
134
+ quantity: number;
135
+ };
136
+
137
+ function hasGoogleTracking(event?: TrackingEvent | null): boolean {
138
+ return Boolean(event?.organization?.googleAnalyticsId);
139
+ }
140
+
141
+ function hasFacebookTracking(event?: TrackingEvent | null): boolean {
142
+ return Boolean(event?.organization?.facebookPixelId);
143
+ }
144
+
145
+ function trackGoogleEvent(
146
+ event: TrackingEvent | null | undefined,
147
+ action: string,
148
+ params: object
149
+ ): void {
150
+ if (!hasGoogleTracking(event)) {
151
+ return;
152
+ }
153
+
154
+ GoogleUtil.track('event', action, params);
155
+ }
156
+
157
+ function trackFacebookEvent(
158
+ event: TrackingEvent | null | undefined,
159
+ action: string,
160
+ params: object
161
+ ): void {
162
+ if (!hasFacebookTracking(event)) {
163
+ return;
164
+ }
165
+
166
+ FacebookUtil.track('track', action, params);
167
+ }
168
+
169
+ function normalizePrice(value: any): number {
170
+ const amount = Number(value ?? 0);
171
+ return Number.isFinite(amount) ? amount : 0;
172
+ }
173
+
174
+ function formatValue(amount: number): number {
175
+ return amount / 100;
176
+ }
177
+
178
+ function makeTrackingItem(item: any, fallbackId: string): TrackingItem {
179
+ return {
180
+ id: String(item?.ticketTypeId || item?.upgradeId || item?._id || fallbackId),
181
+ name: String(item?.name || 'Item'),
182
+ price: normalizePrice(item?.price ?? item?.values),
183
+ quantity: Number(item?.quantity || 1),
184
+ };
185
+ }
186
+
187
+ function buildCheckoutItems(orderParams: any = {}): TrackingItem[] {
188
+ const tickets = Array.isArray(orderParams?.tickets)
189
+ ? orderParams.tickets.map((ticket: any, index: number) =>
190
+ makeTrackingItem(ticket, `ticket-${index}`)
191
+ )
192
+ : [];
193
+ const upgrades = Array.isArray(orderParams?.upgrades)
194
+ ? orderParams.upgrades.map((upgrade: any, index: number) =>
195
+ makeTrackingItem(upgrade, `upgrade-${index}`)
196
+ )
197
+ : [];
198
+
199
+ return [...tickets, ...upgrades];
200
+ }
201
+
202
+ function buildGoogleItems(items: TrackingItem[]) {
203
+ return items.map((item) => ({
204
+ item_id: item.id,
205
+ item_name: item.name,
206
+ price: formatValue(item.price),
207
+ quantity: item.quantity,
208
+ }));
209
+ }
210
+
211
+ function buildFacebookContents(items: TrackingItem[]) {
212
+ return items.map((item) => ({
213
+ id: item.id,
214
+ quantity: item.quantity,
215
+ }));
216
+ }
217
+
218
+ function buildFacebookContentIds(items: TrackingItem[]) {
219
+ return items.map((item) => item.id);
220
+ }
221
+
222
+ function getTotalValue(items: TrackingItem[]): number {
223
+ return items.reduce((sum, item) => sum + item.price * item.quantity, 0);
224
+ }
225
+
226
+ function getTicketDisplayName(ticketType: any, tier: any): string {
227
+ if (!ticketType?.name) {
228
+ return 'Ticket';
229
+ }
230
+
231
+ return tier?.name ? `${ticketType.name} - ${tier.name}` : ticketType.name;
232
+ }
233
+
234
+ function trackViewContent({
235
+ event,
236
+ currency = 'USD',
237
+ }: ViewContentTrackingParams): void {
238
+ if (!hasGoogleTracking(event) && !hasFacebookTracking(event)) {
239
+ return;
240
+ }
241
+
242
+ const item: TrackingItem = {
243
+ id: String(event?._id || event?.eventId || 'event'),
244
+ name: String(event?.name || 'Event'),
245
+ price: normalizePrice(event?.lowestPrice),
246
+ quantity: 1,
247
+ };
248
+
249
+ trackGoogleEvent(event, 'view_item', {
250
+ currency,
251
+ value: formatValue(item.price),
252
+ items: buildGoogleItems([item]),
253
+ });
254
+
255
+ trackFacebookEvent(event, 'ViewContent', {
256
+ content_name: item.name,
257
+ content_ids: [item.id],
258
+ content_type: 'product',
259
+ value: formatValue(item.price),
260
+ currency,
261
+ });
262
+ }
263
+
264
+ function buildAddToCartItem({
265
+ ticketType,
266
+ tier,
267
+ upgrade,
268
+ }: AddToCartTrackingParams): TrackingItem {
269
+ if (upgrade) {
270
+ return {
271
+ id: String(upgrade._id || upgrade.upgradeId || 'upgrade'),
272
+ name: String(upgrade.name || 'Upgrade'),
273
+ price: normalizePrice(upgrade.price),
274
+ quantity: 1,
275
+ };
276
+ }
277
+
278
+ return {
279
+ id: String(ticketType?._id || ticketType?.ticketTypeId || 'ticket'),
280
+ name: getTicketDisplayName(ticketType, tier),
281
+ price: normalizePrice(tier?.price ?? ticketType?.price ?? ticketType?.values),
282
+ quantity: 1,
283
+ };
284
+ }
285
+
286
+ function trackAddToCart({
287
+ event,
288
+ currency = 'USD',
289
+ ...params
290
+ }: AddToCartTrackingParams): void {
291
+ if (!hasGoogleTracking(event) && !hasFacebookTracking(event)) {
292
+ return;
293
+ }
294
+
295
+ const item = buildAddToCartItem(params);
296
+
297
+ trackGoogleEvent(event, 'add_to_cart', {
298
+ currency,
299
+ value: formatValue(item.price),
300
+ items: buildGoogleItems([item]),
301
+ });
302
+
303
+ trackFacebookEvent(event, 'AddToCart', {
304
+ content_name: String(event?.name || item.name),
305
+ content_ids: [item.id],
306
+ content_type: 'product',
307
+ contents: buildFacebookContents([item]),
308
+ value: formatValue(item.price),
309
+ currency,
310
+ num_items: item.quantity,
311
+ });
312
+ }
313
+
314
+ function trackInitiateCheckout({
315
+ event,
316
+ order,
317
+ currency = 'USD',
318
+ }: CheckoutTrackingParams): void {
319
+ if (!hasGoogleTracking(event) && !hasFacebookTracking(event)) {
320
+ return;
321
+ }
322
+
323
+ const items = buildCheckoutItems(order?.createOrderParams || order);
324
+ const totalValue = getTotalValue(items);
325
+
326
+ trackGoogleEvent(event, 'begin_checkout', {
327
+ currency,
328
+ value: formatValue(totalValue),
329
+ items: buildGoogleItems(items),
330
+ });
331
+
332
+ trackFacebookEvent(event, 'InitiateCheckout', {
333
+ content_name: String(event?.name || 'Checkout'),
334
+ content_ids: buildFacebookContentIds(items),
335
+ content_type: 'product',
336
+ contents: buildFacebookContents(items),
337
+ value: formatValue(totalValue),
338
+ currency,
339
+ num_items: items.reduce((sum, item) => sum + item.quantity, 0),
340
+ });
341
+ }
342
+
343
+ function trackAddPaymentInfo({
344
+ event,
345
+ order,
346
+ paymentSource,
347
+ currency = 'USD',
348
+ }: AddPaymentInfoTrackingParams): void {
349
+ if (!hasGoogleTracking(event) && !hasFacebookTracking(event)) {
350
+ return;
351
+ }
352
+
353
+ const items = buildCheckoutItems(order?.createOrderParams || order);
354
+ const totalValue = getTotalValue(items);
355
+
356
+ trackGoogleEvent(event, 'add_payment_info', {
357
+ currency,
358
+ value: formatValue(totalValue),
359
+ payment_type: paymentSource,
360
+ items: buildGoogleItems(items),
361
+ });
362
+
363
+ trackFacebookEvent(event, 'AddPaymentInfo', {
364
+ content_name: String(event?.name || 'Checkout'),
365
+ content_ids: buildFacebookContentIds(items),
366
+ content_type: 'product',
367
+ contents: buildFacebookContents(items),
368
+ value: formatValue(totalValue),
369
+ currency,
370
+ num_items: items.reduce((sum, item) => sum + item.quantity, 0),
371
+ });
372
+ }
373
+
27
374
  function trackPurchase({
375
+ event,
28
376
  order,
29
377
  orderTotal,
30
378
  channel,
31
379
  currency = 'USD',
32
- }): void {
33
- GoogleUtil.track('event', 'purchase', {
380
+ }: PurchaseTrackingParams): void {
381
+ if (!hasGoogleTracking(event) && !hasFacebookTracking(event)) {
382
+ return;
383
+ }
384
+
385
+ const items = buildCheckoutItems(order);
386
+ trackGoogleEvent(event, 'purchase', {
34
387
  transaction_id: order._id,
35
- value: orderTotal / 100,
388
+ value: formatValue(orderTotal),
36
389
  affiliation: channel,
37
390
  currency,
391
+ items: buildGoogleItems(items),
38
392
  });
39
393
 
40
- FacebookUtil.track('track', 'Purchase', {
41
- value: orderTotal / 100,
394
+ trackFacebookEvent(event, 'Purchase', {
395
+ content_ids: buildFacebookContentIds(items),
396
+ content_type: 'product',
397
+ contents: buildFacebookContents(items),
398
+ value: formatValue(orderTotal),
42
399
  currency,
43
400
  });
44
401
  }
402
+
403
+ function trackLead({
404
+ event,
405
+ source,
406
+ }: LeadTrackingParams): void {
407
+ if (!hasGoogleTracking(event) && !hasFacebookTracking(event)) {
408
+ return;
409
+ }
410
+
411
+ trackGoogleEvent(event, 'generate_lead', {
412
+ lead_source: source,
413
+ event_name: event?.name,
414
+ });
415
+
416
+ trackFacebookEvent(event, 'Lead', {
417
+ content_name: String(event?.name || 'Lead'),
418
+ content_category: source,
419
+ });
420
+ }
@@ -1,7 +1,5 @@
1
1
  import * as Wait from './wait';
2
2
 
3
- const SELLOUT_FACEBOOK_PIXEL_ID = '205397967210775';
4
-
5
3
  async function waitForPixel() {
6
4
  return await Wait.forTrue(() => Boolean((window as any).fbq));
7
5
  }
@@ -12,7 +10,6 @@ async function waitForPixel() {
12
10
 
13
11
  export function initialize(facebookPixelId?: string | null): void {
14
12
  try {
15
- injectPixel(SELLOUT_FACEBOOK_PIXEL_ID);
16
13
  if (facebookPixelId) {
17
14
  injectPixel(facebookPixelId);
18
15
  } else {
package/src/GoogleUtil.ts CHANGED
@@ -1,8 +1,6 @@
1
1
  import * as Wait from './wait';
2
2
  import {SELLOUT_GOOGLE_TAG_ID} from './env';
3
3
 
4
- const SELLOUT_GOOGLE_ANALYTICS_ID = 'UA-112750612-5';
5
-
6
4
  async function waitForGTag() {
7
5
  return await Wait.forTrue(() => Boolean((window as any).gtag));
8
6
  }
@@ -13,9 +11,8 @@ async function waitForGTag() {
13
11
 
14
12
  export function initialize(googleAnalyticsId?: string | null): void {
15
13
  try {
16
- injectGoogleAnalytics(SELLOUT_GOOGLE_ANALYTICS_ID);
17
- injectGoogleTagManager(SELLOUT_GOOGLE_TAG_ID);
18
14
  if (googleAnalyticsId) {
15
+ injectGoogleTagManager(SELLOUT_GOOGLE_TAG_ID);
19
16
  injectGoogleAnalytics(googleAnalyticsId);
20
17
  } else {
21
18
  console.log('Google Analytics not configured');