Analytics
Add Vercel Analytics, Vercel Speed Insights, and Google Tag Manager to the storefront.
How to use
Enable Analytics
By default, the storefront has no analytics or performance monitoring. This skill adds Vercel Analytics, Vercel Speed Insights, and/or Google Tag Manager using their recommended integrations.
Before you start
Ask the user two questions in order:
1. Do you want Vercel Analytics and/or Vercel Speed Insights?
- Vercel Analytics — page view and custom event tracking via
@vercel/analytics - Vercel Speed Insights — Core Web Vitals monitoring via
@vercel/speed-insights - Both (recommended)
- Neither
2. Do you want Google Tag Manager?
If yes, ask for the GTM container ID (e.g. GTM-XXXXXX). This will be stored in the NEXT_PUBLIC_GTM_ID environment variable.
Wait for the user to answer both questions before proceeding.
Part A: Vercel Analytics and Speed Insights
Skip this section if the user selected neither.
A1. Install dependencies
Install only the packages the user selected:
A2. Create components/analytics.tsx
Create a component that renders the selected analytics components. Each library handles its own client-side behavior internally, so this can be a server component:
If only one was selected, remove the other import and component.
Part B: Google Tag Manager
Skip this section if the user did not want GTM.
B1. Install dependency
B2. Add environment variable
Add to .env.example:
Set the actual value in .env.local or in the Vercel dashboard under Environment Variables.
B3. Add GTM to components/analytics.tsx
If the file was already created in Part A, add GTM to it. If Part A was skipped, create the file now.
With both Vercel Analytics and GTM:
With GTM only (no Vercel Analytics or Speed Insights):
Part C: Root layout integration
C1. Update app/layout.tsx
Import the component and render it inside <body>, after the </NextIntlClientProvider> closing tag:
Place <AnalyticsComponents /> as a sibling after NextIntlClientProvider, not inside it. Analytics components do not need i18n context.
Guardrails
- All analytics components live in a single
components/analytics.tsxfile. Do not scatter them across the layout. - The GTM container ID must come from
NEXT_PUBLIC_GTM_ID, never hardcoded. The component renders nothing if the env var is missing. - Use
@next/third-parties/googlefor GTM, not a manual<script>tag. The Next.js component handles script loading and performance optimization. - Import paths: use
@vercel/analytics/nextand@vercel/speed-insights/next(the/nextsubpath), not the root package exports. - Add
NEXT_PUBLIC_GTM_IDto.env.examplewith a placeholder value so other developers know the variable exists.