Skip to content

How it works

Two lines of code. Three kinds of visibility.

The browser script counts people. The server middleware counts everything that never runs JavaScript. The dashboard — and your agents — read both.

01

Add the script

A 1 KB tracker with no cookies, no localStorage identifiers, and no fingerprinting. It sends the page, the referrer host, UTM parameters, and a screen width. That is the whole payload.

  • 1 KB
  • MIT
  • No cookie banner required
index.html
<script defer data-domain="example.com"
  src="https://analytics.example.com/js/v5.js"></script>
02

Add the middleware

Crawlers and agents never load your script. One middleware forwards their requests — user agent, path, referrer — to your Vector 5 instance. By default only non-human actors are recorded; set recordHumans for no-JS sites.

  • Next.js
  • Express
  • Hono
  • Workers
  • Node
middleware.ts
import { vector5 } from '@vector5/middleware/next'

export const middleware = vector5({
  endpoint: 'https://analytics.example.com/api/hit',
  domain: 'example.com',
})
03

Read it — or let your agent

Open the dashboard, or point Claude, Cursor, or Codex at the MCP server. Six read-only tools: stats, pages, sources, AI traffic, goals, insights. Same aggregates the dashboard sees, nothing more.

  • Dashboard
  • MCP server
  • Agent skills
.mcp.json
{
  "mcpServers": {
    "vector5": {
      "command": "npx",
      "args": ["@vector5/mcp"],
      "env": {
        "V5_API_URL": "https://analytics.example.com",
        "V5_API_KEY": "v5_live_…",
        "V5_SITE_ID": "example.com"
      }
    }
  }
}

Everything else

The reports you expect. Plus the ones nobody else has.

Vector 5 is a complete replacement for your current privacy-first tool — and then it keeps going.

Crawl → referral

See which pages AI crawlers fetch, and which of those pages later send you humans. Cited-but-never-clicked becomes a list, not a guess.

pagecrawledreferredrate
/docs/middleware1286148%
/blog/cookieless962223%
/compare210199%
/pricing34021%

Realtime

People on your site in the last five minutes — humans and humans via AI only. Crawlers never inflate the live number.

Right now

27

Goals & custom events

Name an event, pass optional props, filter by actor. Conversion rates that agents cannot distort.

// Custom event with props
window.v5('signup', { plan: 'pro' })

// Ignore your own visits
localStorage.v5_ignore = '1'

Campaigns & geo

UTM parameters as first-class dimensions — utm_medium=ai_search is recognised as an assistant channel. Country and region from the IP, then the IP is gone.

  • utm_source
  • utm_medium
  • utm_campaign
  • country
  • region
  • device

Agents read it too

An MCP server and a set of agent skills: audit crawler access, find cited-but-not-clicked pages, write the weekly founder briefing — from observed numbers only.

  • query_statsread-only
  • top_pagesread-only
  • sourcesread-only
  • ai_trafficread-only
  • goalsread-only
  • insightsread-only

Public crawler index

A live, public list of every AI crawler Vector 5 recognises and the source it maps to — GPTBot → ChatGPT, ClaudeBot → Claude, Google-Extended → Gemini. Useful even if you never install anything.

GET /api/crawler-index

Import. Export. Leave.

Bring history in from CSV. Export every aggregate as JSON whenever you like. Your data is yours; the schema is documented in the repo.

POST /import · GET /export

Early access

Signup is closed. Request a seat.

Vector 5 is in private early access. Leave your email — we invite people in small batches. No account is created until then.

Self-host from GitHub

Invite only · No public signup · No credit card