Open Source · MIT License

Tours break.
Tests miss it.
Trailguide fixes both.

Guided onboarding tours that automatically run as Playwright CI tests — so broken steps get caught before users do. Plus completion analytics and structured feedback to understand what to fix next.

View Documentation

Free runtime forever. 14-day Pro trial — $49/month.

p.s. the confetti at the end is a built-in step type. One line of JSON.

welcome.json
Onboarding
User tour
in browser
CI Test
Playwright
regression
Replaces

Four tools in one.
At a fraction of the cost.

Most teams pay for a product tour tool, an E2E testing platform, an analytics dashboard, and a feedback collector separately — and none of them talk to each other.

Pendo
Product tours & in-app guidance
~$500/mo
Mabl / Cypress Cloud
E2E automated testing
~$500/mo
Hotjar / Mixpanel
Analytics & user feedback
~$100/mo
Total $1,100+/month
or
Tours · Tests · Analytics · Feedback
Trailguide
$49/mo
+ free open source runtime
Start 14-day trial
Philosophy

Why Trailguide exists

Most product tour tools charge per user, lock your content in their dashboard, and disappear when they shut down. We think that's broken.

You own your tours

Tours are JSON files in your repo. Review them in PRs. Roll back mistakes. Fork them for experiments. They're yours forever.

No surprise bills

The runtime is free for unlimited users. We'll never charge you based on how many people see your tours.

Works everywhere

React, Vue, Svelte, vanilla JS. If it runs in a browser, Trailguide works. No framework lock-in either.

The Old Way

  • Pay per monthly active user
  • Tutorials locked in vendor dashboard
  • No version control
  • Can't review changes in PRs
  • Tours break silently in production
  • Vendor goes down = tours gone

The Trailguide Way

  • Free runtime, unlimited users
  • Tutorials are JSON in your repo
  • Full Git history
  • Review tour changes like code
  • Same file runs as a CI test. Breaks caught before users see them.
  • You own everything
Quick Start

Ship a tour in 5 minutes

Three steps. No account required.

1

Install the package

npm install @trailguide/core
2

Create a trail file

// tours/welcome.json
{
  "id": "welcome",
  "title": "Welcome Tour",
  "steps": [
    {
      "target": "[data-trail-id='create-btn']",
      "title": "Start here",
      "content": "Click to create your first project.",
      "placement": "bottom"
    }
  ]
}
3

Start the tour

import { start } from '@trailguide/core';
import '@trailguide/core/dist/style.css';

fetch('/tours/welcome.json')
  .then(res => res.json())
  .then(trail => start(trail));
Ideal Fit

Built for teams who want control

Engineers set it up once. Then anyone on the team can build tours.

Good fit

  • Dev teams who want onboarding without a SaaS dependency
  • Product managers who want to ship and maintain tours without waiting on engineering
  • Customer success teams building walkthroughs for complex features
  • Teams that ship frequently and need tours that stay current as the app changes
  • Products that ship behind firewalls or on-prem
  • OSS maintainers documenting complex UIs
  • Teams tired of per-seat pricing

Not a fit

  • Teams with no engineering resources at all (the initial install requires a developer)
  • Teams who need marketing to deploy tours with zero engineer review
What You Get

Everything you need, nothing you don't

Git-Native

Tours are JSON files. Review changes in PRs, roll back mistakes, branch for experiments.

No Lock-In

You own your tour data. Export, migrate, or self-host forever. We can't hold your tutorials hostage.

No Per-User Pricing

The runtime is free. Forever. Show tours to a million users without paying a cent.

Developer-First

TypeScript types, React hooks, clean APIs. Built by developers who've used the clunky alternatives.

Themeable

CSS custom properties for every color, radius, and shadow. Match your brand with a few lines of CSS. Dark mode included.

Tiny Bundle

Under 13kb gzipped (JS + CSS). No analytics bloat, no tracking scripts, no third-party requests.

New · @trailguide/playwright

The only tour tool that also runs your tours as tests

Set any trail to Both mode. It shows onboarding tooltips to real users and runs as a Playwright regression test in CI. Automatically.

For users

The same trail file plays as the onboarding tooltip sequence your users see. Nothing changes about how you ship tours.

+

In CI

