This is a no-code, step-by-step guide. You package a SharePoint page as a Teams app, upload it, and pin it for everyone in your organisation.
Why do this?
Most organisations already have an intranet on SharePoint, yet people spend their day in Microsoft Teams. Putting the intranet one click away on the Teams app bar (the icons down the left side) raises traffic to the intranet and saves people switching windows.
In this guide you build a small Teams app with one personal tab that loads a SharePoint page. You then upload the app in the Teams admin center and pin it with an app setup policy, so every user sees the icon without installing anything.
What you end up with: an "Intranet" icon in the Teams left rail. Clicking it opens the SharePoint site home page inside Teams, already signed in.
Prerequisites
| Requirement | Details |
|---|---|
| Admin role | Teams Administrator (or Global Administrator) to upload custom apps and edit setup policies |
| SharePoint site | A modern SharePoint site the target users can already read |
| Custom apps allowed | Org-wide app settings must allow custom apps to be uploaded |
| Tools | Any text editor and a zip tool. No Visual Studio, SPFx, or Azure resources are needed |
How it works
| Piece | Role |
|---|---|
| Teams app manifest | Describes the app: its name, its icons and one static (personal) tab |
teamslogon.aspx | A SharePoint page that signs the user in through Teams, then redirects to the page given in the dest parameter |
webApplicationInfo | Points at the SharePoint Online resource (00000003-0000-0ff1-ce00-000000000000) so single sign-on works in the Teams desktop client |
| App setup policy | Pins the app to the app bar for everyone the policy applies to |
Step 1 – Find the SharePoint site and its home page
- Open the SharePoint admin center and go to Sites > Active sites.
- Search for the site and note its URL (in this example,
/sites/work).
Step 1a – Locate the site in SharePoint admin center > Active sites
- Open the site and confirm which page is the home page. For most modern sites it is
SitePages/Home.aspx.
Step 1b – The SharePoint site home page that will appear in Teams
Tip: to confirm the home page, open the browser developer console on the site and run fetch('/sites/work/_api/web/WelcomePage',{headers:{accept:'application/json'}}).then(r=>r.json()).
Step 2 – Create the Teams app package
A Teams app package is a .zip file that holds three files, all at the root of the zip with no folders:
| File | Specification |
|---|---|
manifest.json | App definition (shown below) |
color.png | 192 × 192 px full-colour icon |
outline.png | 32 × 32 px icon, white on a transparent background |
Here is the manifest. Replace contoso with your tenant name, /sites/work with your site path, and <new-guid> with a new GUID (in PowerShell, run [guid]::NewGuid()).
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.17/MicrosoftTeams.schema.json",
"manifestVersion": "1.17",
"version": "1.0.0",
"id": "<new-guid>",
"developer": {
"name": "IT",
"websiteUrl": "https://contoso.sharepoint.com/sites/work",
"privacyUrl": "https://contoso.sharepoint.com/sites/work",
"termsOfUseUrl": "https://contoso.sharepoint.com/sites/work"
},
"name": { "short": "Intranet", "full": "Intranet (SharePoint)" },
"description": {
"short": "Company intranet SharePoint site in Teams",
"full": "Opens the intranet SharePoint site home page inside Microsoft Teams."
},
"icons": { "color": "color.png", "outline": "outline.png" },
"accentColor": "#0078D4",
"staticTabs": [{
"entityId": "intranethome",
"name": "Intranet",
"contentUrl": "https://contoso.sharepoint.com/_layouts/15/teamslogon.aspx?spfx=true&dest=https://contoso.sharepoint.com/sites/work/SitePages/Home.aspx",
"websiteUrl": "https://contoso.sharepoint.com/sites/work/SitePages/Home.aspx",
"scopes": ["personal"]
}],
"permissions": ["identity"],
"validDomains": [
"contoso.sharepoint.com",
"*.login.microsoftonline.com",
"*.sharepoint.com",
"spoprod-a.akamaihd.net",
"resourceseng.blob.core.windows.net"
],
"webApplicationInfo": {
"id": "00000003-0000-0ff1-ce00-000000000000",
"resource": "https://contoso.sharepoint.com"
}
}
The key line is contentUrl. It points at /_layouts/15/teamslogon.aspx?spfx=true&dest=<page URL>. Microsoft documents this pattern for SharePoint content hosted in Teams. It signs the user in to SharePoint through Teams single sign-on, so they don't get a blank frame or a second sign-in prompt.
Zip the three files (select the files themselves, not the folder that contains them). Name the zip something like IntranetTeamsApp.zip.
Step 3 – Upload the app in the Teams admin center
- Go to Teams admin center > Teams apps > Manage apps.
Step 3a – Teams admin center > Teams apps > Manage apps
- Open the Actions menu and choose Upload new app.
Step 3b – Actions > Upload new app
- Select Upload and choose your .zip file.
Step 3c – The Upload a custom app dialog
- When New app added appears, select this link to open the app.
Step 3d – The app was uploaded
- Check the app details. Available to should read Everyone (org-wide default). If the app shows as Blocked, select Allow.
Step 3e – The app's details page, showing it available to everyone
Step 4 – Pin the app with an app setup policy
- Go to Teams apps > Setup policies and open Global (Org-wide default). To reach only a pilot group, create a custom policy instead and assign it to that group.
Step 4a – The App setup policies page
- Scroll to Pinned apps.
Step 4b – Settings for the Global (Org-wide default) policy
- Select + Add apps.
Step 4c – Pinned apps > Add apps
- Search for the app name, hover over it, and choose Select.
Step 4d – Search for the custom app in the Add pinned apps pane
- Check that it appears under Apps to add, then select Add.
Step 4e – The app is queued under Apps to add
- The app now appears in the App bar list. Use Move up or Move down, or drag the handle, to change its position.
Step 4f – The Intranet app in the pinned App bar list
- Select Save, then Confirm in the warning that changes to the Global policy affect the whole organisation.
Step 4g – Confirm the change to the Global policy
Step 5 – Test it in Teams
Open Teams on the web or on the desktop. The new icon appears in the left app bar. Click it and the SharePoint home page loads inside Teams, signed in and fully usable. Users can read news and open links, and page authors can even use Edit.
Step 5 – The SharePoint site running inside Teams from the pinned icon
Rollout timing: Microsoft states that setup policy changes can take a few hours to take effect. Teams on the web usually picks them up first. On desktop, signing out and back in speeds things up.
Troubleshooting
| Symptom | Cause / fix |
|---|---|
| "This app cannot be found" right after uploading | The app catalog hasn't finished propagating. Wait a few minutes and reload Teams |
| Blank white frame in the tab | contentUrl doesn't use teamslogon.aspx, or the domain is missing from validDomains |
| Repeated sign-in prompts on desktop | webApplicationInfo is missing or has the wrong resource. It must be your own tenant's https://<tenant>.sharepoint.com |
| App is missing from the Add pinned apps search | The app is blocked or not yet available. Allow it under Manage apps, and check that the tab scope is personal |
| Icon doesn't appear on mobile | Mobile clients need at least two pinned apps in the policy |
| You need to change the target page | Edit contentUrl and websiteUrl, raise version (for example to 1.0.1), re-zip, then use Manage apps > app > Upload file |
Alternatives worth knowing
- Viva Connections: Microsoft's supported way to bring the SharePoint home site into Teams, with a dashboard, feed and resources. Choose it when the page is your organisation's home site.
- Website tab in a channel: quick for one team, but it appears only inside that channel and can't be pinned to the app bar.
- SPFx personal app: choose this when you need custom code rather than an existing SharePoint page.
Summary
A three-file Teams app package, one upload and one setup-policy edit put any SharePoint site in the Teams left rail for the whole organisation. You don't write code or host anything, and single sign-on works on web and desktop. Repeat the steps with a new GUID and name to add more sites.












