Merged in fix/BOOK-131-noroomsavailability-tracking (pull request #2971)

fix(BOOK-131): add action and domain

* fix(BOOK-131): add action and domain


Approved-by: Anton Gunnarsson
This commit is contained in:
Bianca Widstam
2025-10-15 14:21:41 +00:00
parent 33f4952d94
commit e2403e11b3
3 changed files with 42 additions and 3 deletions

View File

@@ -6,6 +6,7 @@ import { useIntl } from "react-intl"
import { AlertTypeEnum } from "@scandic-hotels/common/constants/alert" import { AlertTypeEnum } from "@scandic-hotels/common/constants/alert"
import { selectRate } from "@scandic-hotels/common/constants/routes/hotelReservation" import { selectRate } from "@scandic-hotels/common/constants/routes/hotelReservation"
import { useSessionId } from "@scandic-hotels/common/hooks/useSessionId"
import useStickyPosition from "@scandic-hotels/common/hooks/useStickyPosition" import useStickyPosition from "@scandic-hotels/common/hooks/useStickyPosition"
import { Alert } from "@scandic-hotels/design-system/Alert" import { Alert } from "@scandic-hotels/design-system/Alert"
import { trackNoAvailability } from "@scandic-hotels/tracking/NoAvailabilityTracking" import { trackNoAvailability } from "@scandic-hotels/tracking/NoAvailabilityTracking"
@@ -165,6 +166,7 @@ function useNoAvailabilityTracking() {
const { fromDate, toDate, hotelId, bookingCode, searchType, rooms } = const { fromDate, toDate, hotelId, bookingCode, searchType, rooms } =
useEnterDetailsStore((state) => state.booking) useEnterDetailsStore((state) => state.booking)
const lang = useLang() const lang = useLang()
const sessionId = useSessionId()
const specialRoomType = rooms const specialRoomType = rooms
?.map((room) => { ?.map((room) => {
@@ -191,6 +193,8 @@ function useNoAvailabilityTracking() {
pageName: "hotelreservation|details", pageName: "hotelreservation|details",
pageType: "bookingenterdetailspage", pageType: "bookingenterdetailspage",
siteSections: "hotelreservation|details", siteSections: "hotelreservation|details",
sessionId,
domain: typeof window !== "undefined" ? window.location.host : "",
}), }),
[ [
specialRoomType, specialRoomType,
@@ -201,6 +205,7 @@ function useNoAvailabilityTracking() {
rooms.length, rooms.length,
searchType, searchType,
bookingCode, bookingCode,
sessionId,
] ]
) )
return track return track

View File

@@ -4,6 +4,7 @@ import { usePathname, useSearchParams } from "next/navigation"
import { useCallback, useEffect } from "react" import { useCallback, useEffect } from "react"
import { useIntl } from "react-intl" import { useIntl } from "react-intl"
import { useSessionId } from "@scandic-hotels/common/hooks/useSessionId"
import { toast } from "@scandic-hotels/design-system/Toast" import { toast } from "@scandic-hotels/design-system/Toast"
import { trackNoAvailability } from "@scandic-hotels/tracking/NoAvailabilityTracking" import { trackNoAvailability } from "@scandic-hotels/tracking/NoAvailabilityTracking"
import { BookingErrorCodeEnum } from "@scandic-hotels/trpc/enums/bookingErrorCode" import { BookingErrorCodeEnum } from "@scandic-hotels/trpc/enums/bookingErrorCode"
@@ -21,6 +22,8 @@ export default function AvailabilityError({ booking }: AvailabilityErrorProps) {
const intl = useIntl() const intl = useIntl()
const pathname = usePathname() const pathname = usePathname()
const searchParams = useSearchParams() const searchParams = useSearchParams()
const sessionId = useSessionId()
const lang = useLang() const lang = useLang()
const { rooms, fromDate, toDate, hotelId, bookingCode, searchType } = booking const { rooms, fromDate, toDate, hotelId, bookingCode, searchType } = booking
@@ -61,8 +64,19 @@ export default function AvailabilityError({ booking }: AvailabilityErrorProps) {
pageName: "hotelreservation|select-rate", pageName: "hotelreservation|select-rate",
pageType: "bookingroomsandratespage", pageType: "bookingroomsandratespage",
siteSections: "hotelreservation|select-rate", siteSections: "hotelreservation|select-rate",
sessionId,
domain: typeof window !== "undefined" ? window.location.host : "",
}) })
}, [rooms, hotelId, lang, fromDate, toDate, searchType, bookingCode]) }, [
rooms,
hotelId,
lang,
fromDate,
toDate,
searchType,
bookingCode,
sessionId,
])
useEffect(() => { useEffect(() => {
if (hasAvailabilityError) { if (hasAvailabilityError) {

View File

@@ -1,8 +1,10 @@
"use client" "use client"
import { differenceInCalendarDays, isWeekend } from "date-fns" import { differenceInCalendarDays, isWeekend } from "date-fns"
import { usePathname } from "next/navigation"
import { useEffect } from "react" import { useEffect } from "react"
import { useSessionId } from "@scandic-hotels/common/hooks/useSessionId"
import { import {
TrackingChannelEnum, TrackingChannelEnum,
type TrackingSDKHotelInfo, type TrackingSDKHotelInfo,
@@ -11,6 +13,7 @@ import {
import { SEARCH_TYPE_REDEMPTION } from "@scandic-hotels/trpc/constants/booking" import { SEARCH_TYPE_REDEMPTION } from "@scandic-hotels/trpc/constants/booking"
import { trackEvent } from "./base" import { trackEvent } from "./base"
import { createSDKPageObject } from "./pageview"
import type { Lang } from "@scandic-hotels/common/constants/language" import type { Lang } from "@scandic-hotels/common/constants/language"
@@ -27,10 +30,19 @@ export function NoAvailabilityTracking({
hotelsTrackingData, hotelsTrackingData,
pageTrackingData, pageTrackingData,
}: NoAvailabilityTrackingProps) { }: NoAvailabilityTrackingProps) {
const pathName = usePathname()
const sessionId = useSessionId()
useEffect(() => { useEffect(() => {
if (!shouldTrackNoAvailability) { if (!shouldTrackNoAvailability) {
return return
} }
const pageTracking = {
...pageTrackingData,
sessionId,
pathName,
}
const pageObject = createSDKPageObject(pageTracking)
const { const {
searchTerm, searchTerm,
searchType, searchType,
@@ -49,6 +61,7 @@ export function NoAvailabilityTracking({
hotelInfo: { hotelInfo: {
searchTerm, searchTerm,
searchType, searchType,
action: "Hotel search",
noRoomsAvailable: "yes", noRoomsAvailable: "yes",
hotelID, hotelID,
leadTime, leadTime,
@@ -59,7 +72,7 @@ export function NoAvailabilityTracking({
duration, duration,
specialRoomType, specialRoomType,
}, },
pageInfo: pageTrackingData, pageInfo: pageObject,
}) })
}, [lang, hotelsTrackingData, pageTrackingData]) }, [lang, hotelsTrackingData, pageTrackingData])
@@ -80,6 +93,8 @@ type TrackNoAvailabilityParams = {
pageType: string pageType: string
siteSections: string siteSections: string
lang: Lang lang: Lang
sessionId: string | null
domain?: string
} }
export function trackNoAvailability({ export function trackNoAvailability({
@@ -96,6 +111,8 @@ export function trackNoAvailability({
pageName, pageName,
pageType, pageType,
siteSections, siteSections,
sessionId,
domain,
}: TrackNoAvailabilityParams) { }: TrackNoAvailabilityParams) {
const arrivalDate = new Date(fromDate) const arrivalDate = new Date(fromDate)
const departureDate = new Date(toDate) const departureDate = new Date(toDate)
@@ -105,6 +122,7 @@ export function trackNoAvailability({
hotelInfo: { hotelInfo: {
searchTerm, searchTerm,
searchType, searchType,
action: "Hotel search",
noRoomsAvailable: "yes", noRoomsAvailable: "yes",
hotelId, hotelId,
leadTime: differenceInCalendarDays(arrivalDate, new Date()), leadTime: differenceInCalendarDays(arrivalDate, new Date()),
@@ -117,12 +135,14 @@ export function trackNoAvailability({
}, },
pageInfo: { pageInfo: {
channel: TrackingChannelEnum.hotelreservation, channel: TrackingChannelEnum.hotelreservation,
domain: "www.scandichotels.com", domain,
domainLanguage: lang, domainLanguage: lang,
pageId, pageId,
pageName, pageName,
pageType, pageType,
siteSections, siteSections,
sessionId,
siteVersion: "new-web",
}, },
}) })
} }