From 26164c232de20a54d1f9dd8508f9e564add6d97a Mon Sep 17 00:00:00 2001 From: "reynald.borer@romande-energie.ch" Date: Wed, 1 May 2024 15:24:24 +0200 Subject: [PATCH] feat(google-tag-web): send (authenticated) user ID Add a new configuration property in basic mode to allow sharing the user ID. --- .../google-tag-web/src/GoogleTag.editorConfig.ts | 2 +- .../google-tag-web/src/GoogleTag.tsx | 15 +++++++-------- .../google-tag-web/src/GoogleTag.xml | 4 ++++ .../google-tag-web/typings/GoogleTagProps.d.ts | 2 ++ .../google-tag-web/typings/global.d.ts | 3 ++- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/packages/pluggableWidgets/google-tag-web/src/GoogleTag.editorConfig.ts b/packages/pluggableWidgets/google-tag-web/src/GoogleTag.editorConfig.ts index fc26a3271f..9691683b09 100644 --- a/packages/pluggableWidgets/google-tag-web/src/GoogleTag.editorConfig.ts +++ b/packages/pluggableWidgets/google-tag-web/src/GoogleTag.editorConfig.ts @@ -20,7 +20,7 @@ export function getProperties(values: GoogleTagPreviewProps, defaultProperties: break; } case "event": { - hidePropertiesIn(defaultProperties, values, ["targetId"]); + hidePropertiesIn(defaultProperties, values, ["targetId", "sendUserID"]); handleValueTypes(values, defaultProperties); break; } diff --git a/packages/pluggableWidgets/google-tag-web/src/GoogleTag.tsx b/packages/pluggableWidgets/google-tag-web/src/GoogleTag.tsx index 6344e49bfd..5cbe21a6d9 100644 --- a/packages/pluggableWidgets/google-tag-web/src/GoogleTag.tsx +++ b/packages/pluggableWidgets/google-tag-web/src/GoogleTag.tsx @@ -30,15 +30,14 @@ function GoogleTagBasicPageView(props: GoogleTagContainerProps): ReactElement | return; } + const configProps = new Map([["send_page_view", false]]); + + if (props.sendUserID && window.mx.session.getUserId() !== undefined) { + configProps.set("user_id", window.mx.session.getUserId()); + } + // execute config if not yet executed - executeCommand( - "config", - "", - { - send_page_view: false - }, - props.targetId.value - ); + executeCommand("config", "", Object.fromEntries(configProps), props.targetId.value); // execute event page_view executeCommand( diff --git a/packages/pluggableWidgets/google-tag-web/src/GoogleTag.xml b/packages/pluggableWidgets/google-tag-web/src/GoogleTag.xml index 3ac1bb53b5..c7e05e9c70 100644 --- a/packages/pluggableWidgets/google-tag-web/src/GoogleTag.xml +++ b/packages/pluggableWidgets/google-tag-web/src/GoogleTag.xml @@ -59,6 +59,10 @@ + + Share user ID + Expose the authenticated User ID to uniquely identify individual users in Google Analytics. + diff --git a/packages/pluggableWidgets/google-tag-web/typings/GoogleTagProps.d.ts b/packages/pluggableWidgets/google-tag-web/typings/GoogleTagProps.d.ts index 17f88d0c1e..6947de07b9 100644 --- a/packages/pluggableWidgets/google-tag-web/typings/GoogleTagProps.d.ts +++ b/packages/pluggableWidgets/google-tag-web/typings/GoogleTagProps.d.ts @@ -36,6 +36,7 @@ export interface GoogleTagContainerProps { widgetMode: WidgetModeEnum; targetId?: DynamicValue; parameters: ParametersType[]; + sendUserID: boolean; command: CommandEnum; eventName: string; trackPageChanges: boolean; @@ -53,6 +54,7 @@ export interface GoogleTagPreviewProps { widgetMode: WidgetModeEnum; targetId: string; parameters: ParametersPreviewType[]; + sendUserID: boolean; command: CommandEnum; eventName: string; trackPageChanges: boolean; diff --git a/packages/pluggableWidgets/google-tag-web/typings/global.d.ts b/packages/pluggableWidgets/google-tag-web/typings/global.d.ts index 19c214c113..68128fa95b 100644 --- a/packages/pluggableWidgets/google-tag-web/typings/global.d.ts +++ b/packages/pluggableWidgets/google-tag-web/typings/global.d.ts @@ -9,7 +9,8 @@ declare global { }; session: { getSessionObjectId(): string, - getConfig() : { locale: { code: string } } + getConfig() : { locale: { code: string } }, + getUserId(): string } }; dojo: {