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 */}
+
+ {/* Google Tag Manager (noscript) */}
+
+ >
+ )}
+ {children}
+ >
+ )
+}
diff --git a/apps/web-roo-code/src/components/providers/providers.tsx b/apps/web-roo-code/src/components/providers/providers.tsx
index acbeeb4e14..a0e532b5e4 100644
--- a/apps/web-roo-code/src/components/providers/providers.tsx
+++ b/apps/web-roo-code/src/components/providers/providers.tsx
@@ -3,21 +3,21 @@
import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
import { ThemeProvider } from "next-themes"
+import { GoogleTagManagerProvider } from "./google-tag-manager-provider"
import { PostHogProvider } from "./posthog-provider"
-import { GoogleAnalyticsProvider } from "./google-analytics-provider"
const queryClient = new QueryClient()
export const Providers = ({ children }: { children: React.ReactNode }) => {
return (
-
+
{children}
-
+
)
}
diff --git a/apps/web-roo-code/src/lib/analytics/google-ads.ts b/apps/web-roo-code/src/lib/analytics/google-ads.ts
deleted file mode 100644
index 29ced92e99..0000000000
--- a/apps/web-roo-code/src/lib/analytics/google-ads.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Google Ads conversion tracking utilities
- */
-
-/**
- * Track a Google Ads conversion event
- * This should only be called after user consent has been given
- */
-export function trackGoogleAdsConversion() {
- if (typeof window !== "undefined" && window.gtag) {
- window.gtag("event", "conversion", {
- send_to: "AW-17391954825/VtOZCJe_77MbEInXkOVA",
- value: 10.0,
- currency: "USD",
- })
- }
-}