Adalo Resources
Sign Up for Adalo
Adalo Resources
Adalo Resources
  • 🚀Getting Started
  • 🎨Design
    • Designing Your App
      • Definitions and Terms
      • Creating an App
      • Using the Screen Size Switcher
      • Building with Sections
      • Alignment Tools
      • Using the Layout Tab
        • Screen Size Visibility
        • Sticky While Scrolling
        • Shared Layout Settings
        • Custom Layout Settings
      • Grouping Components
      • Responsive Navigation
        • Responsive Side Navigation
          • Side Navigation
          • Title
          • Menu Style
          • Menu Items
          • Bottom Button
          • Profile Section
        • Responsive Top Navigation
          • Navigation Bar
          • Title
          • Menu Items
          • Additional Navigation
          • Profile Image
      • Responsive Design Best Practices
    • Branding
      • Colors
      • Fonts
    • Create Component States
    • Preview Your App
    • Design Versions
    • Additional Design Resources
    • Migrating Legacy Apps
    • Legacy Builder
      • Create Component Containers
      • Positioning Components
      • Arranging and Grouping Components
      • Preview your App (Legacy Builder)
  • 🎬Actions
    • Action Basics
    • Links
    • Change Data
    • Notifications
      • Request Notification Permission in Your App
      • Trigger Push Notifications
      • Testing Notifications
      • Troubleshooting Notifications
        • Notifications Not Working on Android
        • Notifications Not Working on iOS
        • Notifications Not Working on PWA
    • Conditional Actions
    • Permissions
    • App Authentication
  • 🛠️Screens and Components
    • Screens
    • Deep Linking
      • Setup Deep Linking
      • Deep Linking With Data
      • Deep Linking Share Action
      • Deep Linking Redirection & Fallbacks
      • FAQs and Troubleshooting
    • Screen Navigation
    • Component Basics
    • Magic Text
      • Logged-In User vs. Current User
      • How to Format Dates and Numbers
      • Sums, Counts, Averages, Min and Max
      • How to Create a Custom Math Formula
        • Complex Calculations
    • Conditions and Filtering
      • Filtering in Adalo
      • Using Conditions in Adalo
    • Changing a Component's Visibility
    • Lists
      • Sorting and Filtering Lists
      • Creating Custom Lists
      • Lists of Lists
    • Buttons
    • Toggles
    • Forms
    • Simple Components
      • Image Component
      • Text Input
      • Webview Component
        • Troubleshooting Webview
          • Webview URL not loading in Adalo App
          • Webview crashing in Native App
    • Table Component
    • Video Component
    • Marketplace Components
      • How to Add Components from the Marketplace
      • Digital Purchases for In-App Purchases
      • Sign in with Google
      • Sign in with Apple
      • Maps
      • Bar Charts and Line Graphs
      • Pie Chart
      • Google Admob
        • Troubleshooting Admob
          • Ads Not Displaying in Native
      • Calendar
      • Progress Bar
      • Star Rating
      • Stopwatch
      • Slider
      • Lottie Files
      • YouTube
      • Audio Player
        • Troubleshooting Audio Player
          • Apple App Rejection: UIBackgroundModes key
      • Deck Swiper
      • Markdown Renderer
      • Signature
      • Stripe
        • Stripe Payment
        • Stripe Subscription
        • Stripe Connect Marketplace
          • Set up your Stripe Account for Stripe Connect
          • Allow Merchants to Connect their Stripe Account to your App
          • Stripe Connect
          • Stripe Marketplace Payment
        • Configuring Stripe Test Mode
        • Stripe Custom Actions
          • Get Stripe Subscription Data
          • Get Stripe Customer Data using Email Address
        • Legacy Stripe Components (Deprecated)
          • Marketplace Payments
            • Set up your Stripe Account for Stripe Connect
            • Allow Merchants to Connect their Stripe Account to your App
            • Configure Consumer Payment to go to Merchants' Accounts
          • One-time Card Payments
          • Subscription Payments
  • 🧱Feature Templates
    • Browse, Purchase, and Manage Classes
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Category List Screen
      • Classes List Screen
      • Class Details Screen
      • Purchase Screen
      • Congrats Screen
      • Admin Manage Clinics Screen
      • Admin Transactions Screen
      • Admin Create Clinic & Admin Edit Clinic Screens
    • Browse, Purchase, and Manage Events
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Browse Classes
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Category List Screen
      • Classes List Screen
      • Classes Details Screen
    • Classes Admin Dashboard
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Admin Manage Clinics Screen
      • Admin Transactions Screen
      • Admin Create Clinic & Admin Edit Clinic Screen
    • User Chat
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Conversations List Screen
      • Chat Screen
      • New Chat Modal Screen
    • Forum
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Group Messaging
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Messaging Screen
      • Edit Message Modal Screen & Edit Channel Modal Screen
      • Search Messages Screen & Channels Screen
    • Account Settings
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Account Settings Screen
      • Success Modal Screen & Delete Account Confirmation Screen
    • Appointment Booking
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Coaches Screen
      • Time Slots Screen
      • Book Appointment Screen
      • Coach Admin Screen
      • Edit Session Screen
    • Assign Tasks
      • Overview — Screens, Database, Layout Settings, Use Cases
      • My Tasks Screen, Team Tasks Screen, Completed Screen
      • Task Detail Screen
      • Edit Task Screen
    • Agree and Sign
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Terms Screen
      • Agree & Sign Modal Screen
      • Signatures Admin Screen
    • Announcements & Notifications
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Notifications Screen
      • Notify All & Notify One Screens
    • User Profile & Account Settings
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Setup Step 1 Screen
      • Setup Step 2 Screen
      • My Profile Screen
      • Additional Screens
    • Browse Users
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Browse Members & Profile Screen
    • Browse Dates
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Time Slots & Workout Screens
    • Browse Home Listings
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Listings Screen
      • Listing Detail Screen
      • Modal Image Gallery Screen
    • Image Carousel
      • Overview — Screens, Database, Layout Settings, Use Cases
      • Screens
    • Image Gallery Modal
      • Overview — Screens, Database, Layout Settings, Use Cases
    • User Admin Dashboard
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Workout Assignment
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Social Media Feed
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Store with Shopping Cart
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Inventory Management
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Video Gallery & Upload
      • Overview — Screens, Database, Layout Settings, Use Cases
    • Restaurant Ordering
      • Overview — Screens, Database, Layout Settings, Use Cases
  • 🗃️Database
    • Database Property Types
    • Relationships
      • One-to-Many vs. Many-to-One
      • Many-to-Many
    • The User Collection
    • Collection Permissions
    • Importing Records from a CSV File
    • Download your Collection as a CSV File
    • Location
      • Getting Your Google API Key
      • Estimating Google API Usage
      • The Location Property Type
      • Location in Forms and Inputs
      • Location Magic Text and Formatting
      • Getting the User's Location
      • Latitude, Longitude, and Special Formulas
      • Comparing Locations
      • Troubleshooting Location Features
  • 🪄Settings
    • Copying vs Cloning your App
      • How to Copy and/or Delete an App
      • Cloning Apps and Making Apps Cloneable
  • 🚀Performance
    • Builder Performance Tips
    • Optimize App Performance
      • Image Optimization
      • Five Tips for Improving Your Adalo App Performance
  • ✍️Publishing Apps
    • Publishing to the Web
      • Publish to Adalo Subdomain
      • Publish to Custom Domain
      • Troubleshooting Domain Setup
        • Custom Domain is Not Secure
        • Domain Could Not be Verified
        • Error: Not Found
    • Publishing to the Google Play Store
      • Create Your Google Developer Account
      • Create your Firebase Project
      • Register Android App & Download Config File
      • Generate & Download Private Key
      • Get your Build file
      • Create New Google Play Listing
      • Upload your Build file to Google Play Listing
      • Finalize Listing and Release App
      • Troubleshooting Android Release
        • Google Play rejected the app due to data safety issues
        • Error: Android App Signed with Wrong Key.
        • Error: Version Code 'xxx' has already been used. Try another Version code.
        • Error: Package Name already exists in Google Play.
        • Error: Upload a valid app bundle.
        • Error: Existing Users Can't Upgrade to New App Bundles.
    • Publishing to the Apple App Store
      • Create Your Apple Developer Account
      • Setup Annual Payment for your Apple Developer Account
      • Create Your Apple Bundle ID
      • Create Your Adalo ‘App-Specific Password’
      • Start your Build in Adalo
      • Add Users to Your App Store Connect Team
      • Add Users to Testflight
      • Creating Screenshots for the App Store
      • Privacy and App Tracking Transparency
      • Troubleshooting iOS
        • Build Error: You have reached the maximum number of certificates
        • Build Error: You have already reached the maximum allowed number of keys for this service
        • Build Error: Distribution certificate has expired
        • Build Error: Asset Validation Failed - Invalid App Store Icon
        • App Rejected: Add Permission Text to Your iOS Build
        • Delivery warning during the app submission process: ITMS-90899
        • iOS Build Not Showing in Testflight
        • Apple Two-Factor Authentication Error
    • Publishing to the Web (Legacy Apps)
    • Uploading .APK (Legacy)
    • Publishing FAQs
    • Troubleshooting
      • Build Stuck in Queue
  • ▶️Videos
    • Getting Started
    • Full Walkthrough
    • Working with Data
    • Designing your Database
    • Custom Lists
    • Changing Component Visibility
    • Forms
    • Ordering & Payments
    • Math & Custom Formulas
    • Chat
  • 👩‍🏫Tutorials
    • How to Use Keyboard Shortcuts
    • How to Embed Video or Audio (YouTube, Vimeo, SoundCloud)
    • How to Share a Database Between Apps
    • How to Create an Empty State
    • How to Create a Search Bar
    • How to make a list your users can filter
    • How to Create a Modal/Popup Window
    • How to create a "Favorite" button (Legacy Builder)
    • How to add an Image to an App Bar
    • How to send Scheduled Push Notifications
    • Start Maps Navigation in Your Adalo Apps Using Google Maps, Apple Maps, or Waze
    • Generating Map Previews in Your Adalo App Using the Google Static Maps API
    • Special Links: Email, Text (SMS), and Phone
    • How to have a Dropdown Menu in a Form
    • How to Setup a Shopping Cart with Payments
    • How to set up a Public Profile screen for Users
    • How to Allow Users to Follow Others
    • How to have a Form Automatically Set a Relationship
    • How to add Chat to your App
    • How to Create Multi-Sided Apps
    • How to Add an "Add to Calendar" Button for Events
    • Forwarding Domain to Root Address
    • How to Create Temporary User Avatars
    • How to Set Up a Social Media List
    • How to Play Your Spotify Podcast in Adalo’s Audio Player
  • 🧩Integrations
    • The Adalo API
      • Collections API
      • Send Push Notifications via API
    • Xano
      • Setup Your Xano Workspace
      • Connect Xano with Private Swagger
      • Connect Xano to an Adalo App
      • User Signup, Login, Authentication
      • Google Sign In with Xano Database
      • Other Collections
      • Working with Data Types in Adalo and Xano
      • Counting Records with Xano
      • Lists and Pagination
      • Xano Response
      • Xano Tips and Tricks
      • Troubleshooting
    • Accessing your Record ID
    • Custom Actions
      • ✨Power Your App with ChatGPT
    • External Collections with APIs
      • Magic Text in External Collections
    • Airtable
      • Connecting to Airtable
      • Adding/Deleting Properties
      • Displaying Images
      • Working with Lists
        • Images In Lists
        • Filtering Airtable Lists
        • Magic Texts in Lists
        • Limiting the Number of List Items
        • Sorting Airtable Lists
      • Working with Forms
        • Airtable Dropdown fields & Validation
      • Working with Attachments, Images and Airtable relationship Fields
      • Relationships & Airtable Collections
      • Debugging
    • DreamFactory
    • Zapier
    • Make (Formerly Integromat)
      • Create a PDF from a record in Adalo
      • Notification in Slack when a new user registers in your Adalo app
      • Send verification email to new sign ups
      • Send a verification SMS to new sign ups
      • Send a file to Google Drive from Adalo
      • Send new files from a Google Drive folder to an Adalo collection
      • Use Google Vision for OCR an image and store the text results in an Adalo record
    • IAPHUB
    • Mixpanel
    • Troubleshooting the Adalo API
      • List inside of a List not loading
      • Error Codes
  • ⚙️Adalo Account
    • Account
      • Updating Email and Password
      • Enabling Developer Mode
    • Team Members
      • Add Team Members to Your Adalo App
    • Apps
    • Usage and Billing
      • Billing, Invoices, and Payments
      • App Actions Dashboard
    • Domains
      • Resetting SSL
  • ❓FAQs
    • General Questions
    • What can Adalo do?
    • Adalo Pricing: FAQs
    • Adalo Account: FAQs
    • Adalo Subscription Add-Ons
    • Working with an Adalo Freelancer
    • Adalo Experts
    • Adalo Affiliate Program
    • Adalo Pricing: Legacy Accounts
  • 🤔Troubleshooting
  • 📚Additional Resources
    • Adalo App Academy
      • Introduction to Apps
      • Strategy and Business
      • Design
      • Build
      • Launch & Iterate
      • Freelancers & Agencies
      • All Courses
    • App Development Cost Calculator
    • Hire an Adalo Expert
    • Adalo Forum
  • 📖Glossary
