@@ -40,6 +40,8 @@ import type {
4040 ViewPromotionEventParameters ,
4141 ViewSearchResultsParameters ,
4242 SettingsOptions ,
43+ EventParams ,
44+ CustomEventName ,
4345} from './types/analytics' ;
4446
4547/**
@@ -77,6 +79,333 @@ export async function getGoogleAnalyticsClientId(analytics: Analytics): Promise<
7779/**
7880 * Log a custom event with optional params.
7981 */
82+ // Overloads for standard event names
83+ export function logEvent (
84+ analytics : Analytics ,
85+ name : 'add_payment_info' ,
86+ params ?: {
87+ items ?: EventParams [ 'items' ] ;
88+ currency ?: EventParams [ 'currency' ] ;
89+ value ?: EventParams [ 'value' ] ;
90+ coupon ?: EventParams [ 'coupon' ] ;
91+ payment_type ?: EventParams [ 'payment_type' ] ;
92+ } ,
93+ options ?: AnalyticsCallOptions ,
94+ ) : Promise < void > ;
95+
96+ export function logEvent (
97+ analytics : Analytics ,
98+ name : 'add_shipping_info' ,
99+ params ?: {
100+ items ?: EventParams [ 'items' ] ;
101+ currency ?: EventParams [ 'currency' ] ;
102+ value ?: EventParams [ 'value' ] ;
103+ coupon ?: EventParams [ 'coupon' ] ;
104+ shipping_tier ?: EventParams [ 'shipping_tier' ] ;
105+ } ,
106+ options ?: AnalyticsCallOptions ,
107+ ) : Promise < void > ;
108+
109+ export function logEvent (
110+ analytics : Analytics ,
111+ name : 'add_to_cart' ,
112+ params ?: {
113+ items ?: EventParams [ 'items' ] ;
114+ currency ?: EventParams [ 'currency' ] ;
115+ value ?: EventParams [ 'value' ] ;
116+ } ,
117+ options ?: AnalyticsCallOptions ,
118+ ) : Promise < void > ;
119+
120+ export function logEvent (
121+ analytics : Analytics ,
122+ name : 'add_to_wishlist' ,
123+ params ?: {
124+ items ?: EventParams [ 'items' ] ;
125+ currency ?: EventParams [ 'currency' ] ;
126+ value ?: EventParams [ 'value' ] ;
127+ } ,
128+ options ?: AnalyticsCallOptions ,
129+ ) : Promise < void > ;
130+
131+ export function logEvent (
132+ analytics : Analytics ,
133+ name : 'begin_checkout' ,
134+ params ?: {
135+ currency ?: EventParams [ 'currency' ] ;
136+ value ?: EventParams [ 'value' ] ;
137+ coupon ?: EventParams [ 'coupon' ] ;
138+ items ?: EventParams [ 'items' ] ;
139+ [ key : string ] : any ;
140+ } ,
141+ options ?: AnalyticsCallOptions ,
142+ ) : Promise < void > ;
143+
144+ export function logEvent (
145+ analytics : Analytics ,
146+ name : 'checkout_progress' ,
147+ params ?: {
148+ checkout_step ?: EventParams [ 'checkout_step' ] ;
149+ checkout_option ?: EventParams [ 'checkout_option' ] ;
150+ [ key : string ] : any ;
151+ } ,
152+ options ?: AnalyticsCallOptions ,
153+ ) : Promise < void > ;
154+
155+ export function logEvent (
156+ analytics : Analytics ,
157+ name : 'exception' ,
158+ params ?: {
159+ description ?: EventParams [ 'description' ] ;
160+ fatal ?: EventParams [ 'fatal' ] ;
161+ [ key : string ] : any ;
162+ } ,
163+ options ?: AnalyticsCallOptions ,
164+ ) : Promise < void > ;
165+
166+ export function logEvent (
167+ analytics : Analytics ,
168+ name : 'generate_lead' ,
169+ params ?: {
170+ currency ?: EventParams [ 'currency' ] ;
171+ value ?: EventParams [ 'value' ] ;
172+ } ,
173+ options ?: AnalyticsCallOptions ,
174+ ) : Promise < void > ;
175+
176+ export function logEvent (
177+ analytics : Analytics ,
178+ name : 'login' ,
179+ params : {
180+ method : EventParams [ 'method' ] ;
181+ } ,
182+ options ?: AnalyticsCallOptions ,
183+ ) : Promise < void > ;
184+
185+ export function logEvent (
186+ analytics : Analytics ,
187+ name : 'page_view' ,
188+ params ?: {
189+ page_title ?: EventParams [ 'page_title' ] ;
190+ page_location ?: EventParams [ 'page_location' ] ;
191+ page_path ?: EventParams [ 'page_path' ] ;
192+ [ key : string ] : any ;
193+ } ,
194+ options ?: AnalyticsCallOptions ,
195+ ) : Promise < void > ;
196+
197+ export function logEvent (
198+ analytics : Analytics ,
199+ name : 'purchase' ,
200+ params ?: {
201+ affiliation ?: EventParams [ 'affiliation' ] ;
202+ coupon ?: EventParams [ 'coupon' ] ;
203+ currency ?: EventParams [ 'currency' ] ;
204+ items ?: EventParams [ 'items' ] ;
205+ shipping ?: EventParams [ 'shipping' ] ;
206+ tax ?: EventParams [ 'tax' ] ;
207+ value ?: EventParams [ 'value' ] ;
208+ transaction_id ?: EventParams [ 'transaction_id' ] ;
209+ [ key : string ] : any ;
210+ } ,
211+ options ?: AnalyticsCallOptions ,
212+ ) : Promise < void > ;
213+
214+ export function logEvent (
215+ analytics : Analytics ,
216+ name : 'refund' ,
217+ params ?: {
218+ affiliation ?: EventParams [ 'affiliation' ] ;
219+ coupon ?: EventParams [ 'coupon' ] ;
220+ currency ?: EventParams [ 'currency' ] ;
221+ items ?: EventParams [ 'items' ] ;
222+ shipping ?: EventParams [ 'shipping' ] ;
223+ tax ?: EventParams [ 'tax' ] ;
224+ value ?: EventParams [ 'value' ] ;
225+ transaction_id ?: EventParams [ 'transaction_id' ] ;
226+ } ,
227+ options ?: AnalyticsCallOptions ,
228+ ) : Promise < void > ;
229+
230+ export function logEvent (
231+ analytics : Analytics ,
232+ name : 'remove_from_cart' ,
233+ params ?: {
234+ items ?: EventParams [ 'items' ] ;
235+ value ?: EventParams [ 'value' ] ;
236+ currency ?: EventParams [ 'currency' ] ;
237+ } ,
238+ options ?: AnalyticsCallOptions ,
239+ ) : Promise < void > ;
240+
241+ export function logEvent (
242+ analytics : Analytics ,
243+ name : 'screen_view' ,
244+ params ?: {
245+ screen_name ?: EventParams [ 'screen_name' ] ;
246+ screen_class ?: EventParams [ 'screen_class' ] ;
247+ [ key : string ] : any ;
248+ } ,
249+ options ?: AnalyticsCallOptions ,
250+ ) : Promise < void > ;
251+
252+ export function logEvent (
253+ analytics : Analytics ,
254+ name : 'search' ,
255+ params : {
256+ search_term : EventParams [ 'search_term' ] ;
257+ number_of_nights ?: number ;
258+ number_of_rooms ?: number ;
259+ number_of_passengers ?: number ;
260+ origin ?: string ;
261+ destination ?: string ;
262+ start_date ?: string ;
263+ end_date ?: string ;
264+ travel_class ?: string ;
265+ } ,
266+ options ?: AnalyticsCallOptions ,
267+ ) : Promise < void > ;
268+
269+ export function logEvent (
270+ analytics : Analytics ,
271+ name : 'select_content' ,
272+ params : {
273+ content_type : EventParams [ 'content_type' ] ;
274+ item_id : EventParams [ 'item_id' ] ;
275+ } ,
276+ options ?: AnalyticsCallOptions ,
277+ ) : Promise < void > ;
278+
279+ export function logEvent (
280+ analytics : Analytics ,
281+ name : 'select_item' ,
282+ params : {
283+ items ?: EventParams [ 'items' ] ;
284+ content_type : EventParams [ 'content_type' ] ;
285+ item_list_id : EventParams [ 'item_list_id' ] ;
286+ item_list_name : EventParams [ 'item_list_name' ] ;
287+ } ,
288+ options ?: AnalyticsCallOptions ,
289+ ) : Promise < void > ;
290+
291+ export function logEvent (
292+ analytics : Analytics ,
293+ name : 'select_promotion' ,
294+ params : {
295+ creative_name : string ;
296+ creative_slot : string ;
297+ items ?: EventParams [ 'items' ] ;
298+ location_id : string ;
299+ promotion_id : EventParams [ 'promotion_id' ] ;
300+ promotion_name : EventParams [ 'promotion_name' ] ;
301+ } ,
302+ options ?: AnalyticsCallOptions ,
303+ ) : Promise < void > ;
304+
305+ export function logEvent (
306+ analytics : Analytics ,
307+ name : 'set_checkout_option' ,
308+ params ?: {
309+ checkout_step ?: EventParams [ 'checkout_step' ] ;
310+ checkout_option ?: EventParams [ 'checkout_option' ] ;
311+ [ key : string ] : any ;
312+ } ,
313+ options ?: AnalyticsCallOptions ,
314+ ) : Promise < void > ;
315+
316+ export function logEvent (
317+ analytics : Analytics ,
318+ name : 'share' ,
319+ params : {
320+ content_type : EventParams [ 'content_type' ] ;
321+ item_id : EventParams [ 'item_id' ] ;
322+ method : EventParams [ 'method' ] ;
323+ } ,
324+ options ?: AnalyticsCallOptions ,
325+ ) : Promise < void > ;
326+
327+ export function logEvent (
328+ analytics : Analytics ,
329+ name : 'sign_up' ,
330+ params : {
331+ method : EventParams [ 'method' ] ;
332+ } ,
333+ options ?: AnalyticsCallOptions ,
334+ ) : Promise < void > ;
335+
336+ export function logEvent (
337+ analytics : Analytics ,
338+ name : 'timing_complete' ,
339+ params ?: {
340+ [ key : string ] : any ;
341+ } ,
342+ options ?: AnalyticsCallOptions ,
343+ ) : Promise < void > ;
344+
345+ export function logEvent (
346+ analytics : Analytics ,
347+ name : 'view_cart' ,
348+ params ?: {
349+ items ?: EventParams [ 'items' ] ;
350+ currency ?: EventParams [ 'currency' ] ;
351+ value ?: EventParams [ 'value' ] ;
352+ } ,
353+ options ?: AnalyticsCallOptions ,
354+ ) : Promise < void > ;
355+
356+ export function logEvent (
357+ analytics : Analytics ,
358+ name : 'view_item' ,
359+ params ?: {
360+ items ?: EventParams [ 'items' ] ;
361+ currency ?: EventParams [ 'currency' ] ;
362+ value ?: EventParams [ 'value' ] ;
363+ } ,
364+ options ?: AnalyticsCallOptions ,
365+ ) : Promise < void > ;
366+
367+ export function logEvent (
368+ analytics : Analytics ,
369+ name : 'view_item_list' ,
370+ params ?: {
371+ items ?: EventParams [ 'items' ] ;
372+ item_list_id ?: EventParams [ 'item_list_id' ] ;
373+ item_list_name ?: EventParams [ 'item_list_name' ] ;
374+ } ,
375+ options ?: AnalyticsCallOptions ,
376+ ) : Promise < void > ;
377+
378+ export function logEvent (
379+ analytics : Analytics ,
380+ name : 'view_promotion' ,
381+ params ?: {
382+ items ?: EventParams [ 'items' ] ;
383+ location_id ?: string ;
384+ creative_name ?: string ;
385+ creative_slot ?: string ;
386+ promotion_id ?: EventParams [ 'promotion_id' ] ;
387+ promotion_name ?: EventParams [ 'promotion_name' ] ;
388+ } ,
389+ options ?: AnalyticsCallOptions ,
390+ ) : Promise < void > ;
391+
392+ export function logEvent (
393+ analytics : Analytics ,
394+ name : 'view_search_results' ,
395+ params : {
396+ search_term : EventParams [ 'search_term' ] ;
397+ } ,
398+ options ?: AnalyticsCallOptions ,
399+ ) : Promise < void > ;
400+
401+ // Generic fallback for custom event names
402+ export function logEvent < T extends string > (
403+ analytics : Analytics ,
404+ name : CustomEventName < T > ,
405+ params ?: { [ key : string ] : any } ,
406+ options ?: AnalyticsCallOptions ,
407+ ) : Promise < void > ;
408+
80409export function logEvent (
81410 analytics : Analytics ,
82411 name : string ,
0 commit comments