Teams Retires Client Ability to Load Websites from Channel Tabs

Website Channel Tabs Will Open New Browser Tab

In message center notification MC708500 (20 January 2024), Microsoft announces that from early April 2024 (following the retirement of the classic Teams client), Teams will no longer load websites inside the client when called from a website channel tab. Figure 1 shows an example of a channel tab targeting https://office365itpros.com. When a user accesses the tab, Teams opens the site and displays its content inside the client. The client also highlights the direction it is moving in and offers the option to open the page inside a browser.

The Teams desktop client opens a website channel tab.
Figure 1: The Teams desktop client opens a website channel tab

Microsoft says that the change “is to better align with emerging best practices in web security and privacy while also improving the reliability of websites opened through this feature.” They also say that the change applies only to commercial and government tenants and not educational tenants. Perhaps because Microsoft’s telemetry shows that accessing websites via Teams channels is most common in Edu tenants, they won’t go ahead with the change in Edu tenants until Microsoft finds a “non-disruptive way to access websites.” One wonders why the same care isn’t paid not to disrupt other tenants.

When the change reaches a tenant, all website channel tabs accessed through the Teams desktop and browser clients will open the target site in a new browser tab. The Teams mobile app is not affected by the change.

Not a Bad Idea

I don’t think the change is bad. Many web sites require authentication and quite a few use a form of multifactor authentication. Attempting to open these sites in the Teams client usually fails. I’ve experienced this issue several times, and opening a site in a browser tab is an effective solution.

The change doesn’t affect pages in SharePoint Online sites. These pages are accessed through the SharePoint app tab rather than the website tab and can therefore use the integrated authentication available for Microsoft 365 apps.

Identifying Affected Website App Links

The altered behavior might come as a surprise to users so it’s a good idea to understand how many channel tabs are affected. We’ve been down this path before when Microsoft deprecated the use of the wiki tab in favor of OneNote. At the time, I created a PowerShell script to report channels with active wikis.

Much the same approach can be used to find websites. The same basic script structure applies:

  • Connect to the Microsoft Graph PowerShell SDK with the necessary permissions (scopes). The signed in account should hold the global administrator or Teams administrator role.
  • Find the set of teams in the tenant.
  • For each team, find its channels.
  • For each channel, find if its tabs include a website tab (the app id associated with the tab is “com.microsoft.teamspace.tab.web.” A team can support up to 1,000 channels, so this process can take time!
  • Extract the details, including a decoded version of the URL (Teams stores the URL in a fashion that makes it possible to load the page in the client).
  • Report what’s found.

When I ran the script in my tenant, I was surprised to discover that many of the website tabs had URLs pointing to SharePoint sites. This is probably because the current SharePoint channel tab was not as functional beforehand – or I made a mistake and used the website tab instead. In either case, this demonstrates the value of reviewing website tabs to figure out if website tabs should be converted to SharePoint tabs.

Interestingly, despite their deprecation, wiki tabs remain registered to channels. If you list the tabs in a channel, you are likely to find a wiki tab in the returned set. The Teams clients ignore the wiki tab and never displays it in the set of tabs shown for a channel. If you write code against Teams, remember to ignore the wiki tab in the same manner.

Figure 2 shows what I found after running the script on my tenant. You can download the script from GitHub.

The website channel tab report.
Figure 2: The website channel tab report

Not the Last Change to Channel Tabs

Discovering the set of website channel tabs exist in a Microsoft 365 tenant is a good example of the value tools like the Microsoft Graph PowerShell SDK add for tenant administrators. This is unlikely to be the last time that Microsoft makes a change to how channel tabs work. At least we know how to find out what the effect of a change might be.


Insight like this doesn’t come easily. You’ve got to know the technology and understand how to look behind the scenes. Benefit from the knowledge and experience of the Office 365 for IT Pros team by subscribing to the best eBook covering Office 365 and the wider Microsoft 365 ecosystem.

7 Replies to “Teams Retires Client Ability to Load Websites from Channel Tabs”

  1. Tx Tony for sharing this valuable info 👍 & script 💪.
    In our case the Tab.WebURL contained ‘&label’ and sometimes ‘?label’, hence I added an extra check 😀
    $LabelPosition = $Tab.WebURL.IndexOf(“?label”)
    if ($LabelPosition -eq -1) {$LabelPosition = $Tab.WebURL.IndexOf(“&label”)}

    1. Hmmm… are those very old website tabs? I wonder when Microsoft made that change. In any case, it’s PowerShell so any change to improve code is welcome.

      1. FYI the WEbURLs containing ‘?Label’ are Channel-WebTabs pointing/referencing a ‘.html’ file stored within a SP Library

  2. We have over 51,000 Teams in our tenant. It’s pretty much impossible to maintain a connection and authenticated session long enough to parse all those Teams to get these types of scripts to finish. Does anyone know of a way to build in resiliency to ensure this type of script can complete processing or at least pause with the ability to resume on connection or authentication time outs? I’m still trying to update my PowerShell skills for Graph API.

    1. Where is the problem? Fetching details of teams to process or in the processing of the teams? I suspect the latter… If so, consider splitting processing up into sections. For instance, process all teams with display name starting with ABC, then DEF, and so on… store the results for the batches in an array or CSV file. If something breaks, you’ll know where to restart.

      1. Yeah – processing the teams after they are fetched. It just seems so inconsistent with how many can be processed in a batch before a timeout will eventually occur. Even doing one letter of the alphabet at a time doesn’t get me through all Teams we have that start with a single letter. I’ve been just doing an export first and then feeding that list of IDs to process in batches but that ends up needing to be about 1,000 or less at a time. Doing that 50 times or more gets old, quickly. I’ll just keep playing around with different ways to organize smaller batches. Thank you – I appreciate the reply.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.