Installation

Install Visitors on Astro

Astro makes it easy to add analytics scripts to your site. Here are the recommended approaches for integrating Visitors.

Replace YOUR_TOKEN with your project token.

Using Layouts

Add the script to your base layout component that wraps all pages.

src/layouts/Layout.astro
---
export interface Props {
  title: string;
}
const { title } = Astro.props;
---
<script 
  src="https://cdn.visitors.now/v.js" 
  data-token="YOUR_TOKEN">
</script>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>{title}</title>
  </head>
  <body>
    <slot />
  </body>
</html>

Using Astro's Script Component

Astro provides a <script> component for adding external scripts:

src/layouts/Layout.astro
---
export interface Props {
  title: string;
}
const { title } = Astro.props;
---

<script 
  is:inline 
  src="https://cdn.visitors.now/v.js" 
  data-token="YOUR_TOKEN">
</script>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>{title}</title>
  </head>
  <body>
    <slot />
  </body>
</html>

Dynamic loading

For dynamic loading after the page has loaded:

src/layouts/Layout.astro
---
export interface Props {
  title: string;
}
const { title } = Astro.props;
---

<script>
  // This runs on the client
  const script = document.createElement('script');
  script.src = 'https://cdn.visitors.now/v.js';
  script.setAttribute('data-token', 'YOUR_TOKEN');
  script.async = true;
  
  document.head.appendChild(script);
</script>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>{title}</title>
  </head>
  <body>
    <slot />
  </body>
</html>