diff --git a/apps/web-roo-code/src/app/shared/AgentLandingContent.tsx b/apps/web-roo-code/src/app/shared/AgentLandingContent.tsx index c3d349fb99..8d99c03355 100644 --- a/apps/web-roo-code/src/app/shared/AgentLandingContent.tsx +++ b/apps/web-roo-code/src/app/shared/AgentLandingContent.tsx @@ -19,7 +19,6 @@ import { Button } from "@/components/ui" import { AnimatedBackground } from "@/components/homepage" import { AgentCarousel } from "@/components/reviewer/agent-carousel" import { EXTERNAL_LINKS } from "@/lib/constants" -import { trackGoogleAdsConversion } from "@/lib/analytics/google-ads" import { type AgentPageContent, type IconName } from "./agent-page-content" /** @@ -97,7 +96,6 @@ export function AgentLandingContent({ content }: { content: AgentPageContent }) href={EXTERNAL_LINKS.CLOUD_APP_SIGNUP_PRO} target="_blank" rel="noopener noreferrer" - onClick={trackGoogleAdsConversion} className="flex w-full items-center justify-center"> {content.hero.cta.buttonText} @@ -219,7 +217,6 @@ export function AgentLandingContent({ content }: { content: AgentPageContent }) href={EXTERNAL_LINKS.CLOUD_APP_SIGNUP_PRO} target="_blank" rel="noopener noreferrer" - onClick={trackGoogleAdsConversion} className="flex items-center justify-center"> {content.cta.buttonText} diff --git a/apps/web-roo-code/src/components/providers/google-analytics-provider.tsx b/apps/web-roo-code/src/components/providers/google-analytics-provider.tsx deleted file mode 100644 index 7c0a7edfc6..0000000000 --- a/apps/web-roo-code/src/components/providers/google-analytics-provider.tsx +++ /dev/null @@ -1,60 +0,0 @@ -"use client" - -import { useEffect, useState } from "react" -import Script from "next/script" -import { hasConsent, onConsentChange } from "@/lib/analytics/consent-manager" - -// Google Tag Manager ID -const GTM_ID = "AW-17391954825" - -/** - * Google Analytics Provider - * Implements Google's standard gtag.js loading pattern - */ -export function GoogleAnalyticsProvider({ children }: { children: React.ReactNode }) { - const [shouldLoad, setShouldLoad] = useState(false) - - useEffect(() => { - // Check initial consent status - if (hasConsent()) { - setShouldLoad(true) - } - - // Listen for consent changes - const unsubscribe = onConsentChange((consented) => { - if (consented) { - setShouldLoad(true) - } - }) - - return unsubscribe - }, []) - - return ( - <> - {shouldLoad && ( - <> - {/* Google tag (gtag.js) */} - - - )} - {children} - - ) -} - -// Declare global types for TypeScript -declare global { - interface Window { - dataLayer: unknown[] - gtag: (...args: unknown[]) => void - } -} diff --git a/apps/web-roo-code/src/components/providers/google-tag-manager-provider.tsx b/apps/web-roo-code/src/components/providers/google-tag-manager-provider.tsx new file mode 100644 index 0000000000..d08281896c --- /dev/null +++ b/apps/web-roo-code/src/components/providers/google-tag-manager-provider.tsx @@ -0,0 +1,65 @@ +"use client" + +import { useEffect, useState } from "react" +import Script from "next/script" +import { hasConsent, onConsentChange } from "@/lib/analytics/consent-manager" + +// Google Tag Manager Container ID +const GTM_ID = "GTM-M2JZHV8N" + +/** + * Google Tag Manager Provider + * Loads GTM only after user consent is given, following GDPR requirements + */ +export function GoogleTagManagerProvider({ children }: { children: React.ReactNode }) { + const [shouldLoad, setShouldLoad] = useState(false) + + useEffect(() => { + // Check initial consent status + if (hasConsent()) { + setShouldLoad(true) + } + + // Listen for consent changes + const unsubscribe = onConsentChange((consented) => { + if (consented) { + setShouldLoad(true) + } + }) + + return unsubscribe + }, []) + + return ( + <> + {shouldLoad && ( + <> + {/* Google Tag Manager Script */} +