11import type {
22 InsightsClient ,
3- InsightsEvent ,
43 Init ,
54 InsightsEventObjectData ,
5+ InsightsAdditionalEventParams ,
66} from 'search-insights' ;
7+ import type {
8+ InsightsSearchClickEvent ,
9+ InsightsClickObjectIDsEvent ,
10+ InsightsClickFiltersEvent ,
11+ } from '../node_modules/search-insights/dist/click' ;
12+ import type {
13+ InsightsSearchConversionEvent ,
14+ InsightsSearchConversionObjectIDsEvent ,
15+ InsightsSearchConversionFiltersEvent ,
16+ } from '../node_modules/search-insights/dist/conversion' ;
17+ import type {
18+ InsightsSearchViewObjectIDsEvent ,
19+ InsightsSearchViewFiltersEvent ,
20+ } from '../node_modules/search-insights/dist/view' ;
721import { devDependencies , version } from '../package.json' ;
822
923const log = require ( 'logToConsole' ) ;
@@ -125,6 +139,18 @@ function transformObjectData(
125139 } ) ;
126140}
127141
142+ function getConvertedObjectIDsAfterSearchMethod ( subtype : GtmEventSubtype ) {
143+ if ( subtype === 'addToCart' ) return 'addedToCartObjectIDsAfterSearch' ;
144+ if ( subtype === 'purchase' ) return 'purchasedObjectIDsAfterSearch' ;
145+ return 'convertedObjectIDsAfterSearch' ;
146+ }
147+
148+ function getConvertedObjectIDsMethod ( subtype : GtmEventSubtype ) {
149+ if ( subtype === 'addToCart' ) return 'addedToCartObjectIDs' ;
150+ if ( subtype === 'purchase' ) return 'purchasedObjectIDs' ;
151+ return 'convertedObjectIDs' ;
152+ }
153+
128154function getLibraryURL ( useIIFE : boolean ) {
129155 return (
130156 INSIGHTS_LIBRARY_URL +
@@ -291,23 +317,17 @@ switch (data.method) {
291317 break ;
292318 }
293319
294- const payload : InsightsEvent = {
295- eventType : 'view' ,
320+ const payload : InsightsSearchViewObjectIDsEvent = {
296321 eventName : data . eventName ,
297322 index : data . index ,
298323 objectIDs : formatValueToList ( data . objectIDs ) ,
299- objectData : transformObjectData ( data . objectData ) ,
300324 userToken : data . userToken ,
301325 authenticatedUserToken : data . authenticatedUserToken ,
302326 } ;
303- const chunks = chunkPayload (
304- payload ,
305- [ 'objectIDs' , 'objectData' ] ,
306- MAX_OBJECT_IDS
307- ) ;
327+ const chunks = chunkPayload ( payload , [ 'objectIDs' ] , MAX_OBJECT_IDS ) ;
308328
309- logger ( 'sendEvents ' , chunks ) ;
310- aa ( 'sendEvents ' , chunks ) ;
329+ logger ( 'viewedObjectIDs ' , chunks ) ;
330+ chunks . forEach ( ( chunk ) => aa ( 'viewedObjectIDs ' , chunk ) ) ;
311331 data . gtmOnSuccess ( ) ;
312332 break ;
313333 }
@@ -319,25 +339,23 @@ switch (data.method) {
319339 break ;
320340 }
321341
322- const payload : InsightsEvent = {
323- eventType : 'click' ,
342+ const payload : InsightsSearchClickEvent = {
324343 eventName : data . eventName ,
325344 index : data . index ,
326345 objectIDs : formatValueToList ( data . objectIDs ) ,
327- objectData : transformObjectData ( data . objectData ) ,
328346 positions : formatValueToList ( data . positions ) . map ( makeInteger ) ,
329347 queryID : data . queryID ,
330348 userToken : data . userToken ,
331349 authenticatedUserToken : data . authenticatedUserToken ,
332350 } ;
333351 const chunks = chunkPayload (
334352 payload ,
335- [ 'objectIDs' , 'objectData' , ' positions'] ,
353+ [ 'objectIDs' , 'positions' ] ,
336354 MAX_OBJECT_IDS
337355 ) ;
338356
339- logger ( 'sendEvents ' , chunks ) ;
340- aa ( 'sendEvents ' , chunks ) ;
357+ logger ( 'clickedObjectIDsAfterSearch ' , chunks ) ;
358+ chunks . forEach ( ( chunk ) => aa ( 'clickedObjectIDsAfterSearch ' , chunk ) ) ;
341359 data . gtmOnSuccess ( ) ;
342360 break ;
343361 }
@@ -349,24 +367,17 @@ switch (data.method) {
349367 break ;
350368 }
351369
352- const payload : InsightsEvent = {
353- eventType : 'click' ,
370+ const payload : InsightsClickObjectIDsEvent = {
354371 eventName : data . eventName ,
355372 index : data . index ,
356- queryID : data . queryID ,
357373 objectIDs : formatValueToList ( data . objectIDs ) ,
358- objectData : transformObjectData ( data . objectData ) ,
359374 userToken : data . userToken ,
360375 authenticatedUserToken : data . authenticatedUserToken ,
361376 } ;
362- const chunks = chunkPayload (
363- payload ,
364- [ 'objectIDs' , 'objectData' ] ,
365- MAX_OBJECT_IDS
366- ) ;
377+ const chunks = chunkPayload ( payload , [ 'objectIDs' ] , MAX_OBJECT_IDS ) ;
367378
368- logger ( 'sendEvents ' , chunks ) ;
369- aa ( 'sendEvents ' , chunks ) ;
379+ logger ( 'clickedObjectIDs ' , chunks ) ;
380+ chunks . forEach ( ( chunk ) => aa ( 'clickedObjectIDs ' , chunk ) ) ;
370381 data . gtmOnSuccess ( ) ;
371382 break ;
372383 }
@@ -378,8 +389,7 @@ switch (data.method) {
378389 break ;
379390 }
380391
381- const payload : InsightsEvent = {
382- eventType : 'click' ,
392+ const payload : InsightsClickFiltersEvent = {
383393 eventName : data . eventName ,
384394 filters : formatValueToList ( data . filters ) ,
385395 index : data . index ,
@@ -388,8 +398,8 @@ switch (data.method) {
388398 } ;
389399 const chunks = chunkPayload ( payload , [ 'filters' ] , MAX_FILTERS ) ;
390400
391- logger ( 'sendEvents ' , chunks ) ;
392- aa ( 'sendEvents ' , chunks ) ;
401+ logger ( 'clickedFilters ' , chunks ) ;
402+ chunks . forEach ( ( chunk ) => aa ( 'clickedFilters ' , chunk ) ) ;
393403 data . gtmOnSuccess ( ) ;
394404 break ;
395405 }
@@ -401,8 +411,9 @@ switch (data.method) {
401411 break ;
402412 }
403413
404- const payload : InsightsEvent = {
405- eventType : 'conversion' ,
414+ const methodName = getConvertedObjectIDsAfterSearchMethod ( data . eventSubtype ) ;
415+
416+ const payload : InsightsSearchConversionEvent = {
406417 eventName : data . eventName ,
407418 index : data . index ,
408419 objectIDs : formatValueToList ( data . objectIDs ) ,
@@ -413,17 +424,17 @@ switch (data.method) {
413424 value : data . value ,
414425 currency : data . currency ,
415426 } ;
416- if ( data . eventSubtype ) {
417- payload . eventSubtype = data . eventSubtype ;
418- }
419427 const chunks = chunkPayload (
420428 payload ,
421429 [ 'objectIDs' , 'objectData' ] ,
422430 MAX_OBJECT_IDS
423431 ) ;
424432
425- logger ( 'sendEvents' , chunks ) ;
426- aa ( 'sendEvents' , chunks ) ;
433+ logger ( methodName , chunks ) ;
434+ const additionalParams : InsightsAdditionalEventParams = data . inferQueryID
435+ ? { inferQueryID : true }
436+ : { } ;
437+ chunks . forEach ( ( chunk ) => aa ( methodName , chunk , additionalParams ) ) ;
427438 data . gtmOnSuccess ( ) ;
428439 break ;
429440 }
@@ -435,8 +446,9 @@ switch (data.method) {
435446 break ;
436447 }
437448
438- const payload : InsightsEvent = {
439- eventType : 'conversion' ,
449+ const methodName = getConvertedObjectIDsMethod ( data . eventSubtype ) ;
450+
451+ const payload : InsightsSearchConversionObjectIDsEvent = {
440452 eventName : data . eventName ,
441453 index : data . index ,
442454 objectIDs : formatValueToList ( data . objectIDs ) ,
@@ -446,17 +458,17 @@ switch (data.method) {
446458 value : data . value ,
447459 currency : data . currency ,
448460 } ;
449- if ( data . eventSubtype ) {
450- payload . eventSubtype = data . eventSubtype ;
451- }
452461 const chunks = chunkPayload (
453462 payload ,
454463 [ 'objectIDs' , 'objectData' ] ,
455464 MAX_OBJECT_IDS
456465 ) ;
457466
458- logger ( 'sendEvents' , chunks ) ;
459- aa ( 'sendEvents' , chunks ) ;
467+ logger ( methodName , chunks ) ;
468+ const additionalParams : InsightsAdditionalEventParams = data . inferQueryID
469+ ? { inferQueryID : true }
470+ : { } ;
471+ chunks . forEach ( ( chunk ) => aa ( methodName , chunk , additionalParams ) ) ;
460472 data . gtmOnSuccess ( ) ;
461473 break ;
462474 }
@@ -468,23 +480,17 @@ switch (data.method) {
468480 break ;
469481 }
470482
471- const payload : InsightsEvent = {
472- eventType : 'conversion' ,
483+ const payload : InsightsSearchConversionFiltersEvent = {
473484 eventName : data . eventName ,
474485 filters : formatValueToList ( data . filters ) ,
475486 index : data . index ,
476487 userToken : data . userToken ,
477488 authenticatedUserToken : data . authenticatedUserToken ,
478- value : data . value ,
479- currency : data . currency ,
480489 } ;
481- if ( data . eventSubtype ) {
482- payload . eventSubtype = data . eventSubtype ;
483- }
484490 const chunks = chunkPayload ( payload , [ 'filters' ] , MAX_FILTERS ) ;
485491
486- logger ( 'sendEvents ' , chunks ) ;
487- aa ( 'sendEvents ' , chunks ) ;
492+ logger ( 'convertedFilters ' , chunks ) ;
493+ chunks . forEach ( ( chunk ) => aa ( 'convertedFilters ' , chunk ) ) ;
488494 data . gtmOnSuccess ( ) ;
489495 break ;
490496 }
@@ -496,8 +502,7 @@ switch (data.method) {
496502 break ;
497503 }
498504
499- const payload : InsightsEvent = {
500- eventType : 'view' ,
505+ const payload : InsightsSearchViewFiltersEvent = {
501506 eventName : data . eventName ,
502507 filters : formatValueToList ( data . filters ) ,
503508 index : data . index ,
@@ -506,8 +511,8 @@ switch (data.method) {
506511 } ;
507512 const chunks = chunkPayload ( payload , [ 'filters' ] , MAX_FILTERS ) ;
508513
509- logger ( 'sendEvents ' , chunks ) ;
510- aa ( 'sendEvents ' , chunks ) ;
514+ logger ( 'viewedFilters ' , chunks ) ;
515+ chunks . forEach ( ( chunk ) => aa ( 'viewedFilters ' , chunk ) ) ;
511516 data . gtmOnSuccess ( ) ;
512517 break ;
513518 }
0 commit comments