GuidesAnalytics (Pro)

Analytics

Analytics require a Trailguide Pro account. Start a free 14-day trial — no credit card required.

Trailguide Pro tracks tour events — starts, completions, skips, step views, and abandoned tours — and surfaces them in a dashboard with drop-off charts, completion rates, and step-level metrics.

Enable analytics

Pass an analytics config to any hook or component:

import { useTrailManager, Trailguide } from '@trailguide/runtime'
import { onboardingTour } from './tours'
 
const ANALYTICS: AnalyticsConfig = {
  endpoint: 'https://app.gettrailguide.com/api/analytics',
  userId: 'your-trailguide-user-id',  // from app.gettrailguide.com
}
 
export default function Page() {
  const { isActive, dismiss } = useTrailManager(onboardingTour, {
    once: true,
    analytics: ANALYTICS,
  })
 
  return (
    <>
      {isActive && (
        <Trailguide
          trail={onboardingTour}
          onComplete={dismiss}
          onSkip={dismiss}
          analytics={ANALYTICS}
        />
      )}
    </>
  )
}

Events tracked

EventWhen it fires
trail_startedUser starts the tour
step_viewedUser sees a step
step_completedUser advances past a step
trail_completedUser finishes the last step
trail_skippedUser clicks the × button
trail_abandonedTour is stopped programmatically (e.g. navigation)

Debug mode

Set debug: true to log all events to the browser console:

const ANALYTICS: AnalyticsConfig = {
  endpoint: 'https://app.gettrailguide.com/api/analytics',
  userId: 'your-user-id',
  debug: true,
}

You will see entries like:

[Trailguide Analytics] trail_started { trail_id: "onboarding", step_id: "step-1", step_index: 0 }
[Trailguide Analytics] step_viewed { trail_id: "onboarding", step_id: "step-1", step_index: 0 }

Override trail ID

If you want analytics to use a different ID than trail.id (e.g. to merge events from multiple tour versions), pass trailId:

const ANALYTICS: AnalyticsConfig = {
  endpoint: 'https://app.gettrailguide.com/api/analytics',
  userId: 'your-user-id',
  trailId: 'onboarding-canonical', // override trail.id for analytics
}

Vanilla JS

Analytics work identically with the core Trailguide class:

import { Trailguide } from '@trailguide/core'
 
const instance = new Trailguide({
  analytics: {
    endpoint: 'https://app.gettrailguide.com/api/analytics',
    userId: 'your-user-id',
  },
})
 
instance.start(myTour)

Or with the static API:

import { start } from '@trailguide/core'
 
start(myTour, {
  analytics: {
    endpoint: 'https://app.gettrailguide.com/api/analytics',
    userId: 'your-user-id',
  },
})