fix: support for tracking link clicks

This commit is contained in:
Christel Westerberg
2024-07-12 09:59:39 +02:00
parent 546679387f
commit edb6005a72
8 changed files with 107 additions and 1 deletions
+4 -1
View File
@@ -7,12 +7,14 @@ import { login } from "@/constants/routes/handleAuth"
import Link from "@/components/TempDesignSystem/Link"
import type { TrackableLoginId } from "@/types/components/tracking"
import { LangParams } from "@/types/params"
export default function LoginButton({
className,
trackingId,
lang,
}: LangParams & { className: string }) {
}: LangParams & { className: string; trackingId: TrackableLoginId }) {
const { formatMessage } = useIntl()
const pathName = usePathname()
@@ -20,6 +22,7 @@ export default function LoginButton({
<Link
href={`${login[lang]}?redirectTo=${encodeURIComponent(`/${lang}${pathName}`)}`}
className={className}
id={trackingId}
>
{formatMessage({ id: "Log in" })}
</Link>
@@ -98,6 +98,7 @@ export function MainMenu({
</li>
<li className={styles.mobileLinkRow}>
<LoginButton
trackingId="LoginStartHamburgerMenu"
className={styles.mobileLinkButton}
lang={lang}
/>
@@ -65,6 +65,7 @@ export default async function TopMenu({
</>
) : (
<LoginButton
trackingId="LoginStartTopMenu"
lang={lang}
className={`${styles.sessionLink} ${styles.loginLink}`}
/>
+63
View File
@@ -5,6 +5,8 @@ import { useEffect } from "react"
import {
SiteSectionObject,
TrackableClickIdEnum,
TrackingPosition,
TrackingSDKData,
TrackingSDKProps,
} from "@/types/components/tracking"
@@ -107,5 +109,66 @@ export default function TrackingSDK({ pageData }: TrackingSDKProps) {
}
}, [])
function loginClick(position: TrackingPosition) {
if (window.adobeDataLayer) {
const loginEvent = {
event: "loginStart",
login: {
position,
action: "login start",
ctaName: "login",
},
}
window.adobeDataLayer.push(loginEvent)
}
}
function linkClick(name: string) {
if (window.adobeDataLayer) {
window.adobeDataLayer.push({
event: "linkClick",
cta: {
name: name,
},
})
}
}
useEffect(() => {
// Handle clickable events
document
.getElementById(TrackableClickIdEnum.LoginStartTopMenu)
?.addEventListener("click", () => loginClick("top menu"))
document
.getElementById(TrackableClickIdEnum.LoginStartJoinScandicFriends)
?.addEventListener("click", () =>
loginClick("join scandic friends sidebar")
)
document
.getElementById(TrackableClickIdEnum.LoginStartHamburgerMenu)
?.addEventListener("click", () => loginClick("hamburger menu"))
document
.getElementById(TrackableClickIdEnum.ProfilePictureLink)
?.addEventListener("click", () => linkClick("profile picture link"))
return () => {
document
.getElementById(TrackableClickIdEnum.LoginStartTopMenu)
?.removeEventListener("click", () => loginClick("top menu"))
document
.getElementById(TrackableClickIdEnum.LoginStartJoinScandicFriends)
?.removeEventListener("click", () =>
loginClick("join scandic friends sidebar")
)
document
.getElementById(TrackableClickIdEnum.LoginStartHamburgerMenu)
?.removeEventListener("click", () => loginClick("hamburger menu"))
document
.getElementById(TrackableClickIdEnum.ProfilePictureLink)
?.removeEventListener("click", () => linkClick("profile picture link"))
}
}, [])
return null
}