Skip to main content
RapidDev - Software Development Agency
bubble-tutorial

How to Add a Guided Tour to a Bubble App

A guided tour in Bubble uses a sequence of tooltip-like popups that highlight different UI elements and walk new users through your app. You track tour completion on the User record, trigger it on first login, and advance through steps using custom states. This can be built natively with Groups and conditionals or with an HTML-based tour library like Shepherd.js embedded in an HTML element.

What you'll learn

  • How to build tooltip-style tour steps using Bubble Groups
  • How to track tour progress and completion per user
  • How to trigger the tour on first login only
  • How to integrate a JavaScript tour library as an alternative
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner6 min read20-25 minAll Bubble plansMarch 2026RapidDev Engineering Team
TL;DR

A guided tour in Bubble uses a sequence of tooltip-like popups that highlight different UI elements and walk new users through your app. You track tour completion on the User record, trigger it on first login, and advance through steps using custom states. This can be built natively with Groups and conditionals or with an HTML-based tour library like Shepherd.js embedded in an HTML element.

Overview: Guided Tours in Bubble

This tutorial shows you how to create an onboarding guided tour that walks new users through your app's key features. You will build step-by-step tooltips, track progress, and ensure the tour only appears for new users.

Prerequisites

  • A Bubble app with user authentication and a main dashboard page
  • Understanding of custom states and conditional visibility
  • Key UI elements that need explaining to new users

Step-by-step guide

1

Add a 'has_completed_tour' field to the User type

In the Data tab, add a field 'has_completed_tour' (yes/no, default no) to the User Data Type. This tracks whether each user has seen the tour. On the dashboard page, add a 'Page is loaded' workflow with condition 'Only when Current User's has_completed_tour is no' that starts the tour.

Expected result: A flag on the User record controls whether the tour appears, triggering only for users who have not completed it.

2

Create tour step overlays with tooltip Groups

Add a semi-transparent overlay Group covering the full page (background black, 50% opacity). On top, add individual tooltip Groups for each tour step — small white cards with an arrow, title text, description text, and Next/Skip buttons. Position each tooltip near the UI element it explains. Use a page custom state 'tour_step' (number, default 1) to control which tooltip is visible: 'When page's tour_step is 1' shows tooltip 1, etc.

Pro tip: Use a Floating Group for tooltips so they stay in position even if the page scrolls.

Expected result: A dark overlay with positioned tooltip cards appears for each tour step, shown one at a time based on the step state.

3

Highlight the target element for each step

