How to make a form appear only once

Hi folks,

I need your expertise!

My app starts with an onboarding view that gives the user some quick instructions on how to use the app. The onboarding view finishes with a form view that asks user for their email and how they heard about the app and when the user taps submit, the details go to a google sheet and the primary views of the app appear and the user can then use the app as needed.

What I want to do is that when a user submits his/her email in the form, he/she should not be asked for those details again. The problem here is that everytime the app syncs, the same user gets to see the same form view to enter the same details again. If the user has already provided those details, he /she should not be asked again.

So, is there a formula that can help me to achieve this?

Thanks so much for your help.

0 13 641
  • UX
13 REPLIES 13

Steve
Platinum 4
Platinum 4

How does the user arrive at the onboarding view?

as soon as the app is opened, the first view is onboarding. The whole point of that is that the user gets quick instructions before using the app. The user will always see the onboarding view when the app starts/syncs and so if the user has seen it already, then he/she can cancel it by tapping the โ€˜xโ€™ on the top right of the onboarding view.

Consider using an expression with your starting view to skip the onboarding view if the user is already registered.

Hi Steve,

What expression would that be?

Thanks so much!

Something like this,with appropriate substitutions:

IF(
  NOT(IN(USEREMAIL(), table-where-mail-is-stored[column-containing-email])),
  "view-for-new-user",
  "view-for-returning-user"
)

Foe instance:

IF(
  NOT(IN(USEREMAIL(), Users[Email])),
  "Welcome New User (onboarding)",
  "Welcome Returning User (launcher)"
)

Thats a great expression. Thanks heaps Steve. But, I forgot to mention, my app does not require user sign in. Is there a way to overcome that?

Thanks again

You could use CONTEXT("Device") instead of USEREMAIL(), but that would treat every user of that device the same. Maybe thatโ€™s sufficient? I donโ€™t see any other alternative.

See also:

Thanks so much Steve. Will definitely try it. Although a curious question: does context(โ€œdeviceโ€) extract uuidโ€™s by anychance?

It provides the AppSheet-generated, app- & device-specific UUID, not a UUID provided by the device itself.

So, if i put this expression in the startup view:

IF(
NOT(CONTEXT(โ€œDEVICEโ€), Users[Email])),
โ€œWelcome New User (onboarding)โ€,
โ€œWelcome Returning User (launcher)โ€
)

where will the Appsheet UUIDโ€™s stored? would it be in the Email column? but in which table?

That expression assumes the data has already been stored; it does not store anything. You will need to find a way to store the data.

oh I see!

so, how can I store the UUID data? because if I dont have that data, my CONTEXT expression will not workโ€ฆ isnโ€™t it?

Correct.

Somehow, you need to get the new user to submit a for, or to press a button that performs an action. A form submission or an action can be used to add or update a row of some table to include the device UUID.

This might be helpful:

Top Labels in this Space