diff --git a/apps/blog/src/app/layout.tsx b/apps/blog/src/app/layout.tsx index 5bb1f91448..f59a6fa194 100644 --- a/apps/blog/src/app/layout.tsx +++ b/apps/blog/src/app/layout.tsx @@ -8,6 +8,7 @@ import Script from "next/script"; import { BLOG_HOME_DESCRIPTION, BLOG_HOME_TITLE } from "@/lib/blog-metadata"; import { FontAwesomeScript as EclipseFA } from "@prisma/eclipse"; import { JsonLd } from "@prisma-docs/ui/components/json-ld"; +import { GoogleTagManager } from "@prisma-docs/ui/components/google-tag-manager"; const inter = Inter({ subsets: ["latin"], @@ -30,11 +31,7 @@ const blogStructuredData = createBlogStructuredData(); export default function Layout({ children }: LayoutProps<"/">) { return ( - + {/* FontAwesome — not render-critical; explicit strategy prevents accidental beforeInteractive promotion */} @@ -50,6 +47,8 @@ export default function Layout({ children }: LayoutProps<"/">) { src="https://cdn-cookieyes.com/client_data/96980f76df67ad5235fc3f0d/script.js" strategy="afterInteractive" /> + {/* Google Tag Manager — consent-gated; activates only after CookieYes analytics consent */} +
diff --git a/apps/blog/src/components/BlogCTA.tsx b/apps/blog/src/components/BlogCTA.tsx index 0fa88f2ab9..2ea1c7ee14 100644 --- a/apps/blog/src/components/BlogCTA.tsx +++ b/apps/blog/src/components/BlogCTA.tsx @@ -1,4 +1,7 @@ +"use client"; + import { Button } from "@prisma/eclipse"; +import { trackCTA } from "@prisma-docs/ui/lib/analytics"; const CTA_HREF = "https://pris.ly/pdp?utm_source=blog&utm_medium=blog_cta&utm_campaign=blog_post"; @@ -16,7 +19,17 @@ export const BlogCTA = () => {