Have you ever filled out an online form, selected your country, and then watched the “State” dropdown automatically update to show only the states for that specific country?
That is a cascading dropdown in action.
When you use cascading dropdowns, the choices in one dropdown depend entirely on what the user selected in the previous one. It creates a parent-child relationship between your input fields.
If you are building business applications in Power Apps, you will need this feature frequently. It makes your app look professional and keeps data entry clean. It prevents users from selecting invalid combinations, like choosing “United States” as the country but “Ontario” as the state.
In this guide, I will walk you through exactly how to create cascading dropdown in Power Apps. We will use a real-world SharePoint scenario, keep the formulas simple, and cover a few practical tips that most tutorials miss—like how to clear out the lower dropdowns when someone changes their mind.
Let’s dive right in.
Create Cascading Dropdown in Power Apps: Real-World Scenario
To make this easy to understand, let’s look at a practical example.
Imagine an organization growing internationally that needs an HR app. The HR team is responsible for setting up new branch offices in various countries.
They need a simple Power Apps form where an employee can submit a new office location. The form needs to capture four things:
- The name of the office
- The country
- The state
- The city

To ensure the data is accurate, the user should first select a country. Once the country is selected, the state dropdown should only show states within that country. Finally, the city dropdown should only show cities within that selected state.
Setting Up Your SharePoint Lists
To make this work seamlessly, we need two separate SharePoint lists.
Why two lists? Because one list will hold our “Master Data” (all the valid countries, states, and cities), and the second list will hold the actual form submissions.
List 1: The Master Data List
Create a new SharePoint list and name it Country Details. This list will store every valid location combination you want to offer in your app.
Create the following columns in this list:
- Country Name (Single line of text) – Note: In SharePoint, you can just rename the default ‘Title’ column to ‘Country Name’.
- State Name (Single line of text)
- Popular City Names (Single line of text)
Once created, add a few rows of sample data. For example:
- United States -> California -> Los Angeles
- United States -> California -> San Francisco
- United States -> Texas -> Austin
- India -> Maharashtra -> Mumbai
- India -> Karnataka -> Bengaluru
List 2: The Form Submissions List
Create a second SharePoint list and name it Office Location. This is where the HR team’s submissions will be saved.
Create the following columns in this list:
- Office Name (Single line of text)
- Country Name (Single line of text)
- State Name (Single line of text)
- City Name (Single line of text)
Now that our SharePoint database is ready, let’s head over to Power Apps.
Design the Power Apps Screen
Open Power Apps Studio and create a new blank Canvas App.
Your first step is to connect your app to the SharePoint lists we just created. Go to the left sidebar, click on Data, click + Add data, search for SharePoint, and connect to both the Country Details and Office Location lists.

Next, let’s design the form. We are not going to use the default Power Apps form control. Building this manually with standard dropdowns gives us much more control over how the cascade works.
Insert the following controls onto your screen:
- Text Input for the Office Name. Name this control
txtOfficeName. - Dropdown for the Country. Name this control
drp_cname. - Dropdown for the State. Name this control
drp_stateName. - Dropdown for the City. Name this control
drp_city_name. - Add four Text Labels above these controls to let the user know what to fill in.
- Add a Button at the bottom and change its text to “Submit”. Name this control
btnSubmit.

Configure the First Power Apps Dropdown (Country)
Let’s start with the top-level dropdown: the Country.
We want this Power Apps dropdown to look at our Country Details master list and show a list of all available countries. However, if you look at our master list, “United States” is listed multiple times (once for California, once for Texas, etc.).
If we connect the dropdown directly to the list, “United States” will appear multiple times in the dropdown. We don’t want that. We want each country to appear only once.
To fix this, we use the Distinct function. The Distinct function looks at a column, removes all the duplicates, and gives you a clean list of unique values.
Select your drpCountry dropdown. Go to the Items property in the formula bar, and enter this formula:
Distinct('Country Details', Title)Note: If you didn’t use the default Title column for your country names, replace ‘Title’ with the actual column name you used.

Bonus Tip: It is always a good idea to sort dropdowns alphabetically. It makes it much easier for users to find what they are looking for. You can wrap the formula in a Sort function like this:
Sort(Distinct('Country Details', Title), Result, SortOrder.Ascending)Now, if you preview your app, your first dropdown will show a clean, alphabetical list of unique countries.
Configure the Second Dropdown (State)
Next, we move to the State dropdown. This is where the magic happens.
We want this dropdown to look at the master list, check which country was selected in drpCountry, and filter the states accordingly.
To do this, we combine the Filter function with the Distinct function. We filter the list first, then grab the unique state names from it.
Select your drpState dropdown. Go to its Items property, and enter this formula:
Distinct(Filter('Country Details', Title = drp_cname.Selected.Value), 'State Name')
Let’s break down what this formula is doing in plain English:
- First, it goes to the
Country Detailslist. - It filters that list to only include rows where the Country matches whatever the user just selected in the
drpCountrydropdown. - Finally, it grabs the
State Namecolumn from those filtered rows and removes any duplicates usingDistinct.
Again, we can make this better by sorting it alphabetically:
Sort(Distinct(Filter('Country Details', Title = drp_cname.Selected.Result), 'State Name'), Result, SortOrder.Ascending)Configure the Third Dropdown (City)
By now, you probably see the pattern. Setting up the City dropdown is almost identical to setting up the State dropdown.
The only difference is that we will filter based on the State selection rather than the Country selection.
Select your drpCity dropdown, go to the Items property, and enter this formula:
Distinct(Filter('Country Details', 'State Name' = drp_stateName.Selected.Value), 'Popular Cities')
And just like before, let’s wrap it in a Sort function so it looks nice and tidy:
Sort(Distinct(Filter('Country Details', 'State Name' = drp_stateName.Selected.Result), 'Popular City Names'), Result, SortOrder.Ascending)If you preview your app right now, the cascading logic will work perfectly. Selecting a country populates the states, and selecting a state populates the cities.

