@jetshop/core 5.15.0-alpha.705c3635 → 5.15.0-alpha.c587c420
Sign up to get free protection for your applications and to get access to all the features.
- package/analytics/AnalyticsProvider.d.ts +3 -0
- package/analytics/AnalyticsProvider.js +22 -8
- package/analytics/AnalyticsProvider.js.map +1 -1
- package/analytics/integrations/ga4.js +59 -22
- package/analytics/integrations/ga4.js.map +1 -1
- package/analytics/integrations/gtag/gtag.js +32 -3
- package/analytics/integrations/gtag/gtag.js.map +1 -1
- package/analytics/integrations/gtm/gtm.d.ts +12 -0
- package/analytics/integrations/gtm/gtm.js +234 -0
- package/analytics/integrations/gtm/gtm.js.map +1 -0
- package/analytics/integrations/gtm/index.d.ts +1 -12
- package/analytics/integrations/gtm/index.js +1 -200
- package/analytics/integrations/gtm/index.js.map +1 -1
- package/analytics/trackerRegistry.d.ts +12 -0
- package/analytics/trackerRegistry.js +3 -1
- package/analytics/trackerRegistry.js.map +1 -1
- package/boot/SharedTree.js +1 -1
- package/boot/SharedTree.js.map +1 -1
- package/boot/apollo.js +2 -2
- package/boot/apollo.js.map +1 -1
- package/boot/server/createRenderer.js +3 -3
- package/boot/server/createRenderer.js.map +1 -1
- package/components/DynamicRoute/ProductRoute.js +9 -2
- package/components/DynamicRoute/ProductRoute.js.map +1 -1
- package/components/DynamicRoute/RouteResolver.d.ts +1 -1
- package/components/Head.js +5 -2
- package/components/Head.js.map +1 -1
- package/hooks/ProductList/list-transforms.d.ts +2 -0
- package/hooks/useCustomerOrders.test.js +5 -5
- package/package.json +2 -3
- package/types.d.ts +41 -3
@@ -3,6 +3,7 @@ import { SelectedChannel } from '../components/ChannelContext/ChannelContext';
|
|
3
3
|
import { BootOptions } from '../components/ConfigProvider';
|
4
4
|
import { TrackerRegistry } from './trackerRegistry';
|
5
5
|
import { Scalars } from '../types';
|
6
|
+
import { Cookies } from 'react-cookie';
|
6
7
|
export interface AnalyticsConfigReleware {
|
7
8
|
enabled: boolean;
|
8
9
|
baseUrl: Scalars['Uri'];
|
@@ -19,6 +20,7 @@ export interface AnalyticsConfig {
|
|
19
20
|
};
|
20
21
|
releware?: AnalyticsConfigReleware;
|
21
22
|
trackingAllowed: boolean;
|
23
|
+
consentedToTracking: boolean;
|
22
24
|
}
|
23
25
|
export interface AnalyticsProviderContext {
|
24
26
|
config: AnalyticsConfig;
|
@@ -27,6 +29,7 @@ export interface AnalyticsProviderContext {
|
|
27
29
|
export declare const AnalyticsContext: Context<AnalyticsProviderContext>;
|
28
30
|
export interface AnalyticsProviderProps {
|
29
31
|
releware?: AnalyticsConfigReleware;
|
32
|
+
cookies: Cookies;
|
30
33
|
}
|
31
34
|
export declare const getFacebookCapi: (selectedChannel: SelectedChannel) => {
|
32
35
|
token: string;
|
@@ -24,7 +24,8 @@ const initialAnalyticsConfig = {
|
|
24
24
|
baseUrl: null,
|
25
25
|
uid: null
|
26
26
|
},
|
27
|
-
trackingAllowed: false
|
27
|
+
trackingAllowed: false,
|
28
|
+
consentedToTracking: false
|
28
29
|
};
|
29
30
|
export const AnalyticsContext = createContext({
|
30
31
|
config: initialAnalyticsConfig,
|
@@ -72,6 +73,7 @@ export const getGoogleAnalytics = (config, selectedChannel) => {
|
|
72
73
|
const AnalyticsProvider = function AnalyticsProvider(props) {
|
73
74
|
const shopConfig = useShopConfig();
|
74
75
|
const { selectedChannel } = useContext(ChannelContext);
|
76
|
+
const consentedToTracking = props.cookies.get('cookieConsent');
|
75
77
|
const { tagManagerID, trackingID, useArticleNumberAsId, additionalGtagTrackingIds } = getGoogleAnalytics(shopConfig, selectedChannel);
|
76
78
|
const { pixelId, token } = getFacebookCapi(selectedChannel);
|
77
79
|
const trackingAllowed = allowsTrackingWithDNT();
|
@@ -85,14 +87,16 @@ const AnalyticsProvider = function AnalyticsProvider(props) {
|
|
85
87
|
containerId: tagManagerID
|
86
88
|
},
|
87
89
|
releware: props.releware,
|
88
|
-
trackingAllowed: trackingAllowed
|
90
|
+
trackingAllowed: trackingAllowed,
|
91
|
+
consentedToTracking: consentedToTracking === 'agreed'
|
89
92
|
}), [
|
90
|
-
props.releware,
|
91
|
-
tagManagerID,
|
92
93
|
trackingID,
|
93
94
|
additionalGtagTrackingIds,
|
94
95
|
useArticleNumberAsId,
|
95
|
-
|
96
|
+
tagManagerID,
|
97
|
+
props.releware,
|
98
|
+
trackingAllowed,
|
99
|
+
consentedToTracking
|
96
100
|
]);
|
97
101
|
const { gtm, gtag, releware } = analyticsConfig;
|
98
102
|
const registry = useMemo(() => trackerRegistry({
|
@@ -109,7 +113,7 @@ const AnalyticsProvider = function AnalyticsProvider(props) {
|
|
109
113
|
useArticleNumberAsId: gtag.useArticleNumberAsId
|
110
114
|
}));
|
111
115
|
}
|
112
|
-
else {
|
116
|
+
else if (gtag === null || gtag === void 0 ? void 0 : gtag.trackingId) {
|
113
117
|
registry.add(gtagTracker({
|
114
118
|
currency: selectedChannel.currency.format.code,
|
115
119
|
trackingId: gtag.trackingId,
|
@@ -130,6 +134,16 @@ const AnalyticsProvider = function AnalyticsProvider(props) {
|
|
130
134
|
brandCustomField: shopConfig.brandCustomField,
|
131
135
|
useArticleNumberAsId
|
132
136
|
}));
|
137
|
+
const registred = registry.trackers();
|
138
|
+
if (!registred.includes('ga4') && !registred.includes('gtag')) {
|
139
|
+
registry.add(gtagTracker({
|
140
|
+
currency: selectedChannel.currency.format.code,
|
141
|
+
trackingId: gtm.containerId,
|
142
|
+
additionalGtagTrackingIds: [],
|
143
|
+
brandCustomField: shopConfig.brandCustomField,
|
144
|
+
useArticleNumberAsId
|
145
|
+
}));
|
146
|
+
}
|
133
147
|
}
|
134
148
|
if (shopConfig.trackers) {
|
135
149
|
shopConfig.trackers.forEach((tracker) => {
|
@@ -151,8 +165,8 @@ const AnalyticsProvider = function AnalyticsProvider(props) {
|
|
151
165
|
};
|
152
166
|
}, [analyticsConfig, registry]);
|
153
167
|
const preconnectLinks = usePreconnectLinks({
|
154
|
-
ga: !!(gtag === null || gtag === void 0 ? void 0 : gtag.trackingId),
|
155
|
-
gtm: !!(gtm === null || gtm === void 0 ? void 0 : gtm.containerId)
|
168
|
+
ga: consentedToTracking && !!(gtag === null || gtag === void 0 ? void 0 : gtag.trackingId),
|
169
|
+
gtm: consentedToTracking && !!(gtm === null || gtm === void 0 ? void 0 : gtm.containerId)
|
156
170
|
});
|
157
171
|
return (React.createElement(AnalyticsContext.Provider, { value: value },
|
158
172
|
React.createElement(Helmet, null, preconnectLinks.map(({ href, crossOrigin }) => (React.createElement("link", Object.assign({ rel: "preconnect", href: href }, (crossOrigin && { crossOrigin }), { key: href }))))),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"AnalyticsProvider.js","sourceRoot":"","sources":["AnalyticsProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAW,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3E,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,mBAAmB,EACnB,eAAe,EAEhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
1
|
+
{"version":3,"file":"AnalyticsProvider.js","sourceRoot":"","sources":["AnalyticsProvider.tsx"],"names":[],"mappings":"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"}
|
@@ -17,8 +17,7 @@ function productToItem(product, selectedVariation, useArticleNumberAsId = false,
|
|
17
17
|
export function ga4Tracker({ trackingId, additionalGtagTrackingIds = [], currency, brandCustomField, useArticleNumberAsId = false }) {
|
18
18
|
return {
|
19
19
|
name: 'ga4',
|
20
|
-
initBrowser() {
|
21
|
-
const script = `https://www.googletagmanager.com/gtag/js?id=${trackingId}`;
|
20
|
+
initBrowser({ config }) {
|
22
21
|
const w = window;
|
23
22
|
w.dataLayer = w.dataLayer || [];
|
24
23
|
w.dataLayer.push({
|
@@ -33,6 +32,25 @@ export function ga4Tracker({ trackingId, additionalGtagTrackingIds = [], currenc
|
|
33
32
|
w.gtag = function gtag() {
|
34
33
|
w.dataLayer.push(arguments);
|
35
34
|
};
|
35
|
+
/**
|
36
|
+
NB:
|
37
|
+
Only cookieless pings will be sent to Google servers.
|
38
|
+
There’s also a wait time of 500 milliseconds before any Google tags are allowed to fire,
|
39
|
+
to give time for the update command to be invoked.
|
40
|
+
*/
|
41
|
+
const consent = config.consentedToTracking ? 'granted' : 'denied';
|
42
|
+
gtag()('consent', 'default', {
|
43
|
+
ad_storage: consent,
|
44
|
+
// https://www.simoahava.com/analytics/consent-mode-google-tags/#restrict-advertising-storage
|
45
|
+
analytics_storage: consent,
|
46
|
+
personalization_storage: consent,
|
47
|
+
functionality_storage: 'granted',
|
48
|
+
security_storage: 'granted',
|
49
|
+
wait_for_update: 500
|
50
|
+
});
|
51
|
+
// NB: This only works when you set ad_storage to denied.
|
52
|
+
// https://developers.google.com/tag-platform/devguides/consent#redact_ads_data
|
53
|
+
gtag()('set', 'ads_data_redaction', true);
|
36
54
|
w.gtag('js', new Date());
|
37
55
|
if (process.env.REACT_APP_DEBUG_MODE === 'true') {
|
38
56
|
gtag()('config', trackingId, {
|
@@ -45,10 +63,21 @@ export function ga4Tracker({ trackingId, additionalGtagTrackingIds = [], currenc
|
|
45
63
|
additionalGtagTrackingIds.forEach((id) => {
|
46
64
|
gtag()('config', id);
|
47
65
|
});
|
48
|
-
injectScript({
|
66
|
+
injectScript({
|
67
|
+
src: `https://www.googletagmanager.com/gtag/js?id=${trackingId}`
|
68
|
+
});
|
49
69
|
gtag();
|
50
70
|
},
|
51
|
-
|
71
|
+
consent(consents) {
|
72
|
+
gtag()('consent', 'update', consents
|
73
|
+
? Object.assign(Object.assign({}, consents), { functionality_storage: 'granted' }) : {
|
74
|
+
ad_storage: 'granted',
|
75
|
+
analytics_storage: 'granted',
|
76
|
+
personalization_storage: 'granted',
|
77
|
+
security_storage: 'granted'
|
78
|
+
});
|
79
|
+
},
|
80
|
+
trackProduct({ quantity, action, product, selectedVariation, list, listName, index, category }, context, eventId) {
|
52
81
|
const productItem = Object.assign(Object.assign({}, productToItem(product, selectedVariation, useArticleNumberAsId, brandCustomField, category)), { quantity, item_list_name: list || listName || context.list, index: index });
|
53
82
|
switch (action) {
|
54
83
|
case 'click':
|
@@ -56,28 +85,32 @@ export function ga4Tracker({ trackingId, additionalGtagTrackingIds = [], currenc
|
|
56
85
|
content_type: 'product',
|
57
86
|
currency,
|
58
87
|
value: product.price.incVat,
|
59
|
-
items: [productItem]
|
88
|
+
items: [productItem],
|
89
|
+
eventId
|
60
90
|
});
|
61
91
|
break;
|
62
92
|
case 'view':
|
63
93
|
gtag()('event', 'view_item', {
|
64
94
|
currency,
|
65
95
|
value: product.price.incVat,
|
66
|
-
items: [productItem]
|
96
|
+
items: [productItem],
|
97
|
+
eventId
|
67
98
|
});
|
68
99
|
break;
|
69
100
|
case 'add':
|
70
101
|
gtag()('event', 'add_to_cart', {
|
71
102
|
currency,
|
72
103
|
value: product.price.incVat,
|
73
|
-
items: [productItem]
|
104
|
+
items: [productItem],
|
105
|
+
eventId
|
74
106
|
});
|
75
107
|
break;
|
76
108
|
case 'remove':
|
77
109
|
gtag()('event', 'remove_from_cart', {
|
78
110
|
currency,
|
79
111
|
value: product.price.incVat,
|
80
|
-
items: [productItem]
|
112
|
+
items: [productItem],
|
113
|
+
eventId
|
81
114
|
});
|
82
115
|
break;
|
83
116
|
default:
|
@@ -102,14 +135,15 @@ export function ga4Tracker({ trackingId, additionalGtagTrackingIds = [], currenc
|
|
102
135
|
// items
|
103
136
|
// });
|
104
137
|
// },
|
105
|
-
trackPageView({ pathname, title }, _context) {
|
138
|
+
trackPageView({ pathname, title }, _context, eventId) {
|
106
139
|
gtag()('event', 'page_view', {
|
107
140
|
currency,
|
108
141
|
page_path: pathname,
|
109
|
-
page_title: title
|
142
|
+
page_title: title,
|
143
|
+
eventId
|
110
144
|
});
|
111
145
|
},
|
112
|
-
trackList({ listName, products, category }, _context) {
|
146
|
+
trackList({ listName, products, category }, _context, eventId) {
|
113
147
|
const items = products.map((product, i) => {
|
114
148
|
var _a;
|
115
149
|
return (Object.assign(Object.assign({}, productToItem(product, null, useArticleNumberAsId, brandCustomField)), { price: (_a = product.price) === null || _a === void 0 ? void 0 : _a.incVat, item_list_name: listName, index: i }));
|
@@ -117,27 +151,30 @@ export function ga4Tracker({ trackingId, additionalGtagTrackingIds = [], currenc
|
|
117
151
|
gtag()('event', 'view_item_list', {
|
118
152
|
item_list_id: category,
|
119
153
|
item_list_name: listName,
|
120
|
-
items
|
154
|
+
items,
|
155
|
+
eventId
|
121
156
|
});
|
122
157
|
},
|
123
|
-
trackExperiment({ id, variant }, _context) {
|
158
|
+
trackExperiment({ id, variant }, _context, eventId) {
|
124
159
|
gtag()('config', trackingId, {
|
125
|
-
experiments: [{ id, variant }]
|
160
|
+
experiments: [{ id, variant }],
|
161
|
+
eventId
|
126
162
|
});
|
127
163
|
},
|
128
|
-
trackUser({ userId }, _context) {
|
129
|
-
gtag()('event', 'authentication', { user_id: userId });
|
164
|
+
trackUser({ userId }, _context, eventId) {
|
165
|
+
gtag()('event', 'authentication', { user_id: userId, eventId });
|
130
166
|
},
|
131
|
-
trackLogin(_props, _context) {
|
132
|
-
gtag()('event', 'login', { trackingId });
|
167
|
+
trackLogin(_props, _context, eventId) {
|
168
|
+
gtag()('event', 'login', { trackingId, eventId });
|
133
169
|
},
|
134
|
-
trackRegister(_props, _context) {
|
135
|
-
gtag()('event', 'sign_up', { trackingId });
|
170
|
+
trackRegister(_props, _context, eventId) {
|
171
|
+
gtag()('event', 'sign_up', { trackingId, eventId });
|
136
172
|
},
|
137
|
-
trackAddToWishList({ articleNumber, productName }, _context) {
|
173
|
+
trackAddToWishList({ articleNumber, productName }, _context, eventId) {
|
138
174
|
gtag()('event', 'add_to_wishlist', {
|
139
175
|
articleNumber,
|
140
|
-
productName
|
176
|
+
productName,
|
177
|
+
eventId
|
141
178
|
});
|
142
179
|
}
|
143
180
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ga4.js","sourceRoot":"","sources":["ga4.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yDAAyD,CAAC;AAEnF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAE,MAAc,CAAC,IAAI,CAAC;AAkBxC,SAAS,aAAa,CACpB,OAAgB,EAChB,iBAAiC,EACjC,oBAAoB,GAAG,KAAK,EAC5B,gBAAyB,EACzB,QAAiB;;IAEjB,OAAO;QACL,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI;QACxB,OAAO,EAAE,oBAAoB;YAC3B,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa;YACxB,CAAC,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,0CAAE,QAAQ,EAAE;QAC3B,KAAK,EAAE,CAAA,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,KAAK,0CAAE,MAAM,MAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,MAAM,CAAA;QACjE,aAAa,EAAE,QAAQ;QACvB,YAAY,EAAE,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,MAAM,0CAAE,IAAI,CAAC,GAAG,CAAC;QAClD,UAAU,EAAE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EACzB,UAAU,EACV,yBAAyB,GAAG,EAAE,EAC9B,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,GAAG,KAAK,EAO7B;IACC,OAAO;QACL,IAAI,EAAE,KAAK;QACX,WAAW
|
1
|
+
{"version":3,"file":"ga4.js","sourceRoot":"","sources":["ga4.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yDAAyD,CAAC;AAEnF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAE,MAAc,CAAC,IAAI,CAAC;AAkBxC,SAAS,aAAa,CACpB,OAAgB,EAChB,iBAAiC,EACjC,oBAAoB,GAAG,KAAK,EAC5B,gBAAyB,EACzB,QAAiB;;IAEjB,OAAO;QACL,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI;QACxB,OAAO,EAAE,oBAAoB;YAC3B,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa;YACxB,CAAC,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,0CAAE,QAAQ,EAAE;QAC3B,KAAK,EAAE,CAAA,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,KAAK,0CAAE,MAAM,MAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,MAAM,CAAA;QACjE,aAAa,EAAE,QAAQ;QACvB,YAAY,EAAE,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,MAAM,0CAAE,IAAI,CAAC,GAAG,CAAC;QAClD,UAAU,EAAE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EACzB,UAAU,EACV,yBAAyB,GAAG,EAAE,EAC9B,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,GAAG,KAAK,EAO7B;IACC,OAAO;QACL,IAAI,EAAE,KAAK;QACX,WAAW,CAAC,EAAE,MAAM,EAAE;YACpB,MAAM,CAAC,GAAQ,MAAM,CAAC;YACtB,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;YAChC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;gBACf,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;gBACjC,KAAK,EAAE,QAAQ;gBACf,gBAAgB,EACd,QAAQ,CAAC,QAAQ,CAAC,QAAQ;oBAC1B,IAAI;oBACJ,QAAQ,CAAC,QAAQ,CAAC,QAAQ;oBAC1B,QAAQ,CAAC,QAAQ,CAAC,QAAQ;oBAC1B,QAAQ,CAAC,QAAQ,CAAC,MAAM;aAC3B,CAAC,CAAC;YACH,CAAC,CAAC,IAAI,GAAG,SAAS,IAAI;gBACpB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,CAAC,CAAC;YAEF;;;;;eAKG;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;YAClE,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE;gBAC3B,UAAU,EAAE,OAAO;gBACnB,6FAA6F;gBAC7F,iBAAiB,EAAE,OAAO;gBAC1B,uBAAuB,EAAE,OAAO;gBAChC,qBAAqB,EAAE,SAAS;gBAChC,gBAAgB,EAAE,SAAS;gBAC3B,eAAe,EAAE,GAAG;aACrB,CAAC,CAAC;YAEH,yDAAyD;YACzD,+EAA+E;YAC/E,IAAI,EAAE,CAAC,KAAK,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;YAE1C,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAEzB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM,EAAE;gBAC/C,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE;oBAC3B,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;aAC9B;YAED,yBAAyB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBACvC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC;gBACX,GAAG,EAAE,+CAA+C,UAAU,EAAE;aACjE,CAAC,CAAC;YAEH,IAAI,EAAE,CAAC;QACT,CAAC;QACD,OAAO,CAAC,QAAQ;YACd,IAAI,EAAE,CACJ,SAAS,EACT,QAAQ,EACR,QAAQ;gBACN,CAAC,iCAAM,QAAQ,KAAE,qBAAqB,EAAE,SAAS,IACjD,CAAC,CAAC;gBACE,UAAU,EAAE,SAAS;gBACrB,iBAAiB,EAAE,SAAS;gBAC5B,uBAAuB,EAAE,SAAS;gBAClC,gBAAgB,EAAE,SAAS;aAC5B,CACN,CAAC;QACJ,CAAC;QACD,YAAY,CACV,EACE,QAAQ,EACR,MAAM,EACN,OAAO,EACP,iBAAiB,EACjB,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,QAAQ,EACT,EACD,OAAO,EACP,OAAO;YAEP,MAAM,WAAW,mCACZ,aAAa,CACd,OAAO,EACP,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,QAAQ,CACT,KACD,QAAQ,EACR,cAAc,EAAE,IAAI,IAAI,QAAQ,IAAI,OAAO,CAAC,IAAI,EAChD,KAAK,EAAE,KAAK,GACb,CAAC;YACF,QAAQ,MAAM,EAAE;gBACd,KAAK,OAAO;oBACV,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE;wBAC7B,YAAY,EAAE,SAAS;wBACvB,QAAQ;wBACR,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;wBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;wBACpB,OAAO;qBACR,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE;wBAC3B,QAAQ;wBACR,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;wBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;wBACpB,OAAO;qBACR,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE;wBAC7B,QAAQ;wBACR,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;wBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;wBACpB,OAAO;qBACR,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE;wBAClC,QAAQ;wBACR,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;wBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;wBACpB,OAAO;qBACR,CAAC,CAAC;oBACH,MAAM;gBACR;oBACE,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,MAAM,CAAC,CAAC;oBAC1D,MAAM;aACT;QACH,CAAC;QACD,uGAAuG;QACvG,0CAA0C;QAC1C,yDAAyD;QACzD,wBAAwB;QACxB,iCAAiC;QACjC,sBAAsB;QACtB,8BAA8B;QAC9B,yBAAyB;QACzB,SAAS;QACT,8BAA8B;QAC9B,SAAS;QACT,wCAAwC;QACxC,0BAA0B;QAC1B,uCAAuC;QACvC,YAAY;QACZ,QAAQ;QACR,KAAK;QACL,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO;YAClD,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE;gBAC3B,QAAQ;gBACR,SAAS,EAAE,QAAQ;gBACnB,UAAU,EAAE,KAAK;gBACjB,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QACD,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO;YAC3D,MAAM,KAAK,GAAc,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;;gBAAC,OAAA,iCACjD,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,gBAAgB,CAAC,KACvE,KAAK,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,MAAM,EAC5B,cAAc,EAAE,QAAQ,EACxB,KAAK,EAAE,CAAC,IACR,CAAA;aAAA,CAAC,CAAC;YACJ,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE;gBAChC,YAAY,EAAE,QAAQ;gBACtB,cAAc,EAAE,QAAQ;gBACxB,KAAK;gBACL,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QACD,eAAe,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO;YAChD,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE;gBAC3B,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;gBAC9B,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QACD,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO;YACrC,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;YAClC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO;YACrC,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,kBAAkB,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO;YAClE,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE;gBACjC,aAAa;gBACb,WAAW;gBACX,OAAO;aACR,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
@@ -33,8 +33,7 @@ function getProductData({ product, selectedVariation, useArticleNumberAsId = fal
|
|
33
33
|
}
|
34
34
|
export const gtagTracker = ({ trackingId, additionalGtagTrackingIds = [], currency, brandCustomField, useArticleNumberAsId = false }) => ({
|
35
35
|
name: 'gtag',
|
36
|
-
initBrowser() {
|
37
|
-
const script = `https://www.googletagmanager.com/gtag/js?id=${trackingId}`;
|
36
|
+
initBrowser({ config }) {
|
38
37
|
const w = window;
|
39
38
|
w.dataLayer = w.dataLayer || [];
|
40
39
|
w.dataLayer.push({
|
@@ -49,6 +48,25 @@ export const gtagTracker = ({ trackingId, additionalGtagTrackingIds = [], curren
|
|
49
48
|
w.gtag = function gtag() {
|
50
49
|
w.dataLayer.push(arguments); // I'm not sure why but this dosen't work using rest params. Don't change this line
|
51
50
|
};
|
51
|
+
/**
|
52
|
+
NB:
|
53
|
+
Only cookieless pings will be sent to Google servers.
|
54
|
+
There’s also a wait time of 500 milliseconds before any Google tags are allowed to fire,
|
55
|
+
to give time for the update command to be invoked.
|
56
|
+
*/
|
57
|
+
const consent = config.consentedToTracking ? 'granted' : 'denied';
|
58
|
+
gtag()('consent', 'default', {
|
59
|
+
ad_storage: consent,
|
60
|
+
// https://www.simoahava.com/analytics/consent-mode-google-tags/#restrict-advertising-storage
|
61
|
+
analytics_storage: consent,
|
62
|
+
personalization_storage: consent,
|
63
|
+
functionality_storage: 'granted',
|
64
|
+
security_storage: 'granted',
|
65
|
+
wait_for_update: 500
|
66
|
+
});
|
67
|
+
// NB: This only works when you set ad_storage to denied.
|
68
|
+
// https://developers.google.com/tag-platform/devguides/consent#redact_ads_data
|
69
|
+
gtag()('set', 'ads_data_redaction', true);
|
52
70
|
w.gtag('js', new Date());
|
53
71
|
gtag()('config', trackingId, {
|
54
72
|
currency,
|
@@ -60,9 +78,20 @@ export const gtagTracker = ({ trackingId, additionalGtagTrackingIds = [], curren
|
|
60
78
|
send_page_view: false
|
61
79
|
});
|
62
80
|
});
|
63
|
-
injectScript({
|
81
|
+
injectScript({
|
82
|
+
src: `https://www.googletagmanager.com/gtag/js?id=${trackingId}`
|
83
|
+
});
|
64
84
|
gtag();
|
65
85
|
},
|
86
|
+
consent(consents) {
|
87
|
+
gtag()('consent', 'update', consents
|
88
|
+
? Object.assign(Object.assign({}, consents), { functionality_storage: 'granted' }) : {
|
89
|
+
ad_storage: 'granted',
|
90
|
+
analytics_storage: 'granted',
|
91
|
+
personalization_storage: 'granted',
|
92
|
+
security_storage: 'granted'
|
93
|
+
});
|
94
|
+
},
|
66
95
|
trackProduct({ quantity, action, product, selectedVariation, list, listName, index, category }, context, eventId) {
|
67
96
|
const productData = Object.assign(Object.assign({}, getProductData({
|
68
97
|
product,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"gtag.js","sourceRoot":"","sources":["gtag.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,oDAAoD,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAElF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAE,MAAc,CAAC,IAAI,CAAC;AAExC,SAAS,cAAc,CAAC,EACtB,OAAO,EACP,iBAAiB,EACjB,oBAAoB,GAAG,KAAK,EAC5B,gBAAgB,EAChB,QAAQ,GAAG,EAAE,EAOd;IACC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAClD,IAAI,oBAAoB,EAAE;QACxB,OAAO;YACL,EAAE,EAAE,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,aAAa,KAAI,OAAO,CAAC,aAAa;YAC7D,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,UAAU,EAAE,OAAO,CAAC,aAAa;YACjC,OAAO,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5C,UAAU,EAAE,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,aAAa;YAC5C,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,YAAY,EAAE,OAAO,CAAC,aAAa;YACnC,QAAQ;YACR,KAAK;SACN,CAAC;KACH;SAAM;QACL,2IAA2I;QAC3I,yHAAyH;QACzH,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,OAAO,EAAE,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,aAAa,KAAI,OAAO,CAAC,aAAa;YAClE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,aAAa;YAClC,QAAQ;YACR,KAAK;SACN,CAAC;KACH;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,UAAU,EACV,yBAAyB,GAAG,EAAE,EAC9B,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,GAAG,KAAK,EAO7B,EAAW,EAAE,CAAC,CAAC;IACd,IAAI,EAAE,MAAM;IACZ,WAAW
|
1
|
+
{"version":3,"file":"gtag.js","sourceRoot":"","sources":["gtag.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { Tracker } from './../../trackerRegistry';
|
2
|
+
declare global {
|
3
|
+
interface Window {
|
4
|
+
dataLayer: any[];
|
5
|
+
}
|
6
|
+
}
|
7
|
+
export declare const gtmTracker: ({ containerId, currency, useArticleNumberAsId, brandCustomField }: {
|
8
|
+
containerId: string;
|
9
|
+
currency: string;
|
10
|
+
brandCustomField?: string;
|
11
|
+
useArticleNumberAsId?: boolean;
|
12
|
+
}) => Tracker;
|
@@ -0,0 +1,234 @@
|
|
1
|
+
import { injectScript } from '../../utils/script';
|
2
|
+
import { getBrand } from '@jetshop/core/components/OpenGraph/OpenGraphProductData';
|
3
|
+
import { unSlugify } from '../unslugify';
|
4
|
+
import { breadcrumbsWithoutProduct } from '../../utils/breadcrumbsWithoutProduct';
|
5
|
+
function push(event) {
|
6
|
+
if (window.dataLayer) {
|
7
|
+
if (event.ecommerce) {
|
8
|
+
window.dataLayer.push({ ecommerce: null });
|
9
|
+
}
|
10
|
+
window.dataLayer.push(event);
|
11
|
+
}
|
12
|
+
}
|
13
|
+
function getProductData({ product, selectedVariation, useArticleNumberAsId = false, brandCustomField, category = '' }) {
|
14
|
+
if (useArticleNumberAsId) {
|
15
|
+
return {
|
16
|
+
id: (selectedVariation === null || selectedVariation === void 0 ? void 0 : selectedVariation.articleNumber) || product.articleNumber,
|
17
|
+
productId: product.id,
|
18
|
+
productSKU: product.articleNumber,
|
19
|
+
variant: selectedVariation === null || selectedVariation === void 0 ? void 0 : selectedVariation.values.join('_'),
|
20
|
+
variantSKU: selectedVariation === null || selectedVariation === void 0 ? void 0 : selectedVariation.articleNumber,
|
21
|
+
name: product.name,
|
22
|
+
base_product: product.articleNumber,
|
23
|
+
category,
|
24
|
+
brand: getBrand(product, brandCustomField)
|
25
|
+
};
|
26
|
+
}
|
27
|
+
else {
|
28
|
+
// This is kept as backwards compatibility. Some shops rely on the product id being the internal Jetshop id, instead of the article number.
|
29
|
+
// Changing this could affect the statistics in Google Ads/Merchant/Analytics, so we want the new behaviour to be opt-in.
|
30
|
+
return {
|
31
|
+
id: product.id,
|
32
|
+
variant: selectedVariation
|
33
|
+
? selectedVariation.articleNumber
|
34
|
+
: product.articleNumber,
|
35
|
+
name: product.name,
|
36
|
+
base_product: product.articleNumber,
|
37
|
+
category,
|
38
|
+
brand: getBrand(product, brandCustomField)
|
39
|
+
};
|
40
|
+
}
|
41
|
+
}
|
42
|
+
export const gtmTracker = ({ containerId, currency, useArticleNumberAsId = false, brandCustomField }) => ({
|
43
|
+
name: 'gtm',
|
44
|
+
initBrowser({ config }) {
|
45
|
+
const script = `https://www.googletagmanager.com/gtm.js?id=${containerId}`;
|
46
|
+
const w = window;
|
47
|
+
w.dataLayer = w.dataLayer || [];
|
48
|
+
w.dataLayer.push({
|
49
|
+
'gtm.start': new Date().getTime(),
|
50
|
+
event: 'gtm.js',
|
51
|
+
originalLocation: document.location.protocol +
|
52
|
+
'//' +
|
53
|
+
document.location.hostname +
|
54
|
+
document.location.pathname +
|
55
|
+
document.location.search
|
56
|
+
});
|
57
|
+
const consent = config.consentedToTracking ? 'granted' : 'denied';
|
58
|
+
/**
|
59
|
+
NB:
|
60
|
+
Only cookieless pings will be sent to Google servers.
|
61
|
+
There’s also a wait time of 500 milliseconds before any Google tags are allowed to fire,
|
62
|
+
to give time for the update command to be invoked.
|
63
|
+
*/
|
64
|
+
w.dataLayer.push({
|
65
|
+
event: 'gtm_consent_default',
|
66
|
+
ad_storage: consent,
|
67
|
+
// https://www.simoahava.com/analytics/consent-mode-google-tags/#restrict-advertising-storage
|
68
|
+
analytics_storage: consent,
|
69
|
+
personalization_storage: consent,
|
70
|
+
functionality_storage: 'granted',
|
71
|
+
security_storage: 'granted',
|
72
|
+
wait_for_update: 500
|
73
|
+
});
|
74
|
+
injectScript({ src: script });
|
75
|
+
},
|
76
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
77
|
+
consent() {
|
78
|
+
// Consent updated should be handled from inside GTM
|
79
|
+
},
|
80
|
+
trackProduct({ quantity, action, product, selectedVariation, list, listName, index, category }, context, eventId) {
|
81
|
+
const productData = Object.assign(Object.assign({}, getProductData({
|
82
|
+
product,
|
83
|
+
selectedVariation,
|
84
|
+
useArticleNumberAsId,
|
85
|
+
brandCustomField,
|
86
|
+
category
|
87
|
+
})), { price: (selectedVariation && selectedVariation.price.incVat) ||
|
88
|
+
(product.price && product.price.incVat), quantity, position: index });
|
89
|
+
switch (action) {
|
90
|
+
case 'click':
|
91
|
+
push({
|
92
|
+
event: 'productClick',
|
93
|
+
productIds: product.articleNumber,
|
94
|
+
ecommerce: {
|
95
|
+
click: {
|
96
|
+
actionField: { list: list || listName || context.list },
|
97
|
+
products: [productData]
|
98
|
+
}
|
99
|
+
},
|
100
|
+
eventId
|
101
|
+
});
|
102
|
+
break;
|
103
|
+
case 'view':
|
104
|
+
push({
|
105
|
+
event: 'productDetails',
|
106
|
+
ecommerce: {
|
107
|
+
currencyCode: currency,
|
108
|
+
detail: {
|
109
|
+
products: [productData]
|
110
|
+
}
|
111
|
+
},
|
112
|
+
eventId
|
113
|
+
});
|
114
|
+
break;
|
115
|
+
case 'add':
|
116
|
+
push({
|
117
|
+
event: 'addToCart',
|
118
|
+
productIds: product.articleNumber,
|
119
|
+
ecommerce: {
|
120
|
+
actionField: {
|
121
|
+
list: list || listName || context.list
|
122
|
+
},
|
123
|
+
currencyCode: currency,
|
124
|
+
add: {
|
125
|
+
products: [productData]
|
126
|
+
}
|
127
|
+
},
|
128
|
+
eventId
|
129
|
+
});
|
130
|
+
break;
|
131
|
+
case 'remove':
|
132
|
+
push({
|
133
|
+
event: 'removeFromCart',
|
134
|
+
productIds: product.articleNumber,
|
135
|
+
pageType: 'cart',
|
136
|
+
ecommerce: {
|
137
|
+
currencyCode: currency,
|
138
|
+
remove: {
|
139
|
+
products: [productData]
|
140
|
+
}
|
141
|
+
},
|
142
|
+
eventId
|
143
|
+
});
|
144
|
+
break;
|
145
|
+
default:
|
146
|
+
console.log('Error: Gtag can not track action ' + action);
|
147
|
+
break;
|
148
|
+
}
|
149
|
+
},
|
150
|
+
trackCartCheckout({ cart }, _, eventId) {
|
151
|
+
const items = cart.items.map((item) => {
|
152
|
+
var _a, _b, _c;
|
153
|
+
return (Object.assign(Object.assign({}, getProductData({
|
154
|
+
product: item.product,
|
155
|
+
selectedVariation: item.variant,
|
156
|
+
useArticleNumberAsId,
|
157
|
+
brandCustomField,
|
158
|
+
category: breadcrumbsWithoutProduct((_a = item.product.primaryRoute) === null || _a === void 0 ? void 0 : _a.breadcrumbs) ||
|
159
|
+
unSlugify((_c = (_b = item.product.canonicalCategory) === null || _b === void 0 ? void 0 : _b.primaryRoute) === null || _c === void 0 ? void 0 : _c.path) ||
|
160
|
+
''
|
161
|
+
})), { price: item.total.incVat, quantity: item.quantity }));
|
162
|
+
});
|
163
|
+
push({
|
164
|
+
event: 'checkout',
|
165
|
+
ecommerce: {
|
166
|
+
products: items
|
167
|
+
},
|
168
|
+
eventId
|
169
|
+
});
|
170
|
+
},
|
171
|
+
trackPageView({ pathname, title }, _, eventId) {
|
172
|
+
push({
|
173
|
+
event: 'pageView',
|
174
|
+
pagePath: pathname,
|
175
|
+
pageTitle: title,
|
176
|
+
eventId
|
177
|
+
});
|
178
|
+
},
|
179
|
+
trackList({ listName, products, category }, _, eventId) {
|
180
|
+
const productData = products.map((product, i) => {
|
181
|
+
var _a, _b, _c, _d;
|
182
|
+
return (Object.assign(Object.assign({}, getProductData({
|
183
|
+
product,
|
184
|
+
selectedVariation: null,
|
185
|
+
useArticleNumberAsId,
|
186
|
+
brandCustomField,
|
187
|
+
category: category ||
|
188
|
+
breadcrumbsWithoutProduct((_a = product === null || product === void 0 ? void 0 : product.primaryRoute) === null || _a === void 0 ? void 0 : _a.breadcrumbs) ||
|
189
|
+
unSlugify((_c = (_b = product === null || product === void 0 ? void 0 : product.canonicalCategory) === null || _b === void 0 ? void 0 : _b.primaryRoute) === null || _c === void 0 ? void 0 : _c.path)
|
190
|
+
})), { price: (_d = product.price) === null || _d === void 0 ? void 0 : _d.incVat, position: i, list: listName }));
|
191
|
+
});
|
192
|
+
push({
|
193
|
+
event: 'productList',
|
194
|
+
ecommerce: {
|
195
|
+
currencyCode: currency,
|
196
|
+
impressions: productData
|
197
|
+
},
|
198
|
+
eventId
|
199
|
+
});
|
200
|
+
},
|
201
|
+
trackExperiment({ id, variant }, _, eventId) {
|
202
|
+
push({
|
203
|
+
experiment: `${id}.${variant}`,
|
204
|
+
eventId
|
205
|
+
});
|
206
|
+
},
|
207
|
+
trackUser({ userId }, _, eventId) {
|
208
|
+
push({
|
209
|
+
userId,
|
210
|
+
eventId
|
211
|
+
});
|
212
|
+
},
|
213
|
+
trackLogin(_, __, eventId) {
|
214
|
+
push({
|
215
|
+
event: 'login',
|
216
|
+
eventId
|
217
|
+
});
|
218
|
+
},
|
219
|
+
trackRegister(_, __, eventId) {
|
220
|
+
push({
|
221
|
+
event: 'register',
|
222
|
+
eventId
|
223
|
+
});
|
224
|
+
},
|
225
|
+
trackAddToWishList({ articleNumber, productName }, _, eventId) {
|
226
|
+
push({
|
227
|
+
event: 'addToWishlist',
|
228
|
+
articleNumber,
|
229
|
+
productName,
|
230
|
+
eventId
|
231
|
+
});
|
232
|
+
}
|
233
|
+
});
|
234
|
+
//# sourceMappingURL=gtm.js.map
|