Log inSign up

User onboarding for
any JavaScript app

Flows works with any JavaScript stack. Add user onboarding to vanilla JS or legacy codebases without a new framework.

How Flows works with JavaScript

The Flows JavaScript SDK is framework-agnostic. Load it via npm, call init with user identity, and Flows handles onboarding workflow activation from there.

Product tours

Guide users step-by-step through your product with tooltips, modals, and hints that feel native to your app.

Embeddable components

Embed interactive content directly inside your app layout: checklists, empty states, and contextual guides without floating overlays.

Custom components

Use your own design system and component library to build adoption experiences that match your product's look and feel exactly.

Localization

Deliver workflow content in any language to reach a global user base.

User targeting

Target specific users or segments with AND/OR logic to show the right experience to the right person.

Analytics

Track workflow performance with built-in analytics. Measure completion rates, drop-off, and engagement across all your adoption experiences.

Designed for unlimited customizability

Flows is designed to be a “Headless product adoption platform”. We’ll focus on user state problems, so you can focus on your own product.

Localization

Localization

Support any language or locale to reach a global audience.

Segmentation

Segmentation

Target specific users or companies based on properties or behavior.

Versioning

Versioning

Deploy, audit, and restore your changes across environments.

Analytics

Analytics

Understand how users interact with your workflows.

Environments

Environments

Test workflows on staging before deploying them to production.

Actions

Actions

Trigger actions based on user behavior.

Workflow logic

Workflow logic

Branch, filter, and control the path of your workflows.

Privacy first

Privacy first

Built with privacy in mind. Minimizing data collection.

Questions and Answers

Load the Flows SDK via npm, call init() with your organization ID and user identity, and define your onboarding workflows in the Flows dashboard. No framework, build tool, or bundler required. See the JavaScript installation guide for step-by-step setup instructions.

Pass user properties as a plain object when calling init(). These can include any attributes your backend exposes, such as plan, signup date, or feature flags. Targeting rules are defined in the Flows dashboard and evaluated client-side, so no additional server logic is needed. See the guide on targeting only new users.

Yes. Flows is headless. You can use any HTML custom element to render Flows components. This will allow you to use existing UI patterns, template or a component library without adopting a new rendering approach.

Yes. Once the Flows SDK is on the page, product managers and designers can create and update onboarding workflows entirely from the Flows dashboard. No JavaScript changes, or redeployments needed.

Add user onboarding to any JavaScript app

No framework required. Flows works with whatever JavaScript framework you're running.

Get started for free

No credit card required. Free forever.