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 = () => {