From bd1b3ad9954013721819346a6d6ceebdc8e1bc07 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Tue, 27 Jan 2026 19:52:24 +0000 Subject: [PATCH] feat(blog): add PostHog analytics events for blog pages - Add analytics.ts with blog-specific tracking events: - trackBlogIndexView: Track blog index views with post count - trackBlogPostView: Track individual post views with metadata - trackBlogPostScrollDepth: Track reading progress (25%, 50%, 75%, 100%) - trackBlogPostTimeSpent: Track time spent on posts - trackBlogPostShare: Track social share clicks - trackBlogPostCTAClick: Track CTA engagement - Add BlogIndexAnalytics and BlogPostAnalytics client components - Integrate analytics into /blog and /blog/[slug] pages Attribution is handled by PostHog save_referrer and save_campaign_params. MKT-74 --- .../web-roo-code/src/app/blog/[slug]/page.tsx | 12 +++ apps/web-roo-code/src/app/blog/page.tsx | 4 + .../src/components/blog/blog-analytics.tsx | 99 +++++++++++++++++++ apps/web-roo-code/src/lib/blog/analytics.ts | 96 ++++++++++++++++++ apps/web-roo-code/src/lib/blog/index.ts | 10 ++ 5 files changed, 221 insertions(+) create mode 100644 apps/web-roo-code/src/components/blog/blog-analytics.tsx create mode 100644 apps/web-roo-code/src/lib/blog/analytics.ts diff --git a/apps/web-roo-code/src/app/blog/[slug]/page.tsx b/apps/web-roo-code/src/app/blog/[slug]/page.tsx index aee333bbee..b95724494f 100644 --- a/apps/web-roo-code/src/app/blog/[slug]/page.tsx +++ b/apps/web-roo-code/src/app/blog/[slug]/page.tsx @@ -12,6 +12,7 @@ import { getArticleStructuredData, getBlogPostBreadcrumbStructuredData, } from "@/lib/blog" +import { BlogPostAnalytics } from "@/components/blog/blog-analytics" // Force dynamic rendering to evaluate publish gating at request-time export const dynamic = "force-dynamic" @@ -87,6 +88,17 @@ export default async function BlogPostPage({ params }: BlogPostPageProps) {