Powered by GitBook
On this page
  • Before You Begin
  • Walkthrough
  • Example
  • Learn More
  • Help

Was this helpful?

  1. Tutorials

How to Create Multi-Sided Apps

Give your users different features or experiences based upon their role. Enable coach/client views, control paid features of your app, or build yourself an admin panel!

PreviousHow to add Chat to your AppNextHow to Add an "Add to Calendar" Button for Events

Last updated 1 year ago

Was this helpful?

Skill Level: Intermediate

Before You Begin

  • Know about and the basics of how to create them.

  • Know the basics of Conditional Visibility and Conditional Actions

  • Know the basics of and

  • You do not need a paid Adalo plan to use this feature.

Walkthrough

1.) Before we choose and build out how our multi-sided app will work, we need to establish some user types or roles within our database in order to determine which side of the app a user should see. There are a few ways to do this.

  • True/False fields for user roles. For instance, if we had mentor/client roles, we could add two True/False properties to the User collection - one called "Client?" and the other called "Mentor?".

  • A text property called "Role" that holds a unique value for a user type. This prevents us from clogging up our users collection with true/false properties if we have lots of roles. For instance, if we had mentors, clients, and admin as user roles, we could simply set those values for the user automatically within a form or on a button that the user presses.

  • We can also create a called User Roles, if we have a lot of roles for users to choose from. The advantage here is that we can assign lots of properties to a user role, then assign that user role to a user through a . Using this method, we can assign things like "Clearance Levels" to users so that all users above a certain level all have access to the same things while users below that level do not. This allows us to give permissions to several user roles within a hierarchy of many roles.

