User Onboarding
Implementing a user onboarding page and collecting information on sign-up
By default, Stack Auth collects information such as email addresses from OAuth providers. Sometimes, you may want to collect additional information from users during sign-up, for example a name or address.
The most straightforward approach is to redirect users to an onboarding page right after they sign up. However, this is not recommended for the following reasons:
- Users can accidentally (or purposefully) close or navigate away from the page before completing the onboarding.
- Redirect URLs may vary depending on the context. For instance, if a user is redirected to a sign-in page after trying to access a protected page, they’ll expect to return to the original protected page post-authentication.
Instead, a more reliable strategy is to store an onboarded
flag in the user’s metadata and redirect users to the onboarding page if they haven’t completed it yet.
Example implementation
Let’s say you have an onboarding page that asks for an address and stores it in the user’s metadata:
While the above implementation offers a basic onboarding process, users can still skip onboarding by directly sending an API request to update the clientMetadata.onboarded
flag. If you want to ensure that onboarding cannot be bypassed on the API level, you should create a server endpoint to validate and store the data, then save the onboarded
flag in the clientReadonlyMetadata
on the server side after validation.
Next, we can create a hook/function to check if the user has completed onboarding and redirect them to the onboarding page:
Client Hook
Server Function
You can then use these functions wherever onboarding is required: