@beworke/pixel 0.1.0-rc.1 → 0.1.0-rc.6

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.
Files changed (156) hide show
  1. package/CHANGELOG.md +260 -4
  2. package/README.md +65 -118
  3. package/RELEASE_CANDIDATE.md +181 -36
  4. package/dist/{StorageFactory-BhpbB6Jj.d.mts → StorageFactory-CPghDPBj.d.mts} +2 -2
  5. package/dist/{StorageFactory-CAkJJqVD.d.ts → StorageFactory-tjfzk57c.d.ts} +2 -2
  6. package/dist/config/index.cjs.js +1 -1
  7. package/dist/config/index.cjs.js.map +1 -1
  8. package/dist/config/index.d.mts +4 -3
  9. package/dist/config/index.d.ts +4 -3
  10. package/dist/config/index.esm.js +1 -1
  11. package/dist/config/index.esm.js.map +1 -1
  12. package/dist/events/index.cjs.js +1 -1
  13. package/dist/events/index.cjs.js.map +1 -1
  14. package/dist/events/index.d.mts +2 -1
  15. package/dist/events/index.d.ts +2 -1
  16. package/dist/events/index.esm.js +1 -1
  17. package/dist/events/index.esm.js.map +1 -1
  18. package/dist/examples/html-script/README.md +24 -2
  19. package/dist/examples/html-script/RELEASE_CANDIDATE.md +20 -6
  20. package/dist/examples/html-script/add-payment-info/README.md +3 -3
  21. package/dist/examples/html-script/add-payment-info/example-add-payment-info-card-autocomplete.html +66 -48
  22. package/dist/examples/html-script/add-payment-info/example-add-payment-info-card-disabled.html +66 -48
  23. package/dist/examples/html-script/add-payment-info/example-add-payment-info-card-fields.html +65 -47
  24. package/dist/examples/html-script/add-payment-info/example-add-payment-info-data-track.html +73 -47
  25. package/dist/examples/html-script/add-payment-info/example-add-payment-info-dedupe.html +65 -47
  26. package/dist/examples/html-script/add-payment-info/example-add-payment-info-manual.html +56 -47
  27. package/dist/examples/html-script/add-payment-info/example-add-payment-info-rules-card.html +65 -47
  28. package/dist/examples/html-script/add-payment-info/example-add-payment-info-security.html +65 -47
  29. package/dist/examples/html-script/add-to-cart/README.md +3 -3
  30. package/dist/examples/html-script/add-to-cart/example-add-to-cart-attribute.html +90 -70
  31. package/dist/examples/html-script/add-to-cart/example-add-to-cart-auto.html +103 -81
  32. package/dist/examples/html-script/add-to-cart/example-add-to-cart-click.html +101 -78
  33. package/dist/examples/html-script/add-to-cart/example-add-to-cart-dedupe.html +90 -70
  34. package/dist/examples/html-script/add-to-cart/example-add-to-cart-manual.html +81 -67
  35. package/dist/examples/html-script/add-to-cart/example-add-to-cart-order-bump.html +90 -70
  36. package/dist/examples/html-script/add-to-cart/example-add-to-cart-text.html +104 -81
  37. package/dist/examples/html-script/behavior/example-behavior-engagement.html +489 -0
  38. package/dist/examples/html-script/behavior/example-behavior-heartbeat.html +350 -0
  39. package/dist/examples/html-script/behavior/example-behavior-runtime-intelligence.html +433 -0
  40. package/dist/examples/html-script/behavior/example-behavior-viewport.html +397 -0
  41. package/dist/examples/html-script/{example-behavior.html → behavior/example-behavior.html} +23 -17
  42. package/dist/examples/html-script/example-checkout-commerce.html +825 -0
  43. package/dist/examples/html-script/example-integration.html +5 -5
  44. package/dist/examples/html-script/example-landing-commerce.html +380 -0
  45. package/dist/examples/html-script/example-runtime-diagnostics.html +108 -0
  46. package/dist/examples/html-script/example-transport.html +5 -5
  47. package/dist/examples/html-script/full-funnel/README.md +64 -0
  48. package/dist/examples/html-script/full-funnel/checkout.html +116 -0
  49. package/dist/examples/html-script/full-funnel/downsell.html +58 -0
  50. package/dist/examples/html-script/full-funnel/landing.html +99 -0
  51. package/dist/examples/html-script/full-funnel/thank-you.html +85 -0
  52. package/dist/examples/html-script/full-funnel/upsell.html +64 -0
  53. package/dist/examples/html-script/initiate-checkout/README.md +6 -6
  54. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-attribute.html +94 -74
  55. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-auto.html +102 -80
  56. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-click.html +103 -80
  57. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-manual.html +86 -72
  58. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-snapshot.html +95 -75
  59. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-submit.html +103 -83
  60. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-text.html +105 -82
  61. package/dist/examples/html-script/lead/README.md +9 -7
  62. package/dist/examples/html-script/lead/example-lead-trigger-attribute.html +67 -47
  63. package/dist/examples/html-script/lead/example-lead-trigger-auto.html +78 -56
  64. package/dist/examples/html-script/lead/example-lead-trigger-click.html +78 -55
  65. package/dist/examples/html-script/release-candidate.html +187 -76
  66. package/dist/examples/html-script/remove-from-cart/README.md +1 -1
  67. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-attribute.html +93 -73
  68. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-css.html +93 -73
  69. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-dedupe.html +93 -73
  70. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-manual.html +84 -70
  71. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-multi.html +94 -74
  72. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-state.html +95 -75
  73. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-text.html +98 -76
  74. package/dist/examples/html-script/search/README.md +1 -1
  75. package/dist/examples/html-script/search/example-search-attribute.html +66 -51
  76. package/dist/examples/html-script/search/example-search-button-sync.html +66 -51
  77. package/dist/examples/html-script/search/example-search-dedupe.html +66 -51
  78. package/dist/examples/html-script/search/example-search-input.html +67 -51
  79. package/dist/examples/html-script/search/example-search-manual.html +57 -48
  80. package/dist/examples/html-script/search/example-search-submit.html +66 -51
  81. package/dist/examples/html-script/search/example-search-text.html +71 -51
  82. package/dist/examples/html-script/url-context/example-url-context-allowed-domains.html +63 -0
  83. package/dist/examples/html-script/url-context/example-url-context-landing.html +70 -0
  84. package/dist/examples/html-script/url-context/example-url-context-upsell.html +67 -0
  85. package/dist/examples/html-script/url-context/example-url-context.html +171 -0
  86. package/dist/examples/html-script/view-content/README.md +1 -1
  87. package/dist/examples/html-script/view-content/example-view-content-attribute.html +85 -70
  88. package/dist/examples/html-script/view-content/example-view-content-css.html +85 -70
  89. package/dist/examples/html-script/view-content/example-view-content-dedupe.html +85 -70
  90. package/dist/examples/html-script/view-content/example-view-content-empty.html +85 -70
  91. package/dist/examples/html-script/view-content/example-view-content-manual.html +76 -67
  92. package/dist/examples/html-script/view-content/example-view-content-product-card.html +85 -70
  93. package/dist/examples/html-script/view-content/example-view-content-text.html +90 -73
  94. package/dist/examples/v2/README.md +4 -1
  95. package/dist/{index-DUfFzniE.d.ts → index-CQAyT5Od.d.ts} +170 -3
  96. package/dist/{index-DUfFzniE.d.mts → index-JlKPz4pp.d.mts} +170 -3
  97. package/dist/index.cjs.js +1 -1
  98. package/dist/index.cjs.js.map +1 -1
  99. package/dist/index.d.mts +435 -12
  100. package/dist/index.d.ts +435 -12
  101. package/dist/index.esm.js +1 -1
  102. package/dist/index.esm.js.map +1 -1
  103. package/dist/{pixel-CbeF25mD.d.mts → pixel-BxZZx8l5.d.ts} +248 -72
  104. package/dist/{pixel-CbeF25mD.d.ts → pixel-CKc4OQUx.d.mts} +248 -72
  105. package/dist/{pixel-default-config-1VgLFOiL.d.mts → pixel-default-config-CJl-eypl.d.mts} +1 -1
  106. package/dist/{pixel-default-config-Bxb-Vdd8.d.ts → pixel-default-config-aAOujzwp.d.ts} +1 -1
  107. package/dist/runtime/index.cjs.js +1 -1
  108. package/dist/runtime/index.cjs.js.map +1 -1
  109. package/dist/runtime/index.d.mts +19 -26
  110. package/dist/runtime/index.d.ts +19 -26
  111. package/dist/runtime/index.esm.js +1 -1
  112. package/dist/runtime/index.esm.js.map +1 -1
  113. package/dist/services/index.cjs.js +1 -1
  114. package/dist/services/index.cjs.js.map +1 -1
  115. package/dist/services/index.d.mts +14 -6
  116. package/dist/services/index.d.ts +14 -6
  117. package/dist/services/index.esm.js +1 -1
  118. package/dist/services/index.esm.js.map +1 -1
  119. package/dist/types-BP8dz1gP.d.mts +19 -0
  120. package/dist/types-C75pQP31.d.ts +19 -0
  121. package/dist/types-DMhzHSVC.d.mts +293 -0
  122. package/dist/types-D_SsCur9.d.ts +293 -0
  123. package/dist/url-context-BjAsQoVl.d.mts +85 -0
  124. package/dist/url-context-BjAsQoVl.d.ts +85 -0
  125. package/dist/v2/global.global.js +1 -1
  126. package/dist/v2/global.global.js.map +1 -1
  127. package/dist/v2/index.cjs.js +1 -1
  128. package/dist/v2/index.cjs.js.map +1 -1
  129. package/dist/v2/index.d.mts +8 -6
  130. package/dist/v2/index.d.ts +8 -6
  131. package/dist/v2/index.esm.js +1 -1
  132. package/dist/v2/index.esm.js.map +1 -1
  133. package/docs/public/README.md +75 -0
  134. package/docs/public/api/exports.md +47 -0
  135. package/docs/public/api/pixel.md +65 -0
  136. package/docs/public/configuration/commerce.md +44 -0
  137. package/docs/public/configuration/modules.md +66 -0
  138. package/docs/public/configuration/overview.md +66 -0
  139. package/docs/public/events/catalog.md +65 -0
  140. package/docs/public/getting-started/installation.md +75 -0
  141. package/docs/public/getting-started/quick-start.md +77 -0
  142. package/docs/public/getting-started/react-nextjs.md +55 -0
  143. package/docs/public/getting-started/script-tag.md +57 -0
  144. package/docs/public/guides/funnel-checkout.md +52 -0
  145. package/docs/public/guides/funnel-downsell.md +53 -0
  146. package/docs/public/guides/funnel-full.md +64 -0
  147. package/docs/public/guides/funnel-landing.md +68 -0
  148. package/docs/public/guides/funnel-thank-you.md +48 -0
  149. package/docs/public/guides/funnel-upsell.md +72 -0
  150. package/docs/public/limitations.md +32 -0
  151. package/docs/public/privacy/limitations.md +33 -0
  152. package/docs/public/release-candidate/validation.md +37 -0
  153. package/docs/public/troubleshooting.md +55 -0
  154. package/package.json +13 -1
  155. package/dist/types-CTpRvFKZ.d.ts +0 -71
  156. package/dist/types-DGlBdsAy.d.mts +0 -71
