Many guides still build web links in Power Apps by gluing text together, or they point you to Navigate(). It works for a fixed link, but Navigate() only moves between screens, and a hand-built URL breaks the moment the text has a space or an ampersand.
The better way is Launch(). Put Launch("https://www.spguides.com/") in a button’s OnSelect, and the page opens in a new browser tab with every parameter encoded for you.
In this tutorial, we’ll cover every powerapps navigate to url case I tested in a real app: a new tab, the same tab, a URL with parameters, a URL built from a variable, one reusable named tab and opening another canvas app on a specific record.
Every result below comes from my own Service Desk Demo app, run in Studio and in the published player on 10/31/2026.
The Sample App We’ll Use (Build It Step by Step)
All the examples run in one canvas app connected to a SharePoint list called Service Requests. It has 623 help desk tickets with a Title, Status and Priority. If you’ve never connected a list before, our guide to creating a canvas app from a SharePoint list goes deeper.

Step 1: Start a new app. Go to make.powerapps.com and select Start with design on the Home page.

Step 2: Create a blank canvas app. Select Create from blank. A canvas app is one where you place every control yourself.

Step 3: Pick the Tablet layout. Choose Tablet and select Create. Power Apps Studio, the app editor, opens.

Step 4: Add the data. Select Add data, search for SharePoint and pick the SharePoint connector. Then paste your site URL and select Connect.

Step 5: Choose the list. Check Service Requests and select Connect. The list is now a data source, which is just a place the app reads records from.

Step 6: Add the demo screen. Select New screen > Blank. To rename it, select the screen and click the pencil next to its name in the Properties pane. I called it scrLaunch.
Step 7: Insert the controls. From the Insert menu, add six buttons, a Text input named txtLaunchSearch, a label and a vertical gallery named galLaunch. Set the gallery’s Items to the first four tickets:
FirstN(Sort('Service Requests', ID, SortOrder.Ascending), 4)
To set any property, select the control, pick the property in the dropdown on the left of the fx formula bar, then type the formula. Run the app with Play at the top right, or hold Alt and click a button. Press Ctrl+S to save.
Navigate() vs Launch(): Which One Opens a URL?
Navigate() switches to another screen inside the same app, and it only accepts a screen. That’s why the Navigate function in Power Apps can’t open a web page, no matter what you pass it.
Launch() opens a web page or another canvas app in the browser. It only works in behavior formulas, such as a button’s OnSelect, not in a label’s Text property.
Method 1: Open a URL in a New Tab (Recommended)
Use this for a help link, a policy page or a SharePoint document. Select the first button, pick OnSelect in the property dropdown and type this. Our post on the Power Apps button OnSelect property shows what else a button can run.
Launch("https://www.spguides.com/power-apps/")
Clicking it opens the SPGuides Power Apps hub in a new tab, and the app stays open in its own tab.

How does this work?
Launch() takes the address as its only required argument. In a web browser, the default target is New, so you don’t have to say “new tab” anywhere.
If you’d rather show the link as text than as a button, the same formula works in a label’s OnSelect. Here’s how to create a hyperlink button in Power Apps that looks like a link.
Method 2: Open the URL in the Same Tab
Sometimes the app is done once the user clicks, like a “Finish and go to the portal” button. Same app, second button, with LaunchTarget.Replace as the third argument:
Launch("https://www.spguides.com/power-apps/", {}, LaunchTarget.Replace)
I ran this in the published app. The player tab itself went to the Power Apps tutorials hub, the app closed, and no new tab opened.

How does this work?
LaunchTarget only works with the record form of the parameters. That’s why the formula has an empty record {} in the middle, even though this URL needs no parameters.
Important: test Replace in the published app. In Studio it would replace the Studio tab, so I didn’t run it there.
Method 3: Open a URL With Parameters
Parameters are the ?name=value part of a URL. SPGuides search reads the s parameter, so it makes a good test target. Put the names and values in a record:
Launch("https://www.spguides.com/", {s: "launch function"})
You can also pass them as name and value pairs. Both forms build the same address, but only the record form accepts a LaunchTarget, so I use it everywhere:
Launch("https://www.spguides.com/", "s", "launch function")
How does this work?
Power Apps URL-encodes the address and every value for you, as if you’d used EncodeUrl. A space becomes a plus or %20, so you never type ?s=launch+function by hand. The same idea powers a text input that works as a hyperlink.
Method 4: Build the URL From a Variable
Hard-coded values only get you so far. Same screen, now with the txtLaunchSearch box: button 4 copies what the user typed into a global variable and passes it to Launch(). Our guide to global vs context variables in Power Apps explains when Set() is the right pick.
Set(varSearch, txtLaunchSearch.Text);
Launch("https://www.spguides.com/", {s: varSearch})

In Preview, I typed launch url and clicked button 4. The label next to it now shows varSearch = launch url.

A new tab opened on https://www.spguides.com/?s=launch+url, which showed “Search Results for: launch url”.

