# Creating an onboarding flow using tab visibility

**URL:** <https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149>\
**Category:** Project Showcase\
**Created:** [June 19, 2020, 8:35pm UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149 "2020-06-19T20:35:59Z")\
**Posts on this page:** 12\
**Page:** 5

<div class="post-metadata">

**Author:** ![Lucas\_Pires](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/lucas_pires/32/64863_2.png) [@Lucas\_Pires](https://community.glideapps.com/u/Lucas_Pires)\
**Post date:** [May 4, 2021, 7:06pm UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149/81 "2021-05-04T19:06:55Z")

</div>

Here’s the topic explaining **how to create it** 👇

> [@wave How to create Onboarding screens Flow](https://community.glideapps.com/t/how-to-create-an-onboarding-screens-flow/26404):
>
> Hey guys! wave Pretty soon, I’ll be launching a new video and app template for all of you to create an amazing onboarding expererience in your app! Wait for it! In the meantime, check out the latest version below. After many, many requests for me in [my first onboarging flow](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149) to make this video, here it is how to do create an Onboarding screen Flow! rocketpushpin Don’t forget to: Filter the tab/screen when Email is signed-in user; To turn into screens, use Link to scree…

---

<div class="post-metadata">

**Author:** ![christoph](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/christoph/32/22794_2.png) [@christoph](https://community.glideapps.com/u/christoph)\
**Post date:** [May 14, 2021, 7:13pm UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149/82 "2021-05-14T19:13:30Z")

</div>

Hi @Lucas_Pires,  
I wanted to use the Link to Screen for an onboarding sequence with 5 screens as suggested. But there is a high risk to loose a lot of work!

I had all screens set up, on each screen a Next-button with the Link to Screen action. Then I wanted to change the action on screen 4 to a compound action. Having done that, the next screen layout was lost and appeared as default! And at the same time the whole application reloaded and I couldn’t undo the change.

If you do change the action of the Next-button on e.g. the first screen, you loose all screen layouts which come thereafter! And hours of work are dumped.

Hence, I don’t know if a sequence of linked screens is a reliable solution at all.

---

<div class="post-metadata">

**Author:** ![Lucas\_Pires](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/lucas_pires/32/64863_2.png) [@Lucas\_Pires](https://community.glideapps.com/u/Lucas_Pires)\
**Post date:** [May 14, 2021, 7:17pm UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149/83 "2021-05-14T19:17:35Z")

</div>

As I said in the video, that was the easy way, not the safier. I’ll try to record some other ways

But if you’re in a hurry, you can take a look at this topic by @Manan_Mehta

> [@Paging and navigation using increment action](https://community.glideapps.com/t/paging-and-navigation-using-increment-action/10520):
>
> With the recently launched increment action, navigation between records becomes much simpler which previously required setting up plenty of relations to move around. How to do it?

---

<div class="post-metadata">

**Author:** ![christoph](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/christoph/32/22794_2.png) [@christoph](https://community.glideapps.com/u/christoph)\
**Post date:** [May 14, 2021, 7:28pm UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149/84 "2021-05-14T19:28:44Z")

</div>

Actually I have been using increment action before and turned back to it 🙂

---

<div class="post-metadata">

**Author:** ![Mark\_Turrell](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mark_turrell/32/26605_2.png) [@Mark\_Turrell](https://community.glideapps.com/u/Mark_Turrell)\
**Post date:** [May 14, 2021, 7:48pm UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149/85 "2021-05-14T19:48:43Z")

</div>

I started with increments but I dropped that idea as it became way too hard to manage complex ‘flows’ through an app.

I now move people through my app using buttons and custom actions, hiding the native Glide navigation with CSS tricks.

I do have people leave the app during a flow, and Glide would naturally bring people to the first visible Tab they are allowed to see. I did consider using tab visibility, but it can be nightmarish depending on how you have built your system.

In my case my app is ‘quite simple’. There is a table for CollectUser (user profiles) and one for TestFlow (conducting a corona test and everything around it). At first I was adding and deleting rows, but that is slow (5 - 15 secs?) and so horrible. I also started with GSheets … but way way too slow for my use case.

Now the system zips along. I handle navigation through the app in tabs, making it easy to build a new screen.

Today’s magic? A button on the home page so that, if the user has left the system and wants to rejoin their test flow, for whatever reason, there is an if-then-else ite-column to work out if a user is stuck… and if so, a button appears on the home screen… and I look at an ite- column in my user profiles to see which tab they are in (… because every time the user moves tab, I do Set Columns - in TestFlow - as Glide table and faster)… but I have to bring that into the User profile table (lookup) to get Glide responding speedily (I started with setting the ‘current tab’ via a relationship, but that takes 3-10 seconds to update – -too long!).

So the magic button returns you to your spot, and if you got stuck trying to do a live video, it resets things and a new agent is alerted to your call.

Fun things to do on a very quick locked-down Friday night in Berlin 🙂

 ![Screenshot 2021-05-14 at 21.38.57](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/1/1/110f23f5ea5072fdfd821345b1b15e3da509035a.jpeg)  
 ![Screenshot 2021-05-14 at 21.39.08](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/e/6/e69545e7b4d5f873ec0b37298137e87cee789359.png)  
 ![Screenshot 2021-05-14 at 21.39.32](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/6/1/61c6325a172024c3c845d4c98ffa3851043d195d.png)  
 ![Screenshot 2021-05-14 at 21.40.58](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/2/6/263b310e7464ef650cb528b39b002de5d0681d72.jpeg)  
 ![Screenshot 2021-05-14 at 21.41.10](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/e/4/e49598517ef17d5242ce70db87b416481dea8214.jpeg)

---

<div class="post-metadata">

**Author:** ![Mark\_Turrell](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mark_turrell/32/26605_2.png) [@Mark\_Turrell](https://community.glideapps.com/u/Mark_Turrell)\
**Post date:** [May 14, 2021, 8:01pm UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149/86 "2021-05-14T20:01:40Z")

</div>

The tab approach also makes developing in a live app easier (by controlling visibility), doing testing (routing users via buttons based on user values - toggle-testing = true kind of thing), and tracking down errors.

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [May 15, 2021, 1:45am UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149/87 "2021-05-15T01:45:30Z")

</div>

> [@Mark\_Turrell](#):
>
> In my case my app is ‘quite simple’.

Yeah, right. And my mum is the Queen of England 🤣

> [@Mark\_Turrell](#):
>
> So the magic button returns you to your spot, and if you got stuck trying to do a live video, it resets things and a new agent is alerted to your call.

Very clever 😉

---

<div class="post-metadata">

**Author:** ![erwblo](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/erwblo/32/75_2.png) [@erwblo](https://community.glideapps.com/u/erwblo)\
**Post date:** [May 15, 2021, 6:12am UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149/88 "2021-05-15T06:12:30Z")

</div>

> [@Darren\_Murphy](#):
>
> Yeah, right. And my mum is the Queen of England 🤣

hahaha lol

---

<div class="post-metadata">

**Author:** ![Ovi](https://avatars.discourse-cdn.com/v4/letter/o/3ab097/32.png) [@Ovi](https://community.glideapps.com/u/Ovi)\
**Post date:** [August 29, 2022, 10:35am UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149/89 "2022-08-29T10:35:40Z")

</div>

Is there an app created or a video in a better quality ?

---

<div class="post-metadata">

**Author:** ![George\_Pillari](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/george_pillari/32/55971_2.png) [@George\_Pillari](https://community.glideapps.com/u/George_Pillari)\
**Post date:** [May 9, 2023, 1:13pm UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149/90 "2023-05-09T13:13:56Z")

</div>

is there a way to make the fields “required?”

---

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [May 9, 2023, 1:15pm UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149/91 "2023-05-09T13:15:09Z")

</div>

> [@Update instead of Insert on Duplicate](https://community.glideapps.com/t/update-instead-of-insert-on-duplicate/10811/4):
>
> Create an if-then-else column in your User Profiles table: If name is empty, then null If phone is empty, then null etc… Else true And then only allow them to leave that screen when that column is checked.

---

<div class="post-metadata">

**Author:** ![manthe](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/manthe/32/49614_2.png) [@manthe](https://community.glideapps.com/u/manthe)\
**Post date:** [May 10, 2023, 12:26pm UTC](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149/92 "2023-05-10T12:26:20Z")

</div>

This video is a much better explanation of the concept.

[![](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/3X/0/0/002c6a476828d111ab01e038e693c0b564b5e733.jpeg "How to Create a Multi Step Form with No Code in @glideapps Pages") ](https://www.youtube.com/watch?v=6Uxh71wJVhQ)

[Previous page](https://community.glideapps.com/t/creating-an-onboarding-flow-using-tab-visibility/11149.md?page=4)
