Power Apps: How to pass parameters in the URL?

Power Apps: How to pass parameters in the URL?

by: Manuel Updated: 6 min read 5 comments Save

Did you know that you can pass parameters in the URL? Sending parameters this way will enable your App to react and adjust to settings when it opens, making navigation a lot easier.

I'll define the concepts below, but this is what I mean:

https://apps.powerapps.com/play/6874ed7c-4868-459a-a9f3-fe0ad9a2bf80?MyID=12333123

Using this with our Power Apps, we can provide many parameters and customize our App to do actions based on these values.

So let's look at how to achieve this.

Query String

A bit of explanation about the concepts first. I'm sure you've seen this on a lot of websites. The query string is part of the URL of the website and provides context to the server that processes the request. For example, if you search for query string on Google, you get:

https://www.google.com/search?q=query+string&source=hp

In this case, we're asking Google to search and passing a parameter in the query string for the query, identified by "q", with the value query+string. There's another parameter, "source," with the value hp. All these values are defined by Google, and they may not make sense to us.

Another thing to keep in mind is that, even if there are parameters, they will be ignored if the server or application is not looking for them.

Catching the parameters

Power Apps enables us to fetch the parameters anywhere by using the "Param" function. This is all we need to fetch the information. Let's use the URL defined above and see how we can use the "MyID".

First, we'll create an empty canvas app and add a new Label. We will define the "Text" property as the result of the parameter function. Here's what it looks like:

Let's see it running. If we call the following URL:

https://apps.powerapps.com/play/6874ed7c-4868-459a-a9f3-fe0ad9a2bf80?MyID=ABC123

Where:

  1. 6874ed7c-4868-459a-a9f3-fe0ad9a2bf80 is the identifier of my Power App
  2. MyID is the parameter that I want to provide.

You can find the full link for your app in the Power Apps maker portal. Select your app, open its details, and copy the "Web link". Today it looks like this:

https://apps.powerapps.com/play/e/<insertEnvironmentId>/a/<insertAppId>?tenantId=<insertTenantId>

The tenant ID already started the query string, so every parameter you add starts with &:

https://apps.powerapps.com/play/e/<insertEnvironmentId>/a/<insertAppId>?tenantId=<insertTenantId>&JumpToNew=1&MyID=ABC123

Here's what it looks like:

Let's look at a real example to make things a bit more clear. Let's imagine that we have an app that manages the employees of a company. When someone is hired, HR has an approval flow in Power Automate, and they want to register the new employee in the App. The flow could have a link to the App, but it's a lot nicer if the link opens directly in the "Add User" screen and not in the list of employees. So how do we do this?

We need something that signals our Power App that we want to jump to the new screen. To do that, let's use the parameter "JumpToNew". If it's 1, then open the "New" screen, otherwise show the list.

Here's what it looks like by default.

Now let's change it to enable the validation. First, we need to check when the app opens if we have a valid parameter. If we do, create a new form and navigate to the new screen. So let's pick "App" and configure the "OnStart" property.

Now let's add the formula:

If(
    Param("JumpToNew") = "1",
 NewForm(EditForm1);Navigate(EditScreen1,ScreenTransition.None)
)

We're checking if the parameter is equal to one. We'll do the same as the "plus" button at the top of the screen: add a new edit form and navigate to it. Let's run the app and see what happens.

https://apps.powerapps.com/play/8364f324-2c61-47a3-8850-57dc9462c82c?JumpToNew=1

And we get:

Reading the parameter with StartScreen

The "OnStart" property works, but Microsoft recommends other options, because "OnStart" can slow down how fast an app loads. In some apps, it is also hidden by default. If you can't see it, check the app's advanced settings for a switch to enable it.

For this scenario, the "StartScreen" property is a better fit. It tells the app which screen to show first, and it can read the parameter directly:

If(
    Param("JumpToNew") = "1",
    EditScreen1,
    BrowseScreen1
)

"StartScreen" runs once when the app loads, and it can't run actions like "NewForm". We still need to prepare the form, so use the "OnVisible" property of the edit screen for that. Keep in mind that variables created in "OnStart" are not available in "StartScreen", so read the parameter with "Param" directly.

To test it, save and publish the app, then open the web link with the parameter added at the end.

Non-intuitive behaviors

The value is always text

Even when the parameter is a number, "Param" returns text. Use the "Value" function to convert it. If the parameter wasn't passed, "Param" returns blank, so check it with the "IsBlank" function before you use it.

Names are case-sensitive

"JumpToNew" and "jumptonew" are different parameters. Use the same spelling in the link and in the app.

Spaces and special characters must be encoded

A space becomes %20. For example, First%20Name=Vicki passes a parameter called "First Name" with the value "Vicki". If you build the link in a flow, wrap the value with the "encodeUriComponent" function.

Parameters are read only when the app starts

If the app is already open, changing the link doesn't update the values. Reload the app to pick up the new ones.

A person can edit the parameters in the URL before opening it. Use them to guide navigation, and check permissions on the data itself.

Limitations

Some parameter names are reserved

Power Apps uses some names for itself, such as source, tenantId, locale, theme, hidenavbar and screenColor. Don't reuse them for your own parameters. Pick specific names like "JumpToNew" instead. The full list is in the Param function documentation.

On the Power Apps mobile app, canvas apps open with the ms-apps link format. Since May 1, 2026, these links must include the environment ID, or they stop working. Add restartApp=true to make sure the parameters reach an app that is already open:

ms-apps:///providers/Microsoft.PowerApps/apps/<insertAppId>?tenantId=<insertTenantId>&environmentId=<insertEnvironmentId>&restartApp=true

Final Thoughts

Passing parameters in the Power Apps URL is simple and very useful. The "Param" function reads them, and the "StartScreen" property helps us act on them when the app opens. Just remember that values arrive as text and can be changed by anyone with the link.

Sources

Photo by Goh Rhy Yan on Unsplash

Comments (5)

Spotted a mistake or have a better approach? Let me know. I read and reply to every one.

Telkom University

Can I pass parameters to an app through the command line, and if so, how?

jonsnow

Can I do this with model driven apps? I am looking to change a element on one of the pages in model drive apps using query pararms. Any idea about how to do it?

Diego

Nice and clean!! Thanks for sharing!

Heather Zigli

THANK YOU for sharing this! Totally resolved an issue (trying to pass a parameter from SP page to Power Apps button (which then launches Power Automate flow).

Stacey

I am trying to implement this but receiving an error on the Navigate command, "Navigate is not permitted in OnStart. Use the StartScreen property instead." Any suggestions on the workaround for that?

Leave a Comment

All comments are reviewed for spam before being displayed 5000 left
Replying to