How does this work?
Set() runs first and stores the text. Launch() then reads varSearch and adds it as the s parameter. The space in “launch url” became a plus sign without any extra code.
Pro Tip: you can pass txtLaunchSearch.Text straight to Launch(). I keep the variable because I reuse the value elsewhere, and if you clear the text input after the click, the variable still holds what was sent.
Method 5: Reuse One Named Tab
Click a New-tab button five times and you get five tabs. If users keep coming back to the same page, give the tab a name instead of LaunchTarget.New:
Launch("https://www.spguides.com/power-automate/", {}, "SPGuidesTab")
I clicked button 5 twice in Preview. The first click opened the Power Automate hub in a new tab, and the second click reused that same tab, so only one tab opened.
How does this work?
When a tab with that name already exists, Launch() replaces its content. Otherwise, it creates the tab. The name is internal only, so it never shows as the tab title, and it can’t start with an underscore.
Method 6: Open Another Canvas App on a Specific Record
This is the one I use most at work: a list app opens a details app on the ticket the user picked. Same gallery of four tickets here. If you’ve built a gallery OnSelect action before, this works the same way. The target app reads the values with Param() in its StartScreen property.
Select App in the Tree view, pick StartScreen and add a branch for each screen name. With no screen parameter, it returns blank and the app opens on its first screen.
If(
Param("screen") = "param",
scrParam,
Param("screen") = "combo",
scrComboDefault,
Param("screen") = "launch",
scrLaunch
)

Now give button 6 the app’s App URI and a record of parameters. Replace the ID with your own app’s ID, which you’ll find in the app’s Details page:
Launch("/providers/Microsoft.PowerApps/apps/b8b370fa-09aa-4fc1-8cfc-fc9318f12df6",
{screen: "param", id: galLaunch.Selected.ID})

In the published app, I selected New hire setup #1002 (ID 3) and clicked button 6. A new player tab opened straight on scrParam with Param(“id”) = 3, and the LookUp returned “New hire setup #1002 | Closed | High”.

How does this work?
Launch() turned the record into URL parameters, so the player URL ended with &screen=param&id=3. StartScreen read Param(“screen”) and picked scrParam, and the screen used Value(Param(“id”)) because Param() always returns text.
So here’s the catch: from Studio Preview, the same button opened the Studio edit page of the app, not the player. Test app-to-app links from the published app. The player may also ask “Allow Service Desk Demo to access your data?” the first time.
Important: query strings don’t work when launching a canvas app by its App URI. Always pass the values in the record.
Which Method Should You Use?
| Situation | Use |
|---|---|
| Help link, document or policy page | Launch(url) (new tab, the default) |
| The app is finished after the click | Launch(url, {}, LaunchTarget.Replace) |
| Search or filter page with fixed values | Launch(url, {name: value}) |
| Value typed or picked by the user | Set a variable, then pass it in the record |
| Users return to the same page often | A named tab: Launch(url, {}, "MyTab") |
| Open another app on one record | App URI + record, read with Param() in StartScreen |
Things to Keep in Mind
- Nothing opens? The browser’s pop-up blocker may have stopped it. Fix: allow pop-ups for the Power Apps domain.
- Embedded in SharePoint or Power BI, Replace and named tabs aren’t supported. Fix: keep the default New target there.
- On a phone, launching an app that’s already running doesn’t refresh its parameters. Fix: close the app first so it reloads.
- Param() names are case-sensitive and always return text. Fix: match the case and wrap numbers in Value().
- Email and phone links use the same function with mailto: or tel:. Fix: see how to launch an email from Power Apps.
If you want to build apps like this with a guide, our Power Apps training course covers it on real projects.
Here are a few more Power Apps tutorials I’d read next:
Frequently Asked Questions
How do I open a URL in a new tab in Power Apps?
Put Launch(“https://your-url”) in a button’s OnSelect. In a web browser, New is the default target, so the page opens in a new tab and the app stays open.
How do I open a URL in the same tab in Power Apps?
Use the record form with LaunchTarget.Replace: Launch(“https://your-url”, {}, LaunchTarget.Replace). The empty record is required, because only the record form accepts a target. Test it in the published app.
Can I use Navigate() to open a website in Power Apps?
No. Navigate() only moves between screens in the same app. Use Launch() for web pages and other canvas apps.
How do I pass a variable in a Power Apps Launch URL?
Store the value with Set(), then pass it in the parameter record, like Launch(“https://www.spguides.com/”, {s: varSearch}). Power Apps URL-encodes the value for you.
Why doesn’t LaunchTarget.Replace work in my embedded app?
Microsoft says targets other than New aren’t supported in embedded scenarios like SharePoint or Power BI. See the Launch and Param functions reference.

Hey! I’m Bijay Kumar, founder of SPGuides.com and a Microsoft Business Applications MVP (Power Automate, Power Apps). I launched this site in 2020 because I truly enjoy working with SharePoint, Power Platform, and SharePoint Framework (SPFx), and wanted to share that passion through step-by-step tutorials, guides, and training videos. My mission is to help you learn these technologies so you can utilize SharePoint, enhance productivity, and potentially build business solutions along the way.