PowerApps Discoverability in the Enterprise – Part 3
Welcome back to our series on enterprise discoverability for PowerApps, where we’ve shown you how to make your enterprise apps easier to discover, differentiate between official and citizen-developed apps, and drive more return traffic to the apps you’ve built. In the last post we discussed how to use vanity URLs, QR codes, and push notifications. And in our first post we covered Featured apps and Hero apps.
In this post we’ll discuss deep linking to PowerApps from other apps and websites, embedding your apps into SharePoint sites, and integrating your PowerApps into Microsoft Search in Bing search results.
Deep Linking from other PowerApps
Thrive is a collection of PowerApps that come together to form an employee experience. When we were designing the experience, we debated whether we should build an uber app or break the experience up into apps by function. Ultimately we decided to break the apps up to minimize mobile package size, enable multiple teams to work independently on feature areas, and limit the blast radius when an app needs to be changed and retested.
Once a user launches one of our PowerApps, we want them to be able to easily discover the other PowerApps in our employee experience. This way they don’t have to exit the app, return to the player, and search for another app. It’s faster and makes the experience more immersive.
We have a Thrive Home app that is easily discoverable since we’ve designated it as the Hero app, which we covered in Part 1 of this series. The Home app features a card stream with task and content cards, many of which deep link to other PowerApps. For example, we send holiday reminder cards to our employees. Tapping on the card will launch the Thrive Holidays app, where a user can get more information about the holiday and add it to their Exchange calendar.
Each app also has an app launcher for all the other apps in our employee experience. By clicking on the hamburger menu, the user can see all the other apps that they can access. We present a custom icon, a short description, and a Launch button to open the target app without leaving our experience.
Both of the methods above use the PowerApps Launch() function to launch the selected PowerApp. On the mobile app the user will see a short splash screen as the app launches in place. On the web player, a new tab will be launched.
Right now we keep a list of our apps in Azure table storage, app icons are stored in blob storage, and an Azure app service calls the checkMemberGroups operation in Microsoft Graph to see if the user has permissions to view the app. But, as PowerApps capabilities evolve, we’ll evolve how we enumerate our apps. Our upcoming version will likely use the Get-Apps call via the Powers Maker Connector (which also works for non-makers), then combine the results with CDS metadata to support our administration.
When we first began building our enterprise PowerApps, we looked for common scenarios that had an element of employee interaction. As our apps send emails, meeting invites, or automatic replies, we’re sure to include a plug for our employee experience with links to the app and the app stores for mobile clients. For example, our Time Away app uses the Microsoft Graph mailboxSettings call to return an automatic reply while the user is out of the office. We let the user personalize a message then we append a plug for our apps in the body text.
The Time Away app also sends ‘out of office’ meeting invites to selected colleagues with the same promotional text. Our Kudos app sends mail to the recipient and their manager with links back to the tool. Over time these mails raise awareness and drive traffic back into our tools. Now when we check the ‘Location’ view of the PowerApps analytics report for our Kudos app, we find app usage in locales where we have never promoted the app. Our users are doing the promotion for us.
Tie-Ins to Existing Web Apps and Portals
Some of our PowerApps have natural tie-ins to existing enterprise applications. For example, we have an aging internal application for time entry. We’ll shortly be adding a ‘Try the mobile experience’ link to this website. Below is a screenshot from our internal employee feedback tool called Perspectives. Our Kudos app saw a huge spike in traffic when we simply added a link for users to thank their colleague for sharing feedback. The link was crafted in such a way that it passes the employee email address and Kudos badge ID as querystring parameters to the Kudos PowerApp. The Kudos app then uses the Param() function to pull these parameters out of the URL and store them in variables.
We’ve similarly added links to each of our apps from the internal company HR portal. For example, if someone searches for ‘Microsoft Holidays’, they’ll land on our Microsoft Global Holidays SharePoint page and they’ll see this message:
Get the Thrive Holidays app on your phone.
Want to get notifications of upcoming holidays and easily add them to your calendar?
Go to aka.ms/thriveportal to learn how.
PowerApps can also be embedded directly into modern SharePoint pages. Not only does this aid discovery of the app, but the content and the app can be easily changed independent of each other. For example, we created the Thrive Conference app that can be used for any internal conference. For our recent Early Career conference, the HR team built a great SharePoint site for the event, then embedded our app directly into their site.
For step-by-step instructions, see the article on Using the PowerApps Web Part. After you do this, you’ll want to experiment with the size of the web part to get it just right. We’ve also had success by using the ‘Enable app embedding user experience’ experimental feature to remove white space. This is found in the Studio under File –> App settings –> Advanced settings –> Experimental features.
Microsoft Search in Bing Integration
With Microsoft Search in Bing, you can now create a bookmark for your enterprise and embed PowerApps directly in your search results. An administrator configures the Bing search engine so that when logged-in employees in certain groups or locales – or using certain devices – search for specific terms, they’ll get the PowerApp in a pane at the top of their search results.
For example, our US employees see a view like the image below when searching for ‘vacation’, ‘time away’, or ‘time off’, while our international employees see a different version of the app. For consistency, we make sure that we use the same security group in our Microsoft Search in Bing bookmark that we use to share the app.
This is the fully functioning Time Away PowerApp, directly inside the search results. Our employees get the app plus a link back to our time off policy pages. All interactions work: our users can check their balances, submit their time off, and notify their colleagues with meeting invites and automatics replies. Deep links work too, so our users can go to our app launcher screen from the hamburger menu and quickly get to any other app in our employee experience. We can’t recommend this feature enough as employees really love it.
Closing Thoughts on Enterprise Discoverability
Over the past couple of years, we’ve really been impressed with the flexibility of PowerApps. Our initial charter was to build a mobile experience. But we soon realized that PowerApps in the enterprise enables the mobility of the experience. You can build an app once, instantly publish it, and consume it on every major mobile platform and the web. Those apps can easily be torn apart and recomposited, to be redeployed in some other corner of your enterprise.
Once you’ve built your PowerApp, you can drive traffic to it from QR codes on external media, push notifications, deep links, embedded apps in SharePoint, Bing, Teams, and more. Every enterprise is different, and some of these strategies will work better than others, but be sure to do one thing: capture your referrer. This way you’ll know where your traffic is coming from and you can focus your efforts in that area. If you can, use your URL shortening service to create different URLs that you can track, or consider passing in a referrer parameter into the URL, retrieving it with the Param() function, then writing it to a CDS table.
That’s it for our series on Enterprise Discoverability. We hope this was useful, and please do comment if you have any questions or ideas!