No matter which route you choose, you can use the same logic to provide different workflows and experiences for your users. There are many different ways to accomplish this, but all of them will require some sort of conditionality by either using Conditional Visibility or Conditional Actions. Here are 3 examples utilizing the True/False method above to get you started:

Using Conditional Visibility Based on User Role

This method can be used to display a component or button only if a user's role matches a certain criteria.

1.) Ensure you have your True/False properties of "Mentor?" and "Client?" setup in the Users collection and at least 2 screens in your app - a home screen and a mentor dashboard screen.

2.) On one screen, add a simple button labeled "Mentor Dashboard" by clicking on the big plus sign in the top left corner

3.) Click on the new button, then in the Click Actions section, add a Link action to link to the second screen.

4.) Click on the More icon in the top right of the button's settings menu, then choose Change Visibility

5.) In the Visibility dropdown, choose Sometimes Visible.

6.) Since we only want this "Mentor Dashboard" button to be visible to the user if they are a mentor, we need to set the visibility to reflect this. In the Will be visible if... dropdown choose Logged In User > Mentor? In the dropdown that now appears just below, be sure to select Is True if not already chosen.

Using Conditional Actions Based on User Role

This method can be used to perform an action only if a user's role matches a certain criteria.

1.) Ensure you have your True/False properties of "Mentor?" and "Client?" setup in the Users collection and at least 3 screens in your app - a home screen, a client dashboard screen, and a mentor dashboard screen.