To make the referenced UI element stand out through the overlay, add a conditional on the target element: 'When page's tour_step is [this step's number]' → set z-index higher than the overlay (add a CSS override via ID attribute). This makes the highlighted element appear above the dark overlay while everything else stays dimmed. Add a spotlight effect by giving the element a bright border or glow.

Expected result: Each tour step highlights the relevant UI element above the dark overlay, drawing the user's attention.

4

Wire up Next, Back, and Skip buttons

On each tooltip's 'Next' button, create a workflow that increments the 'tour_step' state by 1. On 'Back', decrement by 1. On 'Skip' or the final step's 'Done' button, set Current User's has_completed_tour to yes and hide the overlay. Add a progress indicator (Step 1 of 5) using the tour_step state. On the final step, change the Next button text to 'Get Started' and complete the tour.

Expected result: Users can navigate forward and backward through tour steps, skip the tour, or complete it to dismiss permanently.

5

Add a replay option in account settings

In the user's account settings or help section, add a 'Replay Tour' button. Its workflow: set Current User's has_completed_tour to no, then reload the page (Go to page → current page). The tour will trigger again on page load. This lets users who dismissed the tour early revisit it later.

Expected result: Users can restart the guided tour from their account settings at any time.

6

Alternative: embed Shepherd.js for a richer tour experience

For a more polished tour with smooth animations and automatic positioning, embed the Shepherd.js library via an HTML element. Add the Shepherd CSS and JS CDN links, then write a script that defines tour steps targeting Bubble elements by their ID attribute (set IDs in the element's property editor). Shepherd automatically positions tooltips and handles scrolling to elements. Use the Bubble JavaScript-to-Bubble bridge to update the has_completed_tour field on completion.

Shepherd.js tour embed
1<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/shepherd.js@11/dist/css/shepherd.css"/>
2<script src="https://cdn.jsdelivr.net/npm/shepherd.js@11/dist/js/shepherd.min.js"></script>
3<script>
4const tour = new Shepherd.Tour({
5 defaultStepOptions: {
6 cancelIcon: { enabled: true },
7 classes: 'shadow-md'
8 }
9});
10tour.addStep({
11 title: 'Welcome!',
12 text: 'This is your dashboard. Let us show you around.',
13 attachTo: { element: '#dashboard-header', on: 'bottom' },
14 buttons: [{ text: 'Next', action: tour.next }]
15});
16tour.start();
17</script>

Expected result: A polished guided tour with automatic positioning and animations runs using the Shepherd.js library.

Complete working example

Workflow summary
1GUIDED TOUR WORKFLOW SUMMARY
2=================================
3
4USER FIELD: has_completed_tour (yes/no, default no)
5PAGE STATE: tour_step (number, default 1)
6
7TRIGGER TOUR:
8 Event: Page is loaded
9 Condition: Current User's has_completed_tour = no
10 Action: Show overlay, set tour_step = 1
11
12TOUR ELEMENTS:
13 Overlay Group: full page, black 50% opacity
14 Tooltip Groups: white cards with arrow
15 Each visible when tour_step = its number
16 Target elements: z-index above overlay per step
17
18NAVIGATION:
19 Next button: tour_step = tour_step + 1
20 Back button: tour_step = tour_step - 1
21 Skip button: has_completed_tour = yes, hide overlay
22 Done (last step): has_completed_tour = yes, hide
23
24REPLAY:
25 Settings Replay Tour button
26 Set has_completed_tour = no reload page
27
28ALTERNATIVE: Shepherd.js
29 Embed via HTML element
30 Target elements by ID attribute
31 Auto-positions tooltips with animations

Common mistakes when adding a Guided Tour to a Bubble App

Why it's a problem: Showing the tour on every page load without checking completion

How to avoid: Always check 'has_completed_tour is no' before triggering the tour

Why it's a problem: Not assigning ID attributes to target elements

How to avoid: Set the ID attribute in each target element's property editor (e.g., 'dashboard-header', 'nav-menu')

Why it's a problem: Hardcoding tooltip positions that break on different screen sizes

How to avoid: Use Floating Groups with responsive positioning, or use Shepherd.js which auto-calculates positions

Best practices

  • Track tour completion on the User record to prevent repeat displays
  • Keep tours short — 3-5 steps covering only the most important features
  • Add a Skip button so experienced users can dismiss immediately
  • Provide a Replay option in settings for users who want to revisit
  • Highlight only one element per step to maintain focus
  • Use progressive disclosure — show basic features first, advanced ones later
  • Test the tour on mobile screens to ensure tooltips are positioned correctly

Still stuck?

Copy one of these prompts to get a personalized, step-by-step explanation.

ChatGPT Prompt

I want to add a product tour to my Bubble.io dashboard that shows new users 5 key features with highlighted elements and tooltip descriptions. How do I build this with completion tracking?

Bubble Prompt

Create a guided tour for my dashboard page. Highlight the navigation menu, the create button, the notifications area, and the settings link with tooltip descriptions. Track whether the user has completed the tour and only show it on first login. Add a replay option.

Frequently asked questions

Should I use native Bubble Groups or a JavaScript library for the tour?

Use native Groups for simple 3-5 step tours. Use Shepherd.js or Intro.js for more than 5 steps or when you need automatic positioning and scroll-to features.

Can I show different tours for different user roles?

Yes. Add a condition to check the user's role and trigger different tour sequences (e.g., admin tour vs regular user tour) based on the role.

How do I handle the tour on mobile?

Keep tooltips simple and centered on mobile. Test positioning at mobile breakpoints. Consider a simpler full-screen card sequence instead of element-attached tooltips on small screens.

Can I track which step users drop off at?

Yes. Log each step advance to a TourAnalytics Data Type. Compare completion rates per step to identify where users lose interest.

Can RapidDev build custom onboarding experiences in Bubble?

Yes. RapidDev can design and build guided tours, onboarding wizards, contextual help systems, and interactive tutorials in Bubble.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Need help with your project?

Our experts have built 600+ apps and can accelerate your development. Book a free consultation — no strings attached.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.