On every deploy, Playwright walks each step: clicking, filling, asserting. If a button moves or a selector breaks, the test fails before users hit it.

// playwright.config.ts — add once, covers every trail set to test/both mode
import { test } from '@playwright/test';
import { runTrail } from '@trailguide/playwright';
import welcomeTrail from './tours/welcome.json';

test('welcome tour', async ({ page }) => {
  await page.goto('https://myapp.com');
  await runTrail(page, welcomeTrail);
});
Actions
clickfilltypehover selectcheckdragscroll pressfocusfile uploadevaluate
Assertions
visiblehiddentextvalue urltitleattributecount screenshotcustom
Waits
network idleDOM readyselectortimeout
Tab handling
click to new tabswitch contextmulti-page flows
Try it free

No other product tour tool does this.

E2E Testing

Full E2E automation.
Not the enterprise price tag.

Codeless testing platforms charge per test, per seat, and per month — often hundreds or thousands of dollars. Trailguide's full test runner is included in Pro at $49/month. Unlimited tests. Unlimited team.

Write tests as JSON, not code

Any trail set to test mode is a Playwright test. No Playwright knowledge required. Click, fill, assert, wait — all defined in a JSON file your whole team can read and edit.

Tests don't need to be tours

Set a trail to test-only mode and it never shows a tooltip to users. It exists purely as a CI test. Use it to cover login flows, checkout paths, onboarding funnels — anything you'd pay a codeless testing platform to automate.

Tests live in your repo

No vendor dashboard to log into. No proprietary test format. Your tests are JSON files alongside your code, reviewed in PRs, rolled back with git, and owned by you forever.

$49/month. That's it.

No per-test limits. No usage tiers. The same flat rate that gets you the visual editor and analytics also gets you a full E2E test runner. $49/month, cancel anytime.

Typical codeless testing platform
× $500+ per month to start
× Per-seat or per-test pricing
× Tests locked in vendor dashboard
× No version control
× Separate tool from your product tours
Trailguide
$49/month flat
Unlimited tests, no seat limits
Tests are JSON files in your repo
Full git history, PR reviews
Tours and tests in one tool
The Loop

Build. Tour. Test. Understand.

Every product team runs this cycle — ship a feature, guide users through it, verify it doesn't break, learn what to fix next. Trailguide is designed around that loop.

01 · Build

Write the trail

Define tours as JSON in your repo — or record them visually by clicking through your app. Flows live next to the features they document, reviewed in PRs alongside code.

02 · Tour

Guide your users

The trail plays as an interactive onboarding sequence. Tooltips, announcements, checklists, nudges, celebrations, feedback prompts — all step types, in any order.

03 · Test

Catch breaks in CI

The same JSON file runs as a Playwright regression test on every deploy. If a button moves or a selector breaks, CI fails before any user is affected.

04 · Understand

See what's next

Completion funnels show exactly where users drop off. Product Signals reveal word themes and sentiment. The data tells you what to fix in the next cycle.

↩ Then loop back to Build — fix what you found and ship the next version.

Pro Feature

Know exactly where users drop off

Stop guessing. See real completion data for every trail — with trend comparisons, step-by-step funnels, and word themes from your feedback.

Trail Analytics

Last 30 days
2,847 Tours Started
73% Completion Rate
1m 24s Avg. Duration
Step-by-Step Funnel
Welcome
100%
Create Project
89%
Add First Task
81%
Invite Team
52%
Complete
73%

Find the friction

See exactly which step loses users. In this example, "Invite Team" drops 29%. Maybe it needs clearer copy or a skip option.

Measure improvements

Ship a change, watch completion rates climb. Trend arrows compare the current period to the previous one so you know instantly if things are getting better or worse.

Track over time

A dual-line chart shows starts vs. completions every day. The gap between the two lines tells you how many users are still not making it through.

Collect feedback, see the themes

Product Signals connects any app to send structured feedback via API key. Automatic sentiment detection, categorical breakdowns, and word-frequency themes — no schema required.

Try Pro Analytics Free

14-day free trial · Cancel anytime

Pro Feature

Your app changes. Your tours need a home.

Pro gives your whole team a dashboard to build, maintain, and update trails as your product evolves, without touching the codebase.

A home your team comes back to