3.) Click on the new button, then in the Click Actions section, add a Link action to link to the client dashboard screen.

4.) Click on the new link action's Show Advanced option in the action settings, then in the When does this happen? dropdown, choose Sometimes.

5.) Another dropdown will appear labeled This action will only happen if... In this dropdown choose More> Logged In User > Client? Just below, be sure to set the dropdown to Is True

Building Different Apps with a Shared Database

Yet another way to control the user's experience based on role, is to simply make separate apps for each user role by sharing the same database between the apps. For instance, Uber has a driver app and a rider app.

2.) Choose the type of app, then click Next.

3.) Choose Blank from the template options, then click Next.

4.) Give your app a name, choose the Team it should be placed on and it's colors, then click Advanced Options

5.) Choose the Share Database with an Existing App option, then choose which app to share the database with. Click Done, then click Create.

8.) Click on the Copy/Delete section dropdown, then choose Copy ______

9.) You will be prompted to give the new app a name. Be sure to check the Share the same database in order to use the same database for both apps. Choose which team to put the app on from the dropdown, then click Create.

1.) Before we choose and build out how our multi-sided app will work, we need to establish some user types or roles within our database in order to determine which side of the app a user should see. There are a few ways to do this.

  • True/False fields for user roles. For instance, if we had mentor/client roles, we could add two True/False properties to the User collection - one called "Client?" and the other called "Mentor?".

  • A text property called "Role" that holds a unique value for a user type. This prevents us from clogging up our users collection with true/false properties if we have lots of roles. For instance, if we had mentors, clients, and admin as user roles, we could simply set those values for the user automatically within a form or on a button that the user presses.

