What is a product tour?

A product tour (also called an interactive walkthrough or onboarding overlay) is a guided, step-by-step experience that highlights features of a web application and prompts users to take action. They appear as floating tooltips, spotlights, banners, or modal overlays, often triggered automatically on first login or feature release.

Used well, product tours reduce support burden and accelerate user activation. Used badly, they become barriers that lock out users who rely on keyboards, switch access, screen readers, or other assistive technologies. Because they sit on top of the existing interface and inject dynamic content, they are among the most frequently failing components in any accessibility audit.

ExceedAbility finding: In our audits of enterprise SaaS platforms, product tours and onboarding overlays are consistently in the top five failing components, often blocking all keyboard access to the application while they are active, with no escape mechanism.

The most common accessibility failures

Product tours fail for a predictable set of reasons. These are not edge cases, they appear in the majority of implementations we test.

WCAG 2.4.3

Focus does not move into the tour

The overlay appears visually but keyboard focus stays on the triggering button or wherever it was. Screen reader users receive no indication that anything has changed.

WCAG 2.1.1

No keyboard navigation between steps

Next and Back buttons are only clickable by mouse. Tab does not reach them. Users cannot advance the tour, meaning they cannot dismiss the overlay blocking their work.

WCAG 2.1.2

Background content still reachable by Tab

The tour overlay creates a visual block but does not trap or suppress focus behind it. Tab continues to cycle through the underlying page, which is invisible beneath the overlay.

WCAG 4.1.3

No screen reader status message

Step content is injected dynamically without an ARIA live region. Screen reader users receive no announcement when the tour opens or when steps change.

WCAG 2.1.1

No Escape key to dismiss

The tour cannot be closed by keyboard at all, or the Close button exists in the DOM but is visually hidden and not in the tab order. Users are trapped.

WCAG 2.4.3

Focus not returned after close

When the tour ends or is dismissed, focus is dropped, often reset to the top of the document, rather than returned to the element that launched the tour.

Live demo: Inaccessible Tour

The example below demonstrates a typical out-of-the-box product tour implementation. Launch it and try navigating with the keyboard only, you will find that Tab does not reach the tour controls, the background remains interactive, no screen reader announcement is made, and there is no keyboard way to close it.

Inaccessible implementation: keyboard and screen reader fail
❌ No focus movement, focus stays on trigger button
❌ tabindex="-1", buttons unreachable by keyboard
❌ No ARIA role or live region, screen readers unaware
Try pressing Tab after launching, the tour controls are unreachable

Live demo: Accessible Tour

The example below uses a custom TourEngine that manages step state and focus correctly. When launched, focus moves into the tour card. / advance steps. Esc closes and returns focus. Each step change is announced to screen readers via an ARIA live region.

Try this with a screen reader. Open NVDA or VoiceOver before launching. When the tour starts you should hear the step announced automatically. Arrow keys move between steps. Esc closes the tour and returns you to the Launch button.
Accessible implementation: keyboard and screen reader pass

navigate   Esc closes & returns focus

Top 10 product tour tools: Accessibility Comparison

These are the most widely used product tour and interactive walkthrough tools as of 2025–26. Accessibility support is rated based on publicly documented behaviour, community reporting, and our own testing where applicable. Ratings may change as tools are updated, always test with real assistive technology before selecting a tool.

Tool Type Keyboard Nav Screen Reader Focus Mgmt Notes
Shepherd.js Open source ⚠️ Best open-source option. ARIA attributes built in. Focus moves to step on advance. Screen reader support varies by configuration.
WalkMe SaaS Enterprise-grade. Claims Section 508 and WCAG 2.1 AA compliance. Has a dedicated accessibility mode. Most mature enterprise AT support.
Driver.js Open source ⚠️ ⚠️ Lightweight and popular. v2 improved keyboard handling. Screen reader support is minimal. Spotlight uses pointer-events: none, focus leaks behind overlay.
Intro.js Open source ⚠️ ⚠️ ⚠️ Very widely used (5M+ weekly downloads). Includes aria-labelledby on step containers and some keyboard support, but focus management is inconsistent across step types.
Appcues SaaS ⚠️ ⚠️ Popular product-led growth platform. Keyboard support varies by flow type. Limited public accessibility documentation. Screen reader experience is inconsistent.
Pendo SaaS ⚠️ ⚠️ ⚠️ Analytics + guidance platform. In-app guides have basic ARIA attributes. Focus management depends on guide configuration. Accessibility varies significantly by implementation.
Intercom Tours SaaS ⚠️ Part of the Intercom platform. Basic keyboard tab support on some elements. Focus is not moved to tour content on launch. Screen reader users receive no step announcements.
UserPilot SaaS User onboarding and product adoption platform. Limited publicly available accessibility documentation. Testing shows no focus management or screen reader announcements.
HelpHero SaaS ⚠️ ⚠️ ⚠️ Claims accessibility-friendly design. Some ARIA attributes present. Focus handling and screen reader support require verification, "accessibility friendly" marketing does not equal WCAG conformance.
Product Fruits SaaS Growing product adoption platform. No evidence of keyboard navigation or screen reader support in walkthroughs. No public WCAG conformance documentation.
Always test with real assistive technology. Tool accessibility can change with version updates, and the same platform may perform differently depending on how tours are authored. Ratings above reflect general findings, your implementation may vary. Test with NVDA + Chrome and VoiceOver + Safari before deploying any walkthrough to production.