The Missing Step: Resetting Dependent Dropdowns
If you stop here (like many tutorials do), your app will have a hidden bug.
Let’s say a user is filling out the form. They select “United States” for the country, “California” for the state, and “Los Angeles” for the city.
Then, they realize they made a mistake. They actually meant to enter an office in India.
They go back up to the Country dropdown and change it to “India”.
What happens to the State and City dropdowns?
They break. The State dropdown might go blank, or worse, it might freeze on “California” until the user clicks it. This is a terrible user experience.
When a parent dropdown changes, you must immediately reset its child dropdowns so they clear out their old values.
Here is how you do it:
- Select the
drpCountrydropdown. - Go to its OnChange property.
- Add this formula:
Reset(drpState); Reset(drpCity);
Now, whenever the Country changes, the State and City dropdowns will instantly wipe themselves clean.
You need to do the same thing for the State dropdown.
- Select the
drpStatedropdown. - Go to its OnChange property.
- Add this formula:
Reset(drpCity);
This small step makes your app feel incredibly polished and prevents a massive amount of user confusion.
Allow Empty Selections
By default, Power Apps dropdowns will automatically select the first item in the list. This means that as soon as the app loads, a country might already be selected.
This can lead users to accidentally submit the wrong data because they didn’t realize a value had already been selected for them.
To fix this, you want your dropdowns to start completely blank.
- Select all three of your dropdowns.
- Go to the right-side properties panel and find the AllowEmptySelection property.
- Turn it on (set it to true).
- Next, go to the Default property of each dropdown and clear out whatever is in there. Make sure it is completely empty.
Now, when users open the app, the dropdowns will wait for them to make an active choice.
Save Power Apps Cascading Dropdown Data to SharePoint
Now that our cascading dropdowns are flawless, we need a way to save this data back into our Office Location SharePoint list.
We will use the Power Apps Patch function for this. The Patch function tells Power Apps to create a new row in a data source and push specific values into specific columns.
Select your “Submit” button (btn_submit_details).

Go to its OnSelect property, and enter this formula:
Patch(
'Office Location',
Defaults('Office Location'),
{
Title: drp_cname.Selected.Value,
State: drp_stateName.Selected.Value,
City: drp_city_name.Selected.Value,
'Office Name':txt_office_name.Text
}
)
Let me explain what this does:
'Office Location'is the list we want to save data into.Defaults('Office Location')tells Power Apps that we are creating a brand new record, not updating an old one.- The items inside the curly brackets
{}map the columns in SharePoint to the controls in our app.

Clear Power Apps Form After Submission
Once the user clicks Submit and the data is saved, we don’t want the old data sitting on the screen. The form should clear itself out so it is ready for the next entry.
To do this, we just need to add a few Reset functions right after our Patch function.
Go back to the OnSelect property of your Submit button, and update the code to look like this:
Patch(
'Office Location',
Defaults('Office Location'),
{
Title: drp_cname.Selected.Value,
State: drp_stateName.Selected.Value,
City: drp_city_name.Selected.Value,
'Office Name':txt_office_name.Text
}
);
//reset the controls to its default property
Reset(drp_cname);
Reset(drp_stateName);
Reset(drp_city_name);
Reset(txt_office_name);

The semicolon ; tells Power Apps to run the Patch function first, and once that finishes, run the Reset functions one by one.

A Quick Note on Power Apps Delegation
As you build apps in the real world, your lists will grow. Power Apps has a concept called “Delegation”. This essentially means that for certain complex formulas, Power Apps cannot ask SharePoint to do the heavy lifting. Instead, Power Apps has to download the data and process it locally.
By default, Power Apps will only download the first 500 items to process locally (you can increase this limit to 2000 in the app settings).
Because we used the Distinct function, you might see a small blue underline or a yellow warning triangle in your formula bar. This is a delegation warning. It means if your Country Details list ever grows beyond 2000 items, Power Apps might not see the items at the very bottom of the list.
For a list of countries and states, you will rarely hit 2000 items, so you can safely ignore this warning. However, if you are cascading through thousands of products or inventory items, you would want to look into loading your SharePoint list into a local “Collection” first using the ClearCollect function, which bypasses this warning entirely.
Also, you may like some more Power Apps tutorials:
- Get Power Apps App ID, Tenant ID, and Environment ID
- Power Apps ForAll Function
- Environment Variables in Power Apps
- Power Apps Nested IF Examples
Wrapping Up
While building cascading dropdowns, it might feel a bit intimidating the first time you do it, but once you understand the pattern, it becomes second nature.
You set up your master data list, use Distinct for your top dropdown, and use Filter wrapped in Distinct for all the dependent dropdowns down the line. Add in a few Reset commands on the OnChange property, and you have built a bulletproof, professional data-entry form.

Preeti Sahu is an expert in Power Apps and has over six years of experience working with SharePoint Online and the Power Platform. She is the co-author of Microsoft Power Platform: A Deep Dive book. As a Power Platform developer, she has worked on developing various tools using Power Apps and Power Automate. She also makes Microsoft 365 videos and shares them on YouTube.