Appcues
A weekend of work, and real gaps remain.
In-app onboarding: tours, tooltips, checklists and announcements placed over your product and published without a deployment.
Build the in-app onboarding I actually need instead of Appcues. Be clear about the trade: **you are giving up the no-code editor**. A developer will add each tour. If that is unacceptable, keep paying — that constraint is the entire product. STACK - Node 20+ with Fastify serving a small script - SQLite through better-sqlite3, WAL mode - Vanilla JS on the page, no framework, no dependency on yours - Caddy in front THE DATA MODEL - flows: id, name, kind, steps_json, targeting_json, frequency_json, is_live, version - step_views: id, flow_id, step_index, person_hash, at, action — seen, advanced, dismissed, completed - person_state: person_hash, flow_id, status, last_seen_at, times_shown - Versioned flows, so a change does not rewrite the history of the old one THE SCRIPT ON THE PAGE - One request on load returning the flows this person qualifies for, with everything needed to render, so there is no second round trip - Anchored tooltip, modal, slideout, checklist, banner. That is the whole vocabulary - **Anchoring is the thing that breaks.** Prefer an explicit data attribute your own code adds; fall back to a structural path; if the element is not there after a short wait, skip the step and record why. Never point at nothing - Re-anchor on scroll and resize with a ResizeObserver, and keep the tooltip inside the viewport - Nothing blocks the page: if the script fails, the application is unaffected TARGETING AND FREQUENCY, WHICH IS WHERE THIS BECOMES ANNOYING - Rules on plan, signup date, role, a feature flag, and whether an event has happened - **A global cap: one flow per person per session, and never two at once.** Two tours firing together is the failure everybody ships once and every user notices - Dismissed means dismissed, permanently, per flow - A snooze rather than only a close, because 'not now' is the honest answer most of the time MEASURING IT - Step-by-step completion per flow, so the step people leave at is obvious - **The number that matters is not completion, it is whether the people who saw it did the thing afterwards.** Record the target action and compare with people who did not see the flow - An easy off switch per flow, reachable without a deployment even if authoring needs one RESPECT - prefers-reduced-motion honoured, keyboard reachable, escape closes, focus trapped in a modal and returned afterwards. An onboarding overlay that traps a keyboard user is an accessibility failure in the most visible place in your product WHAT MATTERS MOST The frequency cap and the skip-if-missing rule. One stops the product feeling hostile; the other stops a frontend change turning every tour into a broken arrow.
What you lose
- A product manager building a tour without touching the codebase
- A visual selector picker that works against the live application
- Targeting and frequency rules already thought through
- Analytics on each step, so a tour that loses people is visible
If you would rather not build
- PostHog, which has surveys and simple messages built in
- A dismissible banner in your own codebase, which covers most announcements
The escape hatch
open source · no votes, no paid placement
Shepherd
$0Guided product tours with anchored steps, in the browser.
shepherd-pro/shepherdfree · open source
Driver.js
$0Tiny highlight-and-tour library, no dependencies.
kamranahmedse/driver.jsfree · open source
Why this verdict
our own opinion · changed only by a person
46/100
Verdict kinda at 46: rendering and targeting are a weekend, the no-code editor is not. Worth building when a developer is available and the tours are few.
History
tracked since 14 Aug 2026 · nothing is ever overwritten
Nothing recorded yet. This chart fills in once the page has visitors, votes or prompt copies — it will not draw a flat line to look busy.
Questions about Appcues
answered from the record above
Is Appcues free?
No — the plan we track is $300 a month. Start plan from around $300/month billed annually, priced by monthly active users.
Can you replace Appcues by building your own?
ALMOST. A weekend of work, and real gaps remain. Replacement score 46 out of 100, build time a weekend. Read what you lose before you decide.
How much does Appcues cost?
$300 a month on Start — $3,600 a year. Recorded 14 Aug 2026.
What do you lose by replacing Appcues?
A product manager building a tour without touching the codebase; A visual selector picker that works against the live application; Targeting and frequency rules already thought through; Analytics on each step, so a tour that loses people is visible. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Appcues?
Yes: Shepherd, Driver.js. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

