Skip to content

Commit aa135a2

Browse files
committed
feat(analytics): integrate Google Analytics 4 support with environment variable for measurement ID
1 parent 36dc598 commit aa135a2

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

app/[locale]/layout.tsx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,24 @@ export default async function RootLayout({ params, children }: RootLayoutProps)
301301
{/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}
302302
{/* @ts-ignore */}
303303
<meta name="impact-site-verification" value="e6afc3fc-0dcd-4625-a8cd-282991d40164" />
304+
305+
{/* Google Analytics 4 */}
306+
{env.NEXT_PUBLIC_GA4_MEASUREMENT_ID && (
307+
<>
308+
<script async src={`https://www.googletagmanager.com/gtag/js?id=${env.NEXT_PUBLIC_GA4_MEASUREMENT_ID}`} />
309+
<script
310+
dangerouslySetInnerHTML={{
311+
__html: `
312+
window.dataLayer = window.dataLayer || [];
313+
function gtag(){dataLayer.push(arguments);}
314+
gtag('js', new Date());
315+
gtag('config', '${env.NEXT_PUBLIC_GA4_MEASUREMENT_ID}');
316+
`,
317+
}}
318+
/>
319+
</>
320+
)}
321+
304322
{/* Structured Data */}
305323
<StructuredDataScript data={websiteStructuredData} />
306324
<StructuredDataScript data={organizationStructuredData} />

src/env.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ export const env = createEnv({
9595
NEXT_PUBLIC_AD_PROVIDER: z.enum(["adsense", "ezoic"]).optional().default("adsense"),
9696
NEXT_PUBLIC_EZOIC_VERTICAL_LEFT_PLACEMENT_ID: z.string().optional(),
9797
NEXT_PUBLIC_EZOIC_VERTICAL_RIGHT_PLACEMENT_ID: z.string().optional(),
98+
// GA4
99+
NEXT_PUBLIC_GA4_MEASUREMENT_ID: z.string().optional(),
98100
},
99101

100102
experimental__runtimeEnv: {
@@ -155,5 +157,6 @@ export const env = createEnv({
155157
NEXT_PUBLIC_AD_PROVIDER: process.env.NEXT_PUBLIC_AD_PROVIDER,
156158
NEXT_PUBLIC_EZOIC_VERTICAL_LEFT_PLACEMENT_ID: process.env.NEXT_PUBLIC_EZOIC_VERTICAL_LEFT_PLACEMENT_ID,
157159
NEXT_PUBLIC_EZOIC_VERTICAL_RIGHT_PLACEMENT_ID: process.env.NEXT_PUBLIC_EZOIC_VERTICAL_RIGHT_PLACEMENT_ID,
160+
NEXT_PUBLIC_GA4_MEASUREMENT_ID: process.env.NEXT_PUBLIC_GA4_MEASUREMENT_ID,
158161
},
159162
});

0 commit comments

Comments
 (0)