Need help. I am very new in Adalo, am trying for session based user, where from a Search button click(in Screen 1) action I will call Supabase RPC (using REST API) which will return a random session_id and I will store that session_id into UserSession collection in Adalo. Now in booking screen (screen 5) , I will call Supabase endpoint to retrieve some data
where session_id = Adalo.UserSession.session_id
So to implement that, I need UserSession to be passed from Screen1 to Screen5. But I am getting this data upto Screen2 only. While link screen (Send This Data to…) , it’s not editable.
How can I share UserSession data from Screen 1 to Screen 5 ? is it possible ?
It seems like many limitations are there. [ Note : currently am testing the Free plan to check the Adalo functionality]
In button click action => Link screen => Send data to next screen => I can’t add anything (for me UserSession). Whatever is automatically coming, only those will be shared to next screen.
If another screen is linking directly into, say, Screen 3 or 4, the data you passed earlier gets lost, and that’s why you can’t see or edit the “Send This Data” option.
What to do:
Check each screen in the flow
Make sure there are no extra links going into them (especially from nav bars or buttons)
You can also click on a screen and check Available Data at the top to see where the data disappears
Then remove/unlink those extra connections
Better approach for your case
For something like a session_id, it’s actually much easier to store it on the Logged-in User record.
Why?
Logged-in user data is available on every screen automatically
No need to pass data across multiple screens
So instead of a separate UserSession flow:
Save session_id → on User collection
Then on any screen → just use Logged-in User > session_id
This will simplify your setup a lot and avoid these passing issues
Unfortunately, Adalo doesn’t allow you to manage which data is passed to which scree directly - this is always a “derivative” from having a list record on some screen.
But maybe you could elaborate, why do you need such architecture with sessions? Using Logged-in User as Jeorge mentioned is way easier.
Thanks Jeorge. I will check. Actually in my case, user need not login, they can open the app as guest user ( NOTE : we may have 50+ Concurrent user).
Screen 1 : This is Search screen where user will enter search parameter like City, From_Date, To_Date and click the Search Button to get some property details.
Screen 5 : This is Booking screen where It should display the same City, From_Date, To_Date which user already entered in Screen 1. Also here in Screen 5 , user will enter some other details and finally all the Information will be passed in Booking Button click to generate booking.
Actually in my case, user need not to login, they can open the app as guest user ( NOTE : we may have 50+ Concurrent user).
Screen 1 : This is Search screen where user will enter search parameter like City, From_Date, To_Date and click the Search Button to get some property details.
Screen 5 : This is Booking screen where It should display the same City, From_Date, To_Date which user already entered in Screen 1. Also here in Screen 5, user will enter some other details and finally all the Information will be passed in Booking Button click to generate booking.
What you need is having an app-state variable to store the guest user data, but unfortunately “plain” Adalo does not have this capability. There are some workarounds, but they require a bit of creativity and some knowledge. In brief:
Option 1: you can have a “shadow” sign-up of a user on the first screen, creating a “pseudo-user” account. Email and password could be random (anyway you’re not going to need them after). After signup Adalo Auth will return a token and it’ll be stored in the app; so the user is considered authenticatied. Sign up creates an account in Users collection, and you can store the required data in respective properties and on all subsequent screens you can access this data using Logged-in User path. Search on the forum about guest users, there were multiple threads about this.
The downside of such approach is that (1) the user will be always logged-in when the next time the app is opened and (2) at some point of time the auth token will expire and all previous data will be unaccessible for a user (as you’re not using Adalo as user catalog). I’m not mentioning legal things like data storage, consent, GDPR, etc.
Option 2: you can create a separate “Sessions” collection, and on the first screen create a Session record with random ID. Then, this “Current Session” record will be passed along the screens flow.
Downside - if the screens flow is complex, the Current Session record will be lost.
Option 3: you can try storing some unique ID in the appstate. Adalo doesn’t allow this, but you can explore alternatives like using custom components. A long time ago Pragmaflow created a local storage component, you can search the forum on this.
Downside - (a) you will have to build and publish this component and (b) you will have to maintain this component by yourself.
Option 4: there was a workaround of storing some value in the Input on a disconnected screen. The logic is similar - you create random value, store it on some input, and then you can extract this value later on.
Downside - it’s a black box how input values are being cleaned by Adalo and when this logic may change.
This is similar to the issue that I am having and the ability to store variables would solve this in an instant.
Having to pass full data sets from screen to screen is cumbersome and wasteful of resources (in my opinion), when saving a variable would allow you do pull data from a collection on any screen on an as needed basis using the variable(s) as search criteria.