No matter which route you choose, you can use the same logic to provide different workflows and experiences for your users. There are many different ways to accomplish this, but all of them will require some sort of conditionality by either using Conditional Visibility or Conditional Actions. Here are 3 examples utilizing the True/False method above to get you started:

Using Conditional Visibility Based on User Role

This method can be used to display a component or button only if a user's role matches a certain criteria.

1.) Ensure you have your True/False properties of "Mentor?" and "Client?" setup in the Users collection and at least 2 screens in your app - a home screen and a mentor dashboard screen.

3.) Click on the new button, then in the Click Actions section, add a Link action to link to the second screen.

5.) In the Visibility dropdown, choose Sometimes Visible.

6.) Since we only want this "Mentor Dashboard" button to be visible to the user if they are a mentor, we need to set the visibility to reflect this. In the Will be visible if... dropdown choose Logged In User > Mentor? In the dropdown that now appears just below, be sure to select Is True if not already chosen.

Using Conditional Actions Based on User Role

This method can be used to perform an action only if a user's role matches a certain criteria.

1.) Ensure you have your True/False properties of "Mentor?" and "Client?" setup in the Users collection and at least 3 screens in your app - a home screen, a client dashboard screen, and a mentor dashboard screen.

3.) Click on the new button, then in the Click Actions section, add a Link action to link to the client dashboard screen.