Building an accessible tour: Key Patterns

The accessible demo above uses a TourEngine class. The core patterns that make it work are below. The full implementation manages step state, spotlight positioning, and focus in a single, testable object, rather than scattering logic across event listeners.

// TourEngine, manages step state, focus, and announcements
class TourEngine {
  constructor(steps, options = {}) {
    this.steps       = steps;
    this.current     = -1;
    this.origin      = null;   // element to restore focus to
    this.liveRegion  = options.liveRegion || null;
    this.onStep      = options.onStep    || null;
    this._keyHandler = this._onKey.bind(this);
  }

  // Launch the tour, storing which element to return focus to
  start(triggerEl) {
    this.origin = triggerEl;
    document.addEventListener('keydown', this._keyHandler);
    this._goto(0);
  }

  next() {
    const hasMore = this.current < this.steps.length - 1;
    hasMore ? this._goto(this.current + 1) : this.end();
  }

  prev() {
    if (this.current > 0) this._goto(this.current - 1);
  }

  // Always return focus to the trigger element on close
  end() {
    document.removeEventListener('keydown', this._keyHandler);
    this._teardown();
    if (this.origin) this.origin.focus();  // ← critical
    this.current = -1;
  }

  _goto(index) {
    this.current = index;
    const step = this.steps[index];

    // Announce step to screen readers via ARIA live region
    if (this.liveRegion) {
      this.liveRegion.textContent = ``;
      requestAnimationFrame(() => {
        this.liveRegion.textContent =
          `Step ${index + 1} of ${this.steps.length}. ${step.title}. ${step.body}`;
      });
    }

    // Render the step card, then move focus into it
    if (this.onStep) this.onStep(step, index, this.steps.length);
  }

  // Escape = close, arrow keys = navigate
  _onKey(e) {
    if (e.key === 'Escape')     { e.preventDefault(); this.end(); }
    if (e.key === 'ArrowRight') { e.preventDefault(); this.next(); }
    if (e.key === 'ArrowLeft')  { e.preventDefault(); this.prev(); }
  }
}

// Usage
const tour = new TourEngine([
  { target: '#metrics', title: 'Your key metrics',   body: '...' },
  { target: '#table',   title: 'Recent page data',   body: '...' },
], {
  liveRegion: document.getElementById('tourLive'),
  onStep: (step, idx, total) => renderCard(step, idx, total),
});

WCAG 2.2 requirements

A product tour that cannot be used by keyboard or screen reader fails WCAG 2.2 at Level A, the minimum conformance level. These are not aspirational standards; they are the legal baseline for most Australian government and enterprise digital properties.

2.1.1 Keyboard A

All functionality available by keyboard

Every step of the tour must be reachable, advanceable, and closeable without a pointing device.

2.1.2 No Keyboard Trap A

Focus containment with an exit

If the tour traps focus (which it should, to prevent interaction behind the overlay), there must always be a keyboard method to close it, typically Esc.

2.4.3 Focus Order A

Focus moves into the tour on open

When a walkthrough launches, focus must move into the first interactive element or the step container. Focus must return to the trigger on close.

4.1.3 Status Messages AA

Step changes announced to screen readers

New step content injected dynamically must be announced via an ARIA live region. Without this, screen reader users receive no notification when a step changes.

4.1.2 Name, Role, Value A

Tour container has a meaningful role and name

The tour container should have role="region" and aria-label. Interactive controls must have accessible names. The overlay must be aria-hidden="true".

2.2.2 Pause, Stop, Hide A

Auto-advancing tours must be stoppable

If your tour advances automatically on a timer, the user must be able to pause, stop, or control the timing. Auto-play tours with no pause mechanism fail this criterion.

Is your product tour excluding users?

ExceedAbility can audit your onboarding experience and provide a detailed remediation report, with assistive technology testing on real devices.

Talk to ExceedAbility