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.

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.

1 Like

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

1 Like

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)"
)
5 Likes

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:

2 Likes

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.

3 Likes

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.

1 Like

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:

1 Like