vTilt
Why vTiltHow It WorksFeaturesFAQDocs
Docs / Quick start
Quick startEvent forwarding
MCP server
Guides
OverviewAuthenticationOAuthAgent skills (prompts)AI intelligenceGoogle Ads
Client setup
CursorClaude DesktopVS CodeCodex
Realtime
Debug ViewRealtime Dashboard
Integration guides
Frontend frameworks
Next.jsNuxt.jsVue.jsReactReact RouterRemixGatsbySvelte / SvelteKitAstroAngularTanStack StartDocusaurus
Backend frameworks
NestJSHonoCloudflare WorkersDjangoFlaskLaravelPhoenixRuby on Rails
Backend languages
PythonPHPRubyElixirGoJava.NET / C#Rust
Stack guides
Vue + PHP
SDK
Browser SDK
InstallScript bundlesEvent trackingAutocaptureIdentify & aliasWeb VitalsSession recordingChat widgetFeature readinessRemote configurationReverse proxyDebug logging
Node SDK
Install & setupCapture, identify & aliasContext & shutdown

Documentation

vTilt
Quick startEvent forwarding

MCP server

Realtime

Debug ViewRealtime Dashboard

Integration guides

SDK

Quick start

Install the vTilt SDK, initialise it with your project token, and start tracking events in three steps. Built to be readable by AI agents.

vTilt is a privacy-first analytics platform you drop into any web app. The browser SDK installs at window.vt, batches events to your project, and forwards them to destinations (Google Tag, Meta CAPI, PostHog, GA4) you configure in the dashboard. This page walks through the minimum integration; deeper topics live under SDK > Browser SDK.

Tip

Tip: If you're integrating with an existing app and your users may already be logged in when the SDK loads, jump to Identify & alias before you ship — calling identify() only on the login event is the most common reason persons stay anonymous.

#Using these docs with an AI agent

Every page in this site is also a plain-markdown file. Point an AI assistant (Claude, ChatGPT, Cursor, Copilot, …) at one of the URLs below and it can integrate vTilt for you end-to-end.

URLWhat it returnsWhen to use it
/llms-full.txtThe entire docs corpus as one markdown stream, with canonical URLs per section.Paste once and let the agent ingest everything.
/llms.txtShort index (llmstxt.org convention) with a one-line summary per page.Smarter agents that fetch pages on demand.
/docs/<slug>.mdThe current page as raw markdown.When you only need a single page in context.

Use the Copy menu in the top-right of any page to grab the markdown, the .md URL, or open the page directly inside ChatGPT or Claude with a pre-seeded prompt.

Tip

Tip: Try this prompt with any modern AI assistant:

Integrate vTilt analytics into my <stack> app. Read the full
spec at https://YOUR-HOST/llms-full.txt and apply it. Pay
particular attention to identifying users who are already
logged in on page load (not only at the login event).
text

#1. Install the SDK

Pick a package manager or paste a script tag — both options expose the same vt global.

npm install @v-tilt/browser
bash

#2. Initialise the SDK

Call vt.init() once, as early as possible (before paint when you can). Anything before this returns no-ops; everything after is queued and flushed once the SDK boots.

import { vt } from '@v-tilt/browser'

vt.init('YOUR_PROJECT_TOKEN', {
  // Optional. https://www.vtilt.com is the managed-cloud ingest host;
  // self-hosted or reverse-proxy users replace this with their own origin.
  api_host: 'https://www.vtilt.com',
  autocapture: true,
  capture_pageview: true,
  capture_pageleave: true,
  persistence: 'localStorage',
})
typescript

Note

Note: Only the project token is required (grab it from your vTilt dashboard). api_host is optional: most integrators on managed cloud use https://www.vtilt.com as shown above. If you front vTilt with a reverse proxy or self-host on a different domain, set api_host to that origin. Omit it entirely to send events to the current page origin via relative URLs (useful when your proxy lives at the same origin as the page).

#3. Track events

Pageviews, clicks and form submits are captured automatically when autocapture is on. For domain-specific events use vt.capture():

vt.capture('button_clicked', {
  button_name: 'Sign Up',
  page: 'homepage',
})

vt.capture('purchase_completed', {
  product_id: 'SKU-123',
  price: 99.99,
  currency: 'USD',
  quantity: 1,
})
typescript

Note

Note: Events go through the rate limiter (10/sec, burst 100), batch in a request queue every 3 seconds, and gzip before they reach the server. Nothing in your app changes when you adjust dashboard settings; remote configuration is fetched on init and applied automatically.

#What to wire up next

TopicWhy it matters
Script bundlesPick array.js vs array.chat.js vs full bundles — especially when chat or recording must load without extra requests.
Identify & aliasLinking events to authenticated users — both at login and on every authenticated page load.
Framework guidesDrop-in setups for Next.js, Nuxt, SvelteKit, Astro, Angular, NestJS, Django, Laravel, Rails, and more.
Reverse proxyRoute SDK traffic through your own domain so ad blockers can't strip analytics.
Event forwardingSend the same events to Google Ads, GA4, Meta CAPI, PostHog.
AutocaptureTune what the SDK captures automatically (allow / ignore lists, sensitive elements).
Session recordingReplay user sessions with privacy-aware masking.
MCP serverConnect Claude, Cursor, ChatGPT or any MCP client to your vTilt project. Nineteen tools (VQL, AI memory, campaigns, docs search, …) — start from the documentation map.

#Next steps

  • Read Identify & alias for the full identification model — anonymous → known user merge, SSR pattern for already-logged-in visitors, logout behaviour.
  • Pick your stack from the framework integration guides — drop-in setups for the most common front-end and back-end frameworks.
  • Use the Debug View to verify events arrive correctly while you integrate.
NextEvent forwarding

On this page

  • Using these docs with an AI agent
  • 1. Install the SDK
  • 2. Initialise the SDK
  • 3. Track events
  • What to wire up next
  • Next steps