Every trail lives in the dashboard with a screenshot of each step taken at build time. Six months later, when your app has changed, anyone on your team can open the editor, see what each step used to look like, and fix it. No repo access, no developer needed.

Record a full flow in one click

Hit Record, click through your app, and every click becomes a trail step. An action quick-pick overlay appears near each element — choose Click, Hover, or Skip before committing. Hold Shift while clicking to capture instantly and keep navigating.

Point and click to select elements

No CSS selectors to write. Just click on any button, input, or element on your site and it's captured automatically.

Non-devs can own maintenance

Change a step title, fix a broken selector, reword an instruction, all from the editor. When you're done, push it back to GitHub or GitLab as a commit or PR. No repo access needed to make the change.

Preview the trail before you ship

Play through the full trail inside the editor. See every tooltip, highlight, and transition exactly as your users will.

Selector quality grades

Every captured element is graded Stable, Moderate, or Fragile, with hints to make brittle selectors production-safe.

Drag to reorder steps

Reorganize your flow instantly. Insert steps, move them around, delete what you don't need.

AI-assisted step authoring

Click ✦ Suggest on any step and Claude generates a title, body copy, and tooltip placement from the element's context. Accept everything or cherry-pick individual fields.

Trail Editor
1 Welcome message
2 Create first project
3 Invite your team
4 Set up integrations
+ Add step
Welcome to Acme!
Let's take a quick tour to get you started. This will only take a minute.
[data-tour="welcome"] Pick

Built for your whole team

Product Managers

Create onboarding flows without waiting for engineering sprints.

Customer Success

Build walkthroughs for tricky features that generate support tickets.

Developers

Review trails in PRs. The visual editor outputs clean JSON you can trust.

Try the Visual Editor

Exports to JSON you own.

Step Types
Pro Editor · Drag & Drop

Not just tooltips

Every trail is built from step types. Drag any of them into your flow from the editor toolbar. No code.

Tooltip

Point at any element. The classic guided step that highlights a button, field, or UI element and walks users through it.

Redirect

Navigate users to another URL mid-tour. Chain onboarding flows across multiple pages without breaking the sequence.

Delay

Pause before advancing. Wait for animations to finish, pages to load, or async operations to complete.

Nudge

Not every user wants to be walked through it

A lot of companies prefer guiding users to their own discoveries over reading a series of cards. The "New" badge that surfaces a buried feature. The pulsing ring on an empty workspace. These work because they respect what the user was already doing.

Trailguide Nudges are built for that instinct. A Nudge step places a visual highlight on any element in your flow — no tooltip card, no progress bar, no next button to read past. The user clicks the highlighted element and the tour advances automatically, invisibly.

It fits seamlessly into a linear tour sequence alongside tooltips and announcements, or stands alone as a one-step spotlight on a feature users keep missing. Four effects, any color, zero friction.

// No tooltip — just draw the eye and let the user click
{
  "id": "nudge-create",
  "stepType": "nudge",
  "target": "[data-trail-id='create-btn']",
  "nudge": { "effect": "pulse", "color": "#1a91a2" }
}

// Badge nudge — surface a feature users keep overlooking
{
  "id": "nudge-reports",
  "stepType": "nudge",
  "target": "[data-trail-id='reports-nav']",
  "nudge": {
    "effect": "badge",
    "color": "#10b981",
    "label": "New"
  }
}
pulse

An expanding ring radiates outward from the element and fades, matching its border-radius.

glow

A colored box-shadow bloom applied directly to the element, pulsing on loop.

sparkles

Eight ✦ particles burst outward from the element center and loop continuously.

New
badge

A pill label anchored to the top-right corner of the element. Set any text and color.

Plans

Simple pricing

The runtime is free forever. Pro adds the editor, test runner, analytics, and Git sync.

Open Source

$0 forever

Full power. Full control. No limits.

  • Runtime package for any framework
  • Unlimited users, unlimited tours
  • Recorder tool for capturing steps
  • Trail validation utilities
  • Self-host everything
  • MIT License
View on GitHub

No lock-in. Everything Pro produces is still just JSON files in your repo.

Ready to build better onboarding?

Start with the free open source runtime, or try the Pro Editor for visual editing and Git sync with GitHub or GitLab.

14-day free trial · Cancel anytime