Overview
Discover what makes Usertour powerful
Usertour is an open‑source, self‑hosted platform that delivers in‑app product tours, checklists, launchers, and surveys. From a developer’s perspective it functions as a **runtime SDK** that can be dropped into any web application—whether single‑page or multi‑page—and a **backend service** that manages flow definitions, targeting rules, analytics, and user state. The SDK exposes a lightweight JavaScript API (`usertour.start()`, `usertour.trackEvent()`, etc.) that communicates with a REST/GraphQL API hosted by the server. This separation allows teams to iterate on flow designs in a visual editor while keeping all runtime logic on the client, reducing server load and enabling offline resilience.
Front‑end SDK
Back‑end Service
Database Layer
Containerization
Overview
Usertour is an open‑source, self‑hosted platform that delivers in‑app product tours, checklists, launchers, and surveys. From a developer’s perspective it functions as a runtime SDK that can be dropped into any web application—whether single‑page or multi‑page—and a backend service that manages flow definitions, targeting rules, analytics, and user state. The SDK exposes a lightweight JavaScript API (usertour.start(), usertour.trackEvent(), etc.) that communicates with a REST/GraphQL API hosted by the server. This separation allows teams to iterate on flow designs in a visual editor while keeping all runtime logic on the client, reducing server load and enabling offline resilience.
Architecture
- Front‑end SDK: Written in TypeScript, bundled with Rollup, and distributed as a single ES module. It renders flows using the HTML5 Canvas API for high‑performance overlays and supports progressive enhancement on older browsers.
- Back‑end Service: A Node.js application built with Express and Prisma ORM, exposing a GraphQL API for CRUD operations on flows, segments, and analytics. The service uses PostgreSQL as the primary data store, with optional Redis for caching user session state and targeting evaluation.
- Database Layer: PostgreSQL holds flow definitions, user attributes, event logs, and segmentation rules. Prisma’s schema‑first approach ensures type safety across the stack.
- Containerization: The entire stack is packaged in a Docker Compose file, exposing ports
8011(frontend UI) and8012(API). The Compose file pulls images from Docker Hub (usertour/frontend,usertour/backend) and uses environment variables for configuration. - Observability: Integrated with OpenTelemetry, the service emits metrics to Prometheus and traces to Jaeger, allowing developers to monitor flow execution latency and error rates.
Core Capabilities
| Feature | Technical Detail |
|---|---|
| Visual Flow Builder | WYSIWYG editor built with React and Slate.js; exports JSON flow definitions consumed by the SDK. |
| Targeting & Segmentation | Declarative targeting rules (user attributes, event counts, time since signup) evaluated on the client; server‑side fallback for persistence. |
| Event Tracking | SDK exposes trackEvent(name, payload); events are batched and sent to the backend via WebSocket or HTTP POST. |
| Analytics Dashboard | Real‑time dashboards powered by GraphQL queries; supports custom metrics via webhooks. |
| Multilingual & Theme Support | Flow definitions include locale keys; themes are CSS variables that can be overridden per flow. |
| Extensibility | Webhooks for external systems, plugin hooks (onFlowStart, onStepComplete), and a public REST API for programmatic flow creation. |
Deployment & Infrastructure
Usertour is designed to run in any Docker‑capable environment, from a single VM to Kubernetes clusters. The docker-compose.yml defines two services; scaling can be achieved by deploying multiple replicas of the backend behind a load balancer and sharing PostgreSQL via a managed instance. For high‑availability, the database can be configured with streaming replication and connection pooling (PgBouncer). The lightweight SDK allows it to run on the client with minimal bandwidth, making it suitable for edge deployments and CDN‑cached assets.
Integration & Extensibility
- SDK Hooks: Developers can inject custom logic before a step renders (
usertour.on('stepRender', callback)) or after an event fires. - Webhooks: Configure outbound POSTs to external analytics or CRM systems when a user completes a flow.
- Plugin System: Custom steps can be added by publishing a plugin that registers a new component type; the backend loads plugins from a designated directory at startup.
- API: Full CRUD via GraphQL; pagination, filtering, and subscription support for real‑time updates.
- Third‑Party Auth: Supports OAuth2, SAML, and custom JWT authentication for enterprise integrations.
Developer Experience
The project follows semantic versioning and maintains comprehensive documentation on docs.usertour.io. The codebase is modular, with clear separation of concerns, making contribution straightforward. TypeScript typings are provided for both the SDK and backend APIs, enabling IDE autocomplete and static type checks. The community is active on Discord and GitHub Discussions, with a dedicated channel for integration questions. Licensing under MIT ensures no cost barriers or restrictive obligations.
Use Cases
- Product Onboarding – New users receive a guided tour that highlights key features, reducing churn.
- Feature Rollouts – Targeted segments can be exposed to beta features with in‑app prompts.
- User Feedback Loops – Inline surveys or checklists gather qualitative data without leaving the app.
- Compliance Training – Mandatory onboarding flows for regulated industries can be enforced and tracked.
Advantages
- Performance: Client‑side rendering keeps server load low; WebSocket batching reduces network overhead.
- Flexibility: Full control over flow JSON allows developers to integrate with existing state managers (Redux, Vuex) or server‑side rendering frameworks.
- Scalability: Stateless SDKs and a horizontally scalable backend make it easy to handle millions of concurrent users.
- Open‑Source Freedom: No vendor lock‑in, full access to source code for custom extensions or compliance audits.
- Rapid Iteration:
Open SourceReady to get started?
Join the community and start self-hosting Usertour today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Tags
Explore More Apps
Domain Locker
Central hub for managing and monitoring all your domain names
Squid
High-performance web caching proxy for speed and bandwidth savings
Genealogy
Build and share family trees with a modern PHP stack
Posio
Multiplayer geography trivia for web browsers
Spree Commerce
Open‑source eCommerce platform for custom storefronts

Citadel
All-in-one collaboration platform with rooms architecture
