vTilt
By roleFoundersKnow what to fix firstMarketersSee what happens after the clickCMOsSee what your budget really buys
By businessSaaSTurn signups into active usersEcommerceSee why shoppers abandon cartsAgenciesProve your work to clientsEnterpriseOne customer record for every team
MeasureWeb AnalyticsFind where buyers leaveSession ReplaySee why they left, not just that they didAdsKnow what paid visitors do nextIntegrationsOne snippet feeds your stack
ThinkPeopleOne profile per customerCustomer MemoryvTilt remembers every visitorSite KnowledgeAnswers and audits from your own pages
ActAsk AIAnswers from real behaviorAI ChatChat that knows the visitorEmail CampaignsEmail from real visits
PricingWhy vTiltDocs
Docs / Verify events
Getting Started
OverviewInstallInitializeIdentify usersTrack eventsLogout & resetVerify eventsCommon mistakes
Guides
Event forwardingReverse proxyRealtime dashboardSite knowledge
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
API Reference
Browser SDK
Script bundlesAutocaptureWeb VitalsSession recordingChat widgetFeature readinessRemote configurationDebug logging
Node SDK
Install & setupCapture, identify & aliasContext & shutdownGlobal properties & opt-outError tracking
MCP server
Guides
OverviewAuthenticationOAuthAgent skills (prompts)AI intelligenceSite knowledgeGoogle AdsMeta Ads
Client setup
CursorClaude DesktopVS CodeCodex

Getting Started

OverviewInstallInitializeIdentify usersTrack eventsLogout & resetVerify eventsCommon mistakes

Guides

Event forwardingReverse proxyRealtime dashboardSite knowledge

API Reference

MCP server

On this page

On this page

  • How it works
  • Enable debug mode in the SDK
  • Using the Debug View
  • SSE stream (advanced)
DocsGetting StartedVerify events

Verify events

Last updated July 22, 2026

Confirm events arrive in Debug View within seconds — the last step of Getting Started.

The Debug View shows a real-time stream of every event your site sends to vTilt, including forwarding status for each configured destination. It works like Google Analytics DebugView — you can see individual events as they arrive, inspect their properties, and verify that forwarding to GA4, Meta CAPI, or PostHog is working correctly.

#How it works

Events flow through the normal ingestion pipeline and are simultaneously buffered to a real-time stream. The dashboard connects via Server-Sent Events (SSE) and receives events within ~1 second of ingestion.

  1. SDK sends events to /api/e as normal.
  2. Server processes, enriches, and stores events in ClickHouse.
  3. Events are buffered to a Redis sorted set for the debug stream.
  4. Dashboard connects via SSE and renders events in real time.
  5. Forwarding results arrive moments later with per-destination status.

#Enable debug mode in the SDK

When debug mode is active, every event includes a $debug: true property. This is useful for filtering debug traffic in the Debug View.

vt.init('YOUR_PROJECT_TOKEN', {
  api_host: 'https://www.vtilt.com',
  debug: true,
})
typescript

You can also enable debug mode via a URL parameter — no code change needed:

https://your-site.com/?vtilt_debug=1
text

#Using the Debug View

Navigate to the Debug page from the project sidebar.

FeatureDescription
Event TimelineLive stream of events, newest first. Click any event to expand its full properties JSON.
Forwarding StatusEach event shows badges per configured destination — green for sent, red for failed, gray for filtered.
FiltersFilter by event type in the sidebar. See live counts per event name.
Pause / ResumePause the stream to inspect events without them scrolling away; resume to catch up with buffered events.
Connection StatusLive indicator shows connection state. Auto-reconnects on disconnect.

#SSE stream (advanced)

The debug stream is a standard Server-Sent Events endpoint. Connect to it programmatically when you need to integrate with custom tooling:

const source = new EventSource(
  '/api/projects/<projectId>/debug/stream?project_id=<projectId>',
  { withCredentials: true },
)

source.addEventListener('debug_event', e => {
  const event = JSON.parse(e.data)
  console.log('Event:', event.eventName, event.properties)
})

source.addEventListener('forwarding', e => {
  const result = JSON.parse(e.data)
  console.log('Forwarding:', result.eventId, result.destinations)
})
typescript
PreviousLogout & resetGetting StartedNextCommon mistakesGetting Started