From ff7728ce6aa8bf7026dc3e990119961c6039d0f1 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Sun, 9 Nov 2025 17:18:47 +0000 Subject: [PATCH 1/3] feat: add Google Tag Manager to marketing website using Next.js Script component --- apps/web-roo-code/src/app/layout.tsx | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/apps/web-roo-code/src/app/layout.tsx b/apps/web-roo-code/src/app/layout.tsx index 5e510eb848e..115bedc2b5a 100644 --- a/apps/web-roo-code/src/app/layout.tsx +++ b/apps/web-roo-code/src/app/layout.tsx @@ -1,5 +1,6 @@ import React from "react" import type { Metadata } from "next" +import Script from "next/script" import { Inter } from "next/font/google" import { SEO } from "@/lib/seo" import { ogImageUrl } from "@/lib/og" @@ -97,6 +98,30 @@ export default function RootLayout({ children }: { children: React.ReactNode }) /> + {/* Google Tag Manager Script */} + - - )} - {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/providers.tsx b/apps/web-roo-code/src/components/providers/providers.tsx index acbeeb4e147..a0e77b38e23 100644 --- a/apps/web-roo-code/src/components/providers/providers.tsx +++ b/apps/web-roo-code/src/components/providers/providers.tsx @@ -4,20 +4,17 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query" import { ThemeProvider } from "next-themes" import { PostHogProvider } from "./posthog-provider" -import { GoogleAnalyticsProvider } from "./google-analytics-provider" const queryClient = new QueryClient() export const Providers = ({ children }: { children: React.ReactNode }) => { return ( - - - - {children} - - - + + + {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 29ced92e99e..00000000000 --- 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", - }) - } -} From 003a8bea8e945cd3739b62ce3d4e99a15fa5da7a Mon Sep 17 00:00:00 2001 From: Roo Code Date: Sun, 9 Nov 2025 22:06:00 +0000 Subject: [PATCH 3/3] fix: wrap GTM script in consent-checking client component for GDPR compliance --- apps/web-roo-code/src/app/layout.tsx | 25 ------- .../providers/google-tag-manager-provider.tsx | 65 +++++++++++++++++++ .../src/components/providers/providers.tsx | 13 ++-- 3 files changed, 73 insertions(+), 30 deletions(-) create mode 100644 apps/web-roo-code/src/components/providers/google-tag-manager-provider.tsx diff --git a/apps/web-roo-code/src/app/layout.tsx b/apps/web-roo-code/src/app/layout.tsx index 115bedc2b5a..5e510eb848e 100644 --- a/apps/web-roo-code/src/app/layout.tsx +++ b/apps/web-roo-code/src/app/layout.tsx @@ -1,6 +1,5 @@ import React from "react" import type { Metadata } from "next" -import Script from "next/script" import { Inter } from "next/font/google" import { SEO } from "@/lib/seo" import { ogImageUrl } from "@/lib/og" @@ -98,30 +97,6 @@ export default function RootLayout({ children }: { children: React.ReactNode }) /> - {/* Google Tag Manager Script */} -