diff --git a/src/components/layout/Layout.tsx b/src/components/layout/Layout.tsx
index f3f9e685a..da956183e 100644
--- a/src/components/layout/Layout.tsx
+++ b/src/components/layout/Layout.tsx
@@ -2,8 +2,8 @@ import React, { useEffect } from 'react';
import Head from 'next/head';
import { useRouter } from 'next/router';
import Script from 'next/script';
-import { INTERNXT_URL, EXCLUDED_PATHS_FOR_BANNER } from '@/constants';
-import { GlobalDialog, useGlobalDialog } from '@/contexts/GlobalUIManager';
+import { INTERNXT_URL } from '@/constants';
+import { useGlobalDialog } from '@/contexts/GlobalUIManager';
import { handleImpact } from '@/services/impact.service';
import { saveGclidToCookie } from '@/lib/cookies';
@@ -40,11 +40,8 @@ export default function Layout({
robots,
}: LayoutProps) {
const router = useRouter();
- const { dialogIsOpen } = useGlobalDialog();
const pathname = pathnameForSEO ? pathnameForSEO : router.pathname === '/' ? '' : router.pathname;
const lang = router.locale;
- const shouldShowBanner = !EXCLUDED_PATHS_FOR_BANNER.includes(pathname) && dialogIsOpen(GlobalDialog.TopBanner);
-
const langToUpperCase = lang?.toLocaleUpperCase() as string;
const imagePreview = imageLang.has(langToUpperCase) ? langToUpperCase : 'EN';
@@ -111,14 +108,9 @@ export default function Layout({
+
-
-
-
-
+
+
+
+
{children}
{/* */}
diff --git a/src/services/impact.service.ts b/src/services/impact.service.ts
index ea1b8b589..165e5ab32 100644
--- a/src/services/impact.service.ts
+++ b/src/services/impact.service.ts
@@ -11,6 +11,8 @@ const sendImpactTrack = ({
ip,
userAgent,
page,
+ irclickid,
+ utmMedium,
}: {
randomUUID: string;
ip?: string;
@@ -19,6 +21,8 @@ const sendImpactTrack = ({
url: string;
referrer: string;
};
+ irclickid?: string | null;
+ utmMedium?: string | null;
}): Promise => {
const nowInTimestamp = moment().format('YYYY-MM-DDTHH:mm:ss.sssZ');
@@ -31,6 +35,12 @@ const sendImpactTrack = ({
page,
},
type: 'page',
+ ...(irclickid && {
+ properties: {
+ irclickid,
+ ...(utmMedium && { partner_id: utmMedium }),
+ },
+ }),
});
};
@@ -54,6 +64,11 @@ export const handleImpact = async ({
console.warn('IP lookup service unavailable, defaulting to undefined', error);
ip = undefined;
}
+
+ const urlParams = new URLSearchParams(window.location.search);
+ const irclickid = urlParams.get('irclickid');
+ const utmMedium = urlParams.get('utm_medium');
+
const impactAnonymousId = getCookie('impactAnonymousId');
const randomUUID = impactAnonymousId ?? crypto.randomUUID();
@@ -63,11 +78,29 @@ export const handleImpact = async ({
const anonymousDate = new Date();
anonymousDate.setFullYear(anonymousDate.getFullYear() + 10);
+ const trackingExpiration = new Date();
+ trackingExpiration.setDate(trackingExpiration.getDate() + 30);
+
document.cookie = `impactSource=${source};expires=${expirationDate.toUTCString()};domain=${COOKIE_DOMAIN};Path=/`;
document.cookie = `impactAnonymousId=${randomUUID};expires=${anonymousDate.toUTCString()};domain=${COOKIE_DOMAIN};Path=/`;
+ if (irclickid) {
+ document.cookie = `impactClickId=${irclickid};expires=${trackingExpiration.toUTCString()};domain=${COOKIE_DOMAIN};Path=/`;
+ }
+
+ if (utmMedium) {
+ document.cookie = `impactPartnerId=${utmMedium};expires=${trackingExpiration.toUTCString()};domain=${COOKIE_DOMAIN};Path=/`;
+ }
+
try {
- await sendImpactTrack({ randomUUID, ip, userAgent, page });
+ await sendImpactTrack({
+ randomUUID,
+ ip,
+ userAgent,
+ page,
+ irclickid,
+ utmMedium,
+ });
} catch (error) {
console.warn('Analytics tracking failed:', error);
}