@@ -0,0 +1,171 @@
1
+ <!doctype html>
2
+ <html lang="pt-BR">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Pixel v2 — UrlContext (15A)</title>
7
+ <style>
8
+ body {
9
+ font-family: system-ui, sans-serif;
10
+ max-width: 880px;
11
+ margin: 2rem auto;
12
+ padding: 0 1rem;
13
+ line-height: 1.45;
14
+ color: #0f172a;
15
+ }
16
+ .card {
17
+ border: 1px solid #e2e8f0;
18
+ border-radius: 12px;
19
+ padding: 1rem;
20
+ margin: 1rem 0;
21
+ background: #fff;
22
+ }
23
+ a, button {
24
+ display: inline-block;
25
+ margin: 0.35rem 0.35rem 0.35rem 0;
26
+ padding: 0.45rem 0.75rem;
27
+ border-radius: 8px;
28
+ border: 1px solid #cbd5e1;
29
+ background: #f8fafc;
30
+ color: inherit;
31
+ text-decoration: none;
32
+ font: inherit;
33
+ cursor: pointer;
34
+ }
35
+ button.primary { background: #0f766e; color: #fff; border-color: #0f766e; }
36
+ pre {
37
+ background: #0f172a;
38
+ color: #e2e8f0;
39
+ padding: 0.75rem;
40
+ border-radius: 8px;
41
+ font-size: 0.75rem;
42
+ overflow: auto;
43
+ max-height: 280px;
44
+ }
45
+ .hint { color: #64748b; font-size: 0.9rem; }
46
+ code { font-size: 0.85em; }
47
+ </style>
48
+ </head>
49
+ <body>
50
+ <h1>UrlContext — Core (Etapa 15A)</h1>
51
+ <p class="hint">
52
+ <code>sid</code> público da URL <strong>não</strong> é o <code>session_id</code> interno do Pixel.
53
+ <code>order_id</code> pode ir na URL; token de pagamento fica em cookie HttpOnly no backend.
54
+ Decoration: relativa (<code>/checkout#payment</code>), absoluta e exclusões (mailto, download, social).
55
+ </p>
56
+
57
+ <div class="card">
58
+ <h2>Links</h2>
59
+ <a id="checkout-link" href="https://checkout.bemony.com/pay">Ir para checkout</a>
60
+ <a id="checkout-relative" href="/checkout#payment">Relativo + hash (vira ?sid=#payment)</a>
61
+ <a id="upsell-accept-link" href="https://security.bemony.com/upsell/accept">Sim, quero o upsell</a>
62
+ <a id="upsell-decline-link" href="https://security.bemony.com/upsell/decline">Não, obrigado</a>
63
+ <a id="external-link" href="https://facebook.com/test">Link externo (ignorado)</a>
64
+ <a id="ignored-link" href="https://checkout.bemony.com/pay" data-no-url-context>Ignorado por selector</a>
65
+ <a id="download-link" href="/file.pdf" download>Download ignorado</a>
66
+ <a id="mailto-link" href="mailto:test@example.com">Mailto ignorado</a>
67
+ </div>
68
+ <div class="card">
69
+ <h2>Ações</h2>
70
+ <button class="primary" id="btn-init">Init Pixel</button>
71
+ <button id="btn-snapshot">Log snapshot UrlContext</button>
72
+ <button id="btn-ic">Track INITIATE_CHECKOUT</button>
73
+ </div>
74
+
75
+ <div class="card">
76
+ <h2>Debug</h2>
77
+ <pre id="out">Aguardando init…</pre>
78
+ </div>
79
+
80
+ <script src="../../dist/v2/global.global.js"></script>
81
+ <script>
82
+ (function () {
83
+ var out = document.getElementById('out');
84
+ var pixel = null;
85
+
86
+ function log(label, data) {
87
+ var relative = document.getElementById('checkout-relative');
88
+ out.textContent =
89
+ label +
90
+ '\n' +
91
+ JSON.stringify(data, null, 2) +
92
+ '\n\nhref=' +
93
+ location.href +
94
+ '\ncheckout href=' +
95
+ document.getElementById('checkout-link').href +
96
+ '\nrelative+hash=' +
97
+ (relative ? relative.getAttribute('href') : '');
98
+ if (window.console && console.debug) {
99
+ console.debug('[UrlContext demo]', label, data);
100
+ }
101
+ }
102
+ document.getElementById('btn-init').onclick = async function () {
103
+ var PixelV2 = window.PixelV2;
104
+ if (!PixelV2) {
105
+ log('ERROR', { message: 'window.PixelV2 missing — npm run build' });
106
+ return;
107
+ }
108
+ var Pixel = PixelV2.Pixel;
109
+ var DEFAULT_PIXEL_CONFIG = PixelV2.DEFAULT_PIXEL_CONFIG;
110
+
111
+ if (pixel) await pixel.destroy();
112
+
113
+ pixel = new Pixel({
114
+ ...DEFAULT_PIXEL_CONFIG,
115
+ app: { ...DEFAULT_PIXEL_CONFIG.app, debug: true },
116
+ identity: {
117
+ ...DEFAULT_PIXEL_CONFIG.identity,
118
+ pixelId: 'pix_url_context_demo',
119
+ },
120
+ modules: {
121
+ ...DEFAULT_PIXEL_CONFIG.modules,
122
+ core: {
123
+ ...DEFAULT_PIXEL_CONFIG.modules.core,
124
+ urlContext: {
125
+ enabled: true,
126
+ linkDecoration: {
127
+ enabled: true,
128
+ strategy: 'both',
129
+ allowedDomains: [
130
+ 'checkout.bemony.com',
131
+ 'security.bemony.com',
132
+ ],
133
+ },
134
+ },
135
+ },
136
+ conversion: {
137
+ ...DEFAULT_PIXEL_CONFIG.modules.conversion,
138
+ enabled: true,
139
+ },
140
+ transport: {
141
+ ...DEFAULT_PIXEL_CONFIG.modules.transport,
142
+ enabled: false,
143
+ },
144
+ integrations: {
145
+ ...DEFAULT_PIXEL_CONFIG.modules.integrations,
146
+ enabled: false,
147
+ },
148
+ },
149
+ });
150
+
151
+ await pixel.init();
152
+ var snap = pixel.getDebugServices().urlContext.getSnapshot();
153
+ log('UrlContext ready', snap);
154
+ };
155
+
156
+ document.getElementById('btn-snapshot').onclick = function () {
157
+ if (!pixel) return;
158
+ log('snapshot', pixel.getDebugServices().urlContext.getSnapshot());
159
+ };
160
+
161
+ document.getElementById('btn-ic').onclick = function () {
162
+ if (!pixel) return;
163
+ pixel.initiateCheckout();
164
+ log('INITIATE_CHECKOUT disparado — ver query_params/url_context no Transport/debug', {
165
+ snapshot: pixel.getDebugServices().urlContext.getSnapshot(),
166
+ });
167
+ };
168
+ })();
169
+ </script>
170
+ </body>
171
+ </html>
@@ -4,7 +4,7 @@ Cada HTML valida **um** comportamento. Abra um de cada vez.
4
4
 
5
5
  ## Como a SDK funciona
6
6
 
7
- `viewContent` usa `ConfiguredAutoDetectorConfig` (**sem** `selectorForm`).
7
+ `viewContent` usa `ConfiguredAutoDetectorConfig` (**sem** source `type: form`).
8
8
 
9
9
  | Caminho | Detalhe |
10
10
  |---------|---------|
@@ -203,10 +203,19 @@ code { font-size: 0.85em; }
203
203
 
204
204
  function viewContentDetectorConfig() {
205
205
  return {
206
- enabled: true,
207
- selector: ['[data-track="view_content"]'],
208
- selectorType: 'css',
209
- };
206
+ enabled: true,
207
+ sources: [
208
+ {
209
+ name: 'viewContent-selector',
210
+ type: 'selector',
211
+ selector: [
212
+ '[data-track=\'view_content\']'
213
+ ],
214
+ selectorType: 'css',
215
+ trigger: 'click'
216
+ }
217
+ ]
218
+ };
210
219
  }
211
220
 
212
221
  function buildConfig() {
@@ -225,6 +234,64 @@ code { font-size: 0.85em; }
225
234
  timeoutMs: 10000,
226
235
  },
227
236
  identity: { ...base.identity, pixelId: PIXEL_ID },
237
+ commerce: {
238
+ enabled: true,
239
+ currency: 'BRL',
240
+ catalog: {
241
+ products: [
242
+ {
243
+ id: 'main_offer',
244
+ name: 'Oferta Principal',
245
+ type: 'main',
246
+ price: 197,
247
+ currency: 'BRL',
248
+ quantity: 1,
249
+ },
250
+ {
251
+ id: 'sku_shoes_01',
252
+ name: 'Tênis Runner',
253
+ type: 'main',
254
+ price: 299,
255
+ currency: 'BRL',
256
+ quantity: 1,
257
+ },
258
+ ],
259
+ },
260
+ cart: {
261
+ mode: 'single_product',
262
+ initialItems: [],
263
+ calculateValueFrom: 'cart',
264
+ allowDynamicItems: true,
265
+ },
266
+ mappings: {
267
+ attributes: {
268
+ productId: ['data-product-id', 'data-sku', 'data-content-id', 'data-offer-id'],
269
+ productName: ['data-product-name', 'data-name'],
270
+ price: ['data-product-price', 'data-price', 'data-value'],
271
+ quantity: ['data-quantity', 'data-qty'],
272
+ currency: ['data-currency'],
273
+ },
274
+ fields: {
275
+ productId: ['productId', 'contentId', 'sku'],
276
+ productName: ['productName', 'name'],
277
+ price: ['price', 'value'],
278
+ quantity: ['quantity'],
279
+ currency: ['currency'],
280
+ email: ['email'],
281
+ phone: ['phone'],
282
+ },
283
+ },
284
+ enrichment: {
285
+ pageView: { enabled: false, source: 'cart' },
286
+ viewContent: { enabled: true, source: 'event_or_cart' },
287
+ lead: { enabled: false, source: 'event_or_cart' },
288
+ addToCart: { enabled: true, source: 'event_or_cart' },
289
+ removeFromCart: { enabled: true, source: 'event_or_cart' },
290
+ initiateCheckout: { enabled: true, source: 'cart' },
291
+ addPaymentInfo: { enabled: true, source: 'cart' },
292
+ purchase: { enabled: true, source: 'cart' },
293
+ }
294
+ },
228
295
  modules: {
229
296
  ...base.modules,
230
297
  core: {
@@ -286,79 +353,27 @@ code { font-size: 0.85em; }
286
353
  integrations: { ...base.modules.integrations, enabled: false },
287
354
  conversion: {
288
355
  enabled: true,
289
- commerce: {
290
- currency: 'BRL',
291
- catalog: {
292
- products: [
293
- {
294
- id: 'main_offer',
295
- name: 'Oferta Principal',
296
- type: 'main',
297
- price: 197,
298
- currency: 'BRL',
299
- quantity: 1,
300
- },
301
- {
302
- id: 'sku_shoes_01',
303
- name: 'Tênis Runner',
304
- type: 'main',
305
- price: 299,
306
- currency: 'BRL',
307
- quantity: 1,
308
- },
309
- ],
310
- },
311
- checkout: {
312
- mode: 'single_product',
313
- selectedItems: [],
314
- calculateValueFrom: 'selected_items',
315
- allowDynamicItems: true,
316
- },
317
- mappings: {
318
- attributes: {
319
- productId: ['data-product-id', 'data-sku', 'data-content-id', 'data-offer-id'],
320
- productName: ['data-product-name', 'data-name'],
321
- price: ['data-product-price', 'data-price', 'data-value'],
322
- quantity: ['data-quantity', 'data-qty'],
323
- currency: ['data-currency'],
324
- },
325
- fields: {
326
- productId: ['productId', 'contentId', 'sku'],
327
- productName: ['productName', 'name'],
328
- price: ['price', 'value'],
329
- quantity: ['quantity'],
330
- currency: ['currency'],
331
- email: ['email'],
332
- phone: ['phone'],
333
- },
334
- },
335
- },
336
356
  manual: {
337
357
  pageView: { enabled: false },
338
- purchase: { enabled: false },
339
- lead: { enabled: false },
340
- addToCart: { enabled: false },
341
- removeFromCart: { enabled: false },
342
- initiateCheckout: { enabled: false },
343
- addPaymentInfo: { enabled: false },
344
- search: { enabled: false },
358
+ purchase: { enabled: false, sources: [] },
359
+ lead: { enabled: false, sources: [] },
360
+ addToCart: { enabled: false, sources: [] },
361
+ removeFromCart: { enabled: false, sources: [] },
362
+ initiateCheckout: { enabled: false, sources: [] },
363
+ addPaymentInfo: { enabled: false, sources: [] },
364
+ search: { enabled: false, sources: [] },
345
365
  viewContent: { enabled: true },
346
366
  },
347
367
  auto: {
348
368
  enabled: true,
349
369
  detectors: {
350
- lead: { enabled: false },
351
- purchase: { enabled: false },
352
- addToCart: { enabled: false },
353
- removeFromCart: { enabled: false },
354
- initiateCheckout: { enabled: false },
355
- addPaymentInfo: {
356
- enabled: false,
357
- paymentMethod: 'CREDIT_CARD',
358
- cardDetection: false,
359
- autoDispatch: false,
360
- },
361
- search: { enabled: false },
370
+ lead: { enabled: false, sources: [] },
371
+ purchase: { enabled: false, sources: [] },
372
+ addToCart: { enabled: false, sources: [] },
373
+ removeFromCart: { enabled: false, sources: [] },
374
+ initiateCheckout: { enabled: false, sources: [] },
375
+ addPaymentInfo: { enabled: false, sources: [] },
376
+ search: { enabled: false, sources: [] },
362
377
  viewContent: viewContentDetectorConfig(),
363
378
  },
364
379
  },
@@ -182,10 +182,19 @@ code { font-size: 0.85em; }
182
182
 
183
183
  function viewContentDetectorConfig() {
184
184
  return {
185
- enabled: true,
186
- selector: ['.view-content'],
187
- selectorType: 'css',
188
- };
185
+ enabled: true,
186
+ sources: [
187
+ {
188
+ name: 'viewContent-selector',
189
+ type: 'selector',
190
+ selector: [
191
+ '.view-content'
192
+ ],
193
+ selectorType: 'css',
194
+ trigger: 'click'
195
+ }
196
+ ]
197
+ };
189
198
  }
190
199
 
191
200
  function buildConfig() {
@@ -204,6 +213,64 @@ code { font-size: 0.85em; }
204
213
  timeoutMs: 10000,
205
214
  },
206
215
  identity: { ...base.identity, pixelId: PIXEL_ID },
216
+ commerce: {
217
+ enabled: true,
218
+ currency: 'BRL',
219
+ catalog: {
220
+ products: [
221
+ {
222
+ id: 'main_offer',
223
+ name: 'Oferta Principal',
224
+ type: 'main',
225
+ price: 197,
226
+ currency: 'BRL',
227
+ quantity: 1,
228
+ },
229
+ {
230
+ id: 'sku_shoes_01',
231
+ name: 'Tênis Runner',
232
+ type: 'main',
233
+ price: 299,
234
+ currency: 'BRL',
235
+ quantity: 1,
236
+ },
237
+ ],
238
+ },
239
+ cart: {
240
+ mode: 'single_product',
241
+ initialItems: [],
242
+ calculateValueFrom: 'cart',
243
+ allowDynamicItems: true,
244
+ },
245
+ mappings: {
246
+ attributes: {
247
+ productId: ['data-product-id', 'data-sku', 'data-content-id', 'data-offer-id'],
248
+ productName: ['data-product-name', 'data-name'],
249
+ price: ['data-product-price', 'data-price', 'data-value'],
250
+ quantity: ['data-quantity', 'data-qty'],
251
+ currency: ['data-currency'],
252
+ },
253
+ fields: {
254
+ productId: ['productId', 'contentId', 'sku'],
255
+ productName: ['productName', 'name'],
256
+ price: ['price', 'value'],
257
+ quantity: ['quantity'],
258
+ currency: ['currency'],
259
+ email: ['email'],
260
+ phone: ['phone'],
261
+ },
262
+ },
263
+ enrichment: {
264
+ pageView: { enabled: false, source: 'cart' },
265
+ viewContent: { enabled: true, source: 'event_or_cart' },
266
+ lead: { enabled: false, source: 'event_or_cart' },
267
+ addToCart: { enabled: true, source: 'event_or_cart' },
268
+ removeFromCart: { enabled: true, source: 'event_or_cart' },
269
+ initiateCheckout: { enabled: true, source: 'cart' },
270
+ addPaymentInfo: { enabled: true, source: 'cart' },
271
+ purchase: { enabled: true, source: 'cart' },
272
+ }
273
+ },
207
274
  modules: {
208
275
  ...base.modules,
209
276
  core: {
@@ -265,79 +332,27 @@ code { font-size: 0.85em; }
265
332
  integrations: { ...base.modules.integrations, enabled: false },
266
333
  conversion: {
267
334
  enabled: true,
268
- commerce: {
269
- currency: 'BRL',
270
- catalog: {
271
- products: [
272
- {
273
- id: 'main_offer',
274
- name: 'Oferta Principal',
275
- type: 'main',
276
- price: 197,
277
- currency: 'BRL',
278
- quantity: 1,
279
- },
280
- {
281
- id: 'sku_shoes_01',
282
- name: 'Tênis Runner',
283
- type: 'main',
284
- price: 299,
285
- currency: 'BRL',
286
- quantity: 1,
287
- },
288
- ],
289
- },
290
- checkout: {
291
- mode: 'single_product',
292
- selectedItems: [],
293
- calculateValueFrom: 'selected_items',
294
- allowDynamicItems: true,
295
- },
296
- mappings: {
297
- attributes: {
298
- productId: ['data-product-id', 'data-sku', 'data-content-id', 'data-offer-id'],
299
- productName: ['data-product-name', 'data-name'],
300
- price: ['data-product-price', 'data-price', 'data-value'],
301
- quantity: ['data-quantity', 'data-qty'],
302
- currency: ['data-currency'],
303
- },
304
- fields: {
305
- productId: ['productId', 'contentId', 'sku'],
306
- productName: ['productName', 'name'],
307
- price: ['price', 'value'],
308
- quantity: ['quantity'],
309
- currency: ['currency'],
310
- email: ['email'],
311
- phone: ['phone'],
312
- },
313
- },
314
- },
315
335
  manual: {
316
336
  pageView: { enabled: false },
317
- purchase: { enabled: false },
318
- lead: { enabled: false },
319
- addToCart: { enabled: false },
320
- removeFromCart: { enabled: false },
321
- initiateCheckout: { enabled: false },
322
- addPaymentInfo: { enabled: false },
323
- search: { enabled: false },
337
+ purchase: { enabled: false, sources: [] },
338
+ lead: { enabled: false, sources: [] },
339
+ addToCart: { enabled: false, sources: [] },
340
+ removeFromCart: { enabled: false, sources: [] },
341
+ initiateCheckout: { enabled: false, sources: [] },
342
+ addPaymentInfo: { enabled: false, sources: [] },
343
+ search: { enabled: false, sources: [] },
324
344
  viewContent: { enabled: true },
325
345
  },
326
346
  auto: {
327
347
  enabled: true,
328
348
  detectors: {
329
- lead: { enabled: false },
330
- purchase: { enabled: false },
331
- addToCart: { enabled: false },
332
- removeFromCart: { enabled: false },
333
- initiateCheckout: { enabled: false },
334
- addPaymentInfo: {
335
- enabled: false,
336
- paymentMethod: 'CREDIT_CARD',
337
- cardDetection: false,
338
- autoDispatch: false,
339
- },
340
- search: { enabled: false },
349
+ lead: { enabled: false, sources: [] },
350
+ purchase: { enabled: false, sources: [] },
351
+ addToCart: { enabled: false, sources: [] },
352
+ removeFromCart: { enabled: false, sources: [] },
353
+ initiateCheckout: { enabled: false, sources: [] },
354
+ addPaymentInfo: { enabled: false, sources: [] },
355
+ search: { enabled: false, sources: [] },
341
356
  viewContent: viewContentDetectorConfig(),
342
357
  },
343
358
  },