GTM Event Factories¶
These factories are responsible for creating and preparing GTM event objects. They can be written either as basic get
methods, such as getGtmCartViewEvent
, or as hooks, such as useGtmStaticPageViewEvent
. The difference between them is
getGtmCartViewEvent¶
export const getGtmCartViewEvent = (
currencyCode: string; // the code of the currency used on the domain
valueWithoutVat: number, // the value of the cart without VAT
valueWithVat: number, // the value of the cart with VAT
products: GtmCartItemType[] | undefined, // products in cart, if available
): GtmCartViewEventType => {
// function body not included in this code block
}
getGtmContactInformationPageViewEvent¶
export const getGtmContactInformationPageViewEvent = (
gtmCartInfo: GtmCartInfoType // the cart of the current user in the shape of GTM cart information
): GtmContactInformationPageViewEventType => {
// function body not included in this code block
};
getGtmPaymentAndTransportPageViewEvent¶
export const getGtmPaymentAndTransportPageViewEvent = (
currencyCode: string; // the code of the currency used on the domain
gtmCartInfo: GtmCartInfoType, // the cart of the current user in the shape of GTM cart information
): GtmPaymentAndTransportPageViewEventType => {
// function body not included in this code block
}
getGtmPaymentFailEvent¶
export const getGtmPaymentFailEvent = (
orderId: string // ID of the order for which the payment has failed
): GtmPaymentFailEventType => {
// function body not included in this code block
};
getGtmCreateOrderEvent¶
export const getGtmCreateOrderEvent = (
gtmCreateOrderEventOrderPart: GtmCreateOrderEventOrderPartType, // part of the GtmCreateOrderEvent object containing information about the order
gtmCreateOrderEventUserPart: GtmUserInfoType, // part of the GtmCreateOrderEvent object containing information about the user
isPaymentSuccessful?: boolean // boolean pointer if the payment was successful, not filled if we cannot determine the payment status
): GtmCreateOrderEventType => {
// function body not included in this code block
};
getGtmCreateOrderEventOrderPart¶
export const getGtmCreateOrderEventOrderPart = (
cart: CartFragment, // the cart of the current user in the shape of basic CartFragment object
payment: SimplePaymentFragment, // the payment method chosen by the user that will be used to pay for the order
promoCode: string | null, // promo code used for the order, if applicable
orderNumber: string, // identifying number of the order
reviewConsents: GtmReviewConsentsType, // information about consents previously given by the user
domainConfig: DomainConfigType // configuration for the current domain
): GtmCreateOrderEventOrderPartType => {
// function body not included in this code block
};
getGtmCreateOrderEventUserPart¶
export const getGtmCreateOrderEventUserPart = (
user: CurrentCustomerType | null | undefined, // information about current user
userContactInformation: ContactInformation // contact information filled by the user during order
): GtmUserInfoType => {
// function body not included in this code block
};
getGtmSendFormEvent¶
export const getGtmSendFormEvent = (
form: GtmFormType // type of the form submitted by the user
): GtmSendFormEventType => {
// function body not included in this code block
};
getGtmProductClickEvent¶
export const getGtmProductClickEvent = (
product: ListedProductFragment | SimpleProductFragment, // information about the product clicked by the user
gtmProductListName: GtmProductListNameType, // name of the list from which the product was clicked
listIndex: number, // index of the product within the list
domainUrl: string // URL of the current domain
): GtmProductClickEventType => {
// function body not included in this code block
};
getGtmProductDetailViewEvent¶
export const getGtmProductDetailViewEvent = (
product: ProductDetailFragment | MainVariantDetailFragment, // information about the product displayed on on the product detail page
currencyCode: string; // the code of the currency used on the domain
domainUrl: string, // URL of the current domain
): GtmProductDetailViewEventType => {
// function body not included in this code block
}
getGtmAutocompleteResultsViewEvent¶
export const getGtmAutocompleteResultsViewEvent = (
searchResult: AutocompleteSearchQuery, // object with all autocomplete search results
keyword: string // keyword for which the results were returned
): GtmAutocompleteResultsViewEventType => {
// function body not included in this code block
};
getGtmAutocompleteResultClickEvent¶
export const getGtmAutocompleteResultClickEvent = (
keyword: string, // keyword for which the results were returned
section: GtmSectionType, // type of the section of the autocomplete results on which the user clicked
itemName: string // name of the autocomplete search results item clicked by the user
): GtmAutocompleteResultClickEventType => {
// function body not included in this code block
};
useGtmStaticPageViewEvent¶
export const useGtmStaticPageViewEvent = (
pageType: GtmPageType, // type of the page viewed by the user
breadcrumbs?: BreadcrumbFragment[] // breadcrumbs for the viewed page, if available
): GtmPageViewEventType => {
// function body not included in this code block
};
useGtmFriendlyPageViewEvent¶
export const useGtmFriendlyPageViewEvent = (
friendlyUrlPageData: FriendlyUrlPageType | null | undefined // data for the friendly URL page
): GtmPageViewEventType => {
// function body not included in this code block
};
getGtmPageViewEvent¶
export const getGtmPageViewEvent = (
pageInfo: GtmPageInfoType, // information about the viewed page
gtmCartInfo: GtmCartInfoType | null, // the cart of the current user in the shape of GTM cart information, if available
isCartLoaded: boolean, // boolean pointer saying if the cart is loaded
user: CurrentCustomerType | null | undefined, // information about the current user
userContactInformation: ContactInformation, // contact information filled by the user during order
domainConfig: DomainConfigType // config for the current domain
): GtmPageViewEventType => {
// function body not included in this code block
};
getGtmChangeCartItemEvent¶
export const getGtmChangeCartItemEvent = (
event: GtmEventType.add_to_cart | GtmEventType.remove_from_cart, // type of the event saying if we are removing or adding items to cart
cartItem: CartItemFragment, // removed (or added) cart item
listIndex: number | undefined, // list index from which the item was removed/added, it can be index within cart (for removing) or index within any other list (for adding)
quantity: number, // how much was removed/added, absolute value of the delta of the previous and current quantity
currencyCode: string; // the code of the currency used on the domain
eventValueWithoutVat: number, // value of the event without VAT, calculated as product price without VAT * quantity
eventValueWithVat: number, // value of the event with VAT, calculated as product price with VAT * quantity
gtmProductListName: GtmProductListNameType, // name of the list from which the product was removed/added
domainUrl: string, // URL of the current domain
gtmCartInfo?: GtmCartInfoType | null, // the cart of the current user in the shape of GTM cart information, if available
): GtmChangeCartItemEventType => {
// function body not included in this code block
}
getGtmPaymentChangeEvent¶
export const getGtmPaymentChangeEvent = (
gtmCartInfo: GtmCartInfoType, // the cart of the current user in the shape of GTM cart information, if available
updatedPayment: SimplePaymentFragment // payment method newly updated by the user
): GtmPaymentChangeEventType => {
// function body not included in this code block
};
getGtmTransportChangeEvent¶
export const getGtmTransportChangeEvent = (
gtmCartInfo: GtmCartInfoType, // the cart of the current user in the shape of GTM cart information, if available
updatedTransport: TransportWithAvailablePaymentsFragment, // transport method newly updated by the user
updatedPickupPlace: ListedStoreFragment | null, // pickup place method newly updated by the user, if available
paymentName: string | undefined // name of the selected payment method
): GtmTransportChangeEventType => {
// function body not included in this code block
};
getGtmProductListViewEvent¶
export const getGtmProductListViewEvent = (
products: ListedProductFragment[], // products contained in the viewed list
gtmProductListName: GtmProductListNameType, // name of the viewed list
currentPage: number, // current page of the viewed list
pageSize: number, // page size of the viewed list
domainUrl: string // URL of the current domain
): GtmProductListViewEventType => {
// function body not included in this code block
};
getGtmShowMessageEvent¶
export const getGtmShowMessageEvent = (
type: GtmMessageType, // type of the message shown to the user (e.g. error, information)
message: string, // content of the message shown to the user
detail: GtmMessageDetailType | string, // any additional information about the message shown to the user, can be of a predefined type GtmMessageDetailType or any arbitrary string value
origin?: GtmMessageOriginType // origin of the message, saying which part of the website triggered it
): GtmShowMessageEventType => {
// function body not included in this code block
};
getGtmConsentUpdateEvent¶
export const getGtmConsentUpdateEvent = (
updatedGtmConsentInfo: GtmConsentInfoType // newly updated consents given by the user
): GtmConsentUpdateEventType => {
// function body not included in this code block
};