4.) Click on the new link action's Show Advanced option in the action settings, then in the When does this happen? dropdown, choose Sometimes.

5.) Another dropdown will appear labeled This action will only happen if... In this dropdown choose More> Logged In User > Client? Just below, be sure to set the dropdown to Is True

Building Different Apps with a Shared Database

Yet another way to control the user's experience based on role, is to simply make separate apps for each user role by sharing the same database between the apps. For instance, Uber has a driver app and a rider app.

2.) Choose the type of app, then click Next.

3.) Choose Blank from the template options, then click Next.

4.) Give your app a name, choose the Team it should be placed on and it's colors, then click Advanced Options

5.) Choose the Share Database with an Existing App option, then choose which app to share the database with. Click Done, then click Create.

8.) Click on the Copy/Delete section dropdown, then choose Copy ______

9.) You will be prompted to give the new app a name. Be sure to check the Share the same database in order to use the same database for both apps. Choose which team to put the app on from the dropdown, then click Create.

Example

Learn More

  • Note that if you create two or more separate apps that share the same database, you will need to also publish them separately on the app stores.

  • A common way to assign roles upon user signup is to provide an onboarding sequence where they choose their role by selecting buttons.

Help

2.) On the home screen, add a simple button labeled "Dashboard" by clicking on the big plus sign in the top left corner

1.) Once you have created one user role's app and it's database, you can copy it or create a new app that shares the same database. To create a new one, click the name dropdown of the app in the top middle of the Adalo Builder, then click the Create New App option at the bottom

7.) To copy the app instead of creating a new one, click the Settings icon on the lefthand menu in the Adalo Builder.

We can also create a called User Roles, if we have a lot of roles for users to choose from. The advantage here is that we can assign lots of properties to a user role, then assign that user role to a user through a . Using this method, we can assign things like "Clearance Levels" to users so that all users above a certain level all have access to the same things while users below that level do not. This allows us to give permissions to several user roles within a hierarchy of many roles.

2.) On one screen, add a simple button labeled "Mentor Dashboard" by clicking on the big plus sign in the top left corner

4.) Click on the More icon in the top right of the button's settings menu, then choose Change Visibility

2.) On the home screen, add a simple button labeled "Dashboard" by clicking on the big plus sign in the top left corner

1.) Once you have created one user role's app and it's database, you can copy it or create a new app that shares the same database. To create a new one, click the name dropdown of the app in the top middle of the Adalo Editor, then click the Create New App option at the bottom

7.) To copy the app instead of creating a new one, click the Settings icon on the lefthand menu in the Adalo Editor.

If you followed one of the methods above, you should have a good start to building a multi-sided app for your users. If you would like to view or clone the app used in this walkthrough, please .

You can always find examples of great multi-sided apps by checking out our .

You can also assign roles at signup by setting them as within a form.

If you need additional help with this article, you can always ask in our! Be sure to paste the link to this article in your post as well!

Do you have a tutorial or help doc request?

👩‍🏫
click here
app templates
community forum
Let us know!
Databases
Screens
Components
Collection
Collection
Relationship
Relationship
automatic fields
Add true/false properties to denote a user's role.
Add a text field to hold the user's role type.
A view of the Role Types collection
The relationship type between Users and Role Types
2 True/False properties for the Mentor and Client roles
Adding a simple button to link to the mentor dashboard.
Adding a link action to the mentor dashboard button.
Setting the button visibility to sometimes visible.
Setting the visibility so that the button is only visible if the Logged In User is a Mentor.
2 True/False properties for the Mentor and Client roles
Adding a simple dashboard button to the home screen
Making the link action only happen sometimes.
Adding the conditional action's criteria.
Creating a new app.
Choosing the type of app.
Choosing the blank template option
Adding a name and selecting advanced options
Sharing the database with another app
Select the settings gear in the left-hand menu.
Copying the current app
Name the app copy and be sure to select Share the same database