Menu

Getting started with Vercel Web Analytics

Last updated September 24, 2025

This guide will help you get started with using Vercel Web Analytics on your project, showing you how to enable it, add the package to your project, deploy your app to Vercel, and view your data in the dashboard.

Select your framework to view instructions on using the Vercel Web Analytics in your project.

  • A Vercel account. If you don't have one, you can sign up for free.
  • A Vercel project. If you don't have one, you can create a new project.
  • The Vercel CLI installed. If you don't have it, you can install it using the following command:
    Terminal
    pnpm i -g vercel
  1. On the Vercel dashboard, select your Project and then click the Analytics tab and click Enable from the dialog.

    Enabling Web Analytics will add new routes (scoped at /_vercel/insights/*) after your next deployment.

  2. pages/_app.tsx
    import type { AppProps } from 'next/app';
    import { Analytics } from '@vercel/analytics/next';
     
    function MyApp({ Component, pageProps }: AppProps) {
      return (
        <>
          <Component {...pageProps} />
          <Analytics />
        </>
      );
    }
     
    export default MyApp;
    pages/_app.js
    import { Analytics } from '@vercel/analytics/next';
     
    function MyApp({ Component, pageProps }) {
      return (
        <>
          <Component {...pageProps} />
          <Analytics />
        </>
      );
    }
     
    export default MyApp;
    app/layout.tsx
    import { Analytics } from '@vercel/analytics/next';
     
    export default function RootLayout({
      children,
    }: {
      children: React.ReactNode;
    }) {
      return (
        <html lang="en">
          <head>
            <title>Next.js</title>
          </head>
          <body>
            {children}
            <Analytics />
          </body>
        </html>
      );
    }
    app/layout.jsx
    import { Analytics } from '@vercel/analytics/next';
     
    export default function RootLayout({ children }) {
      return (
        <html lang="en">
          <head>
            <title>Next.js</title>
          </head>
          <body>
            {children}
            <Analytics />
          </body>
        </html>
      );
    }
    app/root.tsx
    import {
      Links,
      LiveReload,
      Meta,
      Outlet,
      Scripts,
      ScrollRestoration,
    } from '@remix-run/react';
    import { Analytics } from '@vercel/analytics/remix';
     
    export default function App() {
      return (
        <html lang="en">
          <head>
            <meta charSet="utf-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1" />
            <Meta />
            <Links />
          </head>
          <body>
            <Analytics />
            <Outlet />
            <ScrollRestoration />
            <Scripts />
            <LiveReload />
          </body>
        </html>
      );
    }
    app/root.jsx
    import {
      Links,
      LiveReload,
      Meta,
      Outlet,
      Scripts,
      ScrollRestoration,
    } from '@remix-run/react';
    import { Analytics } from '@vercel/analytics/remix';
     
    export default function App() {
      return (
        <html lang="en">
          <head>
            <meta charSet="utf-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1" />
            <Meta />
            <Links />
          </head>
          <body>
            <Analytics />
            <Outlet />
            <ScrollRestoration />
            <Scripts />
            <LiveReload />
          </body>
        </html>
      );
    }
    app.vue
    <script setup lang="ts">
    import { Analytics } from '@vercel/analytics/nuxt';
    </script>
     
    <template>
      <Analytics />
      <NuxtPage />
    </template>
    app.vue
    <script setup>
    import { Analytics } from '@vercel/analytics/nuxt';
    </script>
     
    <template>
      <Analytics />
      <NuxtPage />
    </template>
    src/routes/+layout.ts
    import { dev } from '$app/environment';
    import { injectAnalytics } from '@vercel/analytics/sveltekit';
     
    injectAnalytics({ mode: dev ? 'development' : 'production' });
    src/routes/+layout.js
    import { dev } from '$app/environment';
    import { injectAnalytics } from '@vercel/analytics/sveltekit';
     
    injectAnalytics({ mode: dev ? 'development' : 'production' });
    src/layouts/Base.astro
    ---
    import Analytics from '@vercel/analytics/astro';
    {/* ... */}
    ---
     
    <html lang="en">
    	<head>
        <meta charset="utf-8" />
        <!-- ... -->
        <Analytics />
    	</head>
    	<body>
    		<slot />
      </body>
    </html>
    src/layouts/Base.astro
    ---
    import Analytics from '@vercel/analytics/astro';
    {/* ... */}
    ---
     
    <html lang="en">
    	<head>
        <meta charset="utf-8" />
        <!-- ... -->
        <Analytics />
    	</head>
    	<body>
    		<slot />
      </body>
    </html>
    astro.config.mjs
    import { defineConfig } from 'astro/config';
    import vercel from '@astrojs/vercel/serverless';
     
    export default defineConfig({
      output: 'server',
      adapter: vercel({
        webAnalytics: {
          enabled: true, // set to false when using @vercel/analytics@1.4.0
        },
      }),
    });
    astro.config.mjs
    import { defineConfig } from 'astro/config';
    import vercel from '@astrojs/vercel/serverless';
     
    export default defineConfig({
      output: 'server',
      adapter: vercel({
        webAnalytics: {
          enabled: true, // set to false when using @vercel/analytics@1.4.0
        },
      }),
    });
    index.html
    <script>
      window.va = window.va || function () { (window.vaq = window.vaq || []).push(arguments); };
    </script>
    <script defer src="/_vercel/insights/script.js"></script>
    index.html
    <script>
      window.va = window.va || function () { (window.vaq = window.vaq || []).push(arguments); };
    </script>
    <script defer src="/_vercel/insights/script.js"></script>
    main.ts
    import { inject } from '@vercel/analytics';
     
    inject();
    main.js
    import { inject } from '@vercel/analytics';
     
    inject();
    App.tsx
    import { Analytics } from '@vercel/analytics/react';
     
    export default function App() {
      return (
        <div>
          {/* ... */}
          <Analytics />
        </div>
      );
    }
    App.jsx
    import { Analytics } from '@vercel/analytics/react';
     
    export default function App() {
      return (
        <div>
          {/* ... */}
          <Analytics />
        </div>
      );
    }
    src/App.vue
    <script setup lang="ts">
    import { Analytics } from '@vercel/analytics/vue';
    </script>
     
    <template>
      <Analytics />
      <!-- your content -->
    </template>
    src/App.vue
    <script setup>
    import { Analytics } from '@vercel/analytics/vue';
    </script>
     
    <template>
      <Analytics />
      <!-- your content -->
    </template>
  3. Deploy your app using the following command:

    terminal
    vercel deploy

    If you haven't already, we also recommend connecting your project's Git repository, which will enable Vercel to deploy your latest commits to main without terminal commands.

    Once your app is deployed, it will start tracking visitors and page views.

    If everything is set up properly, you should be able to see a Fetch/XHR request in your browser's Network tab from /_vercel/insights/view when you visit any page.

  4. Once your app is deployed, and users have visited your site, you can view your data in the dashboard.

    To do so, go to your dashboard, select your project, and click the Analytics tab.

    After a few days of visitors, you'll be able to start exploring your data by viewing and filtering the panels.

    Users on Pro and Enterprise plans can also add custom events to their data to track user interactions such as button clicks, form submissions, or purchases.

Learn more about how Vercel supports privacy and data compliance standards with Vercel Web Analytics.

Now that you have Vercel Web Analytics set up, you can explore the following topics to learn more:


Was this helpful?

supported.