From e2403e11b3f09957b88b2e637c9b6380ea093d61 Mon Sep 17 00:00:00 2001 From: Bianca Widstam Date: Wed, 15 Oct 2025 14:21:41 +0000 Subject: [PATCH] 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 --- .../Payment/BookingAlert/index.tsx | 5 ++++ .../SelectRate/AvailabilityError.tsx | 16 ++++++++++++- .../tracking/lib/NoAvailabilityTracking.tsx | 24 +++++++++++++++++-- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/packages/booking-flow/lib/components/EnterDetails/Payment/BookingAlert/index.tsx b/packages/booking-flow/lib/components/EnterDetails/Payment/BookingAlert/index.tsx index d256179b4..00649ee65 100644 --- a/packages/booking-flow/lib/components/EnterDetails/Payment/BookingAlert/index.tsx +++ b/packages/booking-flow/lib/components/EnterDetails/Payment/BookingAlert/index.tsx @@ -6,6 +6,7 @@ import { useIntl } from "react-intl" import { AlertTypeEnum } from "@scandic-hotels/common/constants/alert" 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 { Alert } from "@scandic-hotels/design-system/Alert" import { trackNoAvailability } from "@scandic-hotels/tracking/NoAvailabilityTracking" @@ -165,6 +166,7 @@ function useNoAvailabilityTracking() { const { fromDate, toDate, hotelId, bookingCode, searchType, rooms } = useEnterDetailsStore((state) => state.booking) const lang = useLang() + const sessionId = useSessionId() const specialRoomType = rooms ?.map((room) => { @@ -191,6 +193,8 @@ function useNoAvailabilityTracking() { pageName: "hotelreservation|details", pageType: "bookingenterdetailspage", siteSections: "hotelreservation|details", + sessionId, + domain: typeof window !== "undefined" ? window.location.host : "", }), [ specialRoomType, @@ -201,6 +205,7 @@ function useNoAvailabilityTracking() { rooms.length, searchType, bookingCode, + sessionId, ] ) return track diff --git a/packages/booking-flow/lib/components/SelectRate/AvailabilityError.tsx b/packages/booking-flow/lib/components/SelectRate/AvailabilityError.tsx index 9328ef21b..3b1127b5c 100644 --- a/packages/booking-flow/lib/components/SelectRate/AvailabilityError.tsx +++ b/packages/booking-flow/lib/components/SelectRate/AvailabilityError.tsx @@ -4,6 +4,7 @@ import { usePathname, useSearchParams } from "next/navigation" import { useCallback, useEffect } from "react" import { useIntl } from "react-intl" +import { useSessionId } from "@scandic-hotels/common/hooks/useSessionId" import { toast } from "@scandic-hotels/design-system/Toast" import { trackNoAvailability } from "@scandic-hotels/tracking/NoAvailabilityTracking" import { BookingErrorCodeEnum } from "@scandic-hotels/trpc/enums/bookingErrorCode" @@ -21,6 +22,8 @@ export default function AvailabilityError({ booking }: AvailabilityErrorProps) { const intl = useIntl() const pathname = usePathname() const searchParams = useSearchParams() + const sessionId = useSessionId() + const lang = useLang() const { rooms, fromDate, toDate, hotelId, bookingCode, searchType } = booking @@ -61,8 +64,19 @@ export default function AvailabilityError({ booking }: AvailabilityErrorProps) { pageName: "hotelreservation|select-rate", pageType: "bookingroomsandratespage", 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(() => { if (hasAvailabilityError) { diff --git a/packages/tracking/lib/NoAvailabilityTracking.tsx b/packages/tracking/lib/NoAvailabilityTracking.tsx index 165ec4736..9cb9d6039 100644 --- a/packages/tracking/lib/NoAvailabilityTracking.tsx +++ b/packages/tracking/lib/NoAvailabilityTracking.tsx @@ -1,8 +1,10 @@ "use client" import { differenceInCalendarDays, isWeekend } from "date-fns" +import { usePathname } from "next/navigation" import { useEffect } from "react" +import { useSessionId } from "@scandic-hotels/common/hooks/useSessionId" import { TrackingChannelEnum, type TrackingSDKHotelInfo, @@ -11,6 +13,7 @@ import { import { SEARCH_TYPE_REDEMPTION } from "@scandic-hotels/trpc/constants/booking" import { trackEvent } from "./base" +import { createSDKPageObject } from "./pageview" import type { Lang } from "@scandic-hotels/common/constants/language" @@ -27,10 +30,19 @@ export function NoAvailabilityTracking({ hotelsTrackingData, pageTrackingData, }: NoAvailabilityTrackingProps) { + const pathName = usePathname() + const sessionId = useSessionId() + useEffect(() => { if (!shouldTrackNoAvailability) { return } + const pageTracking = { + ...pageTrackingData, + sessionId, + pathName, + } + const pageObject = createSDKPageObject(pageTracking) const { searchTerm, searchType, @@ -49,6 +61,7 @@ export function NoAvailabilityTracking({ hotelInfo: { searchTerm, searchType, + action: "Hotel search", noRoomsAvailable: "yes", hotelID, leadTime, @@ -59,7 +72,7 @@ export function NoAvailabilityTracking({ duration, specialRoomType, }, - pageInfo: pageTrackingData, + pageInfo: pageObject, }) }, [lang, hotelsTrackingData, pageTrackingData]) @@ -80,6 +93,8 @@ type TrackNoAvailabilityParams = { pageType: string siteSections: string lang: Lang + sessionId: string | null + domain?: string } export function trackNoAvailability({ @@ -96,6 +111,8 @@ export function trackNoAvailability({ pageName, pageType, siteSections, + sessionId, + domain, }: TrackNoAvailabilityParams) { const arrivalDate = new Date(fromDate) const departureDate = new Date(toDate) @@ -105,6 +122,7 @@ export function trackNoAvailability({ hotelInfo: { searchTerm, searchType, + action: "Hotel search", noRoomsAvailable: "yes", hotelId, leadTime: differenceInCalendarDays(arrivalDate, new Date()), @@ -117,12 +135,14 @@ export function trackNoAvailability({ }, pageInfo: { channel: TrackingChannelEnum.hotelreservation, - domain: "www.scandichotels.com", + domain, domainLanguage: lang, pageId, pageName, pageType, siteSections, + sessionId, + siteVersion: "new-web", }, }) }