> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getthread.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploy the Teams Service App to a customer

> Deploy your white-labeled Teams Service App into a customer's Microsoft 365 tenant: magic link or email invite, install for all users, pin it via setup policies, and fix the common errors.

The **Teams Service App** is a white-labeled app you deploy into your *customers'* Microsoft 365
tenants. It embeds Messenger inside Microsoft Teams as an iframe, so customers reach your service
team and get real-time updates on their tickets where they already work.

<Note>
  This is the **customer-facing** app. For your own service team inside your own tenant, use the
  [Teams Companion App](/companion-apps/install-the-teams-companion-app) instead.
</Note>

## What it gives your customers

* **White-labeled** — build as many branded apps as you need, one per customer. See [designing a custom Teams app](/messenger/create-teams-app).
* **Messenger embedded** in Teams as an iframe.
* **Updates where they work** — customers connect with their service team and follow their threads without leaving Teams.

<Frame>
  <img src="https://mintcdn.com/thread/A7qXjnetDekdBndI/images/14145869-2022-11-16-11-46-59.png?fit=max&auto=format&n=A7qXjnetDekdBndI&q=85&s=1d36a038428993bf9838ef64891970b9" alt="Thread Messenger embedded as a tab inside Microsoft Teams for an end customer" width="1920" height="1052" data-path="images/14145869-2022-11-16-11-46-59.png" />
</Frame>

## Before you start

1. Finish [setting up Messenger](/inbox/messenger) and [customising the Teams app](/messenger/create-teams-app).
2. **Deploy to your own team first.** It gives your technicians a chance to learn the app and gives you a test environment. If you don't use Teams internally, [test in a sandbox instead](/messenger/deploy-the-slack-service-app).

<Tip>
  Once you've done this once, budget about **three minutes per customer**.
</Tip>

## Deploy the app

<Warning>
  Work in a **separate incognito browser session** throughout, so you're certain which Microsoft
  Teams tenant you're signing into.
</Warning>

<Steps>
  <Step title="Find the customer in Thread">
    In the Thread Admin Panel, open the **Clients** tab, use the magnifying glass to search for the company, and select it.

    <Frame>
      <img src="https://mintcdn.com/thread/hBAbkSANUQ4VVrOg/images/74e589a3-image.png?fit=max&auto=format&n=hBAbkSANUQ4VVrOg&q=85&s=05bf5fa5e965b138b02177ada2617cbd" alt="Searching for a client company in the Clients tab of the Thread Admin Panel" width="1920" height="1080" data-path="images/74e589a3-image.png" />
    </Frame>
  </Step>

  <Step title="Choose Microsoft Teams">
    Go to the **App Deployment** tab, pick **Microsoft Teams**, and click **Continue**.

    <Frame>
      <img src="https://mintcdn.com/thread/A7qXjnetDekdBndI/images/3b1d458b-image.png?fit=max&auto=format&n=A7qXjnetDekdBndI&q=85&s=baca4dde260ba7476995662ccc59fd28" alt="App Deployment tab with Microsoft Teams selected" width="1920" height="1080" data-path="images/3b1d458b-image.png" />
    </Frame>
  </Step>

  <Step title="Pick which branded app to deploy">
    Select the Teams app you want in this customer's tenant, then **Continue**.

    <Frame>
      <img src="https://mintcdn.com/thread/Jrou2eV7uBaBuALP/images/a7393f2f-image.png?fit=max&auto=format&n=Jrou2eV7uBaBuALP&q=85&s=f9e603d61c619b6be685254bd3017810" alt="List of custom Teams apps available to deploy to a customer" width="1920" height="1080" data-path="images/a7393f2f-image.png" />
    </Frame>
  </Step>

  <Step title="Choose Magic Link or Email Invite">
    * **Magic Link** — you have admin access to the customer's Microsoft 365 tenant. This guide follows it.
    * **Email Invite** — you don't. Send the link to an administrator in that tenant, who gets an email walking them through the same steps. The recipient does **not** need Thread access.

    <Frame>
      <img src="https://mintcdn.com/thread/Jrou2eV7uBaBuALP/images/9fdae6be-image.png?fit=max&auto=format&n=Jrou2eV7uBaBuALP&q=85&s=548bb7a9a2d51ebf6f5e4ea7882fbff7" alt="Magic Link and Email Invite deployment options in the Thread Admin Panel" width="1920" height="1080" data-path="images/9fdae6be-image.png" />
    </Frame>
  </Step>

  <Step title="Open the magic link and authenticate">
    Click **Copy link**, then paste it into a new tab in your incognito session. Sign in with an **administrator account in the customer's tenant** and complete MFA.

    <Note>
      If you aren't already signed into Thread in that session, the magic link may ask you to sign into Thread first — so you need Thread admin access for this route. The email link doesn't have that requirement.
    </Note>

    <Frame>
      <img src="https://mintcdn.com/thread/Jrou2eV7uBaBuALP/images/98e2c948-2022-11-15-22-37-45.png?fit=max&auto=format&n=Jrou2eV7uBaBuALP&q=85&s=3ad97e8c6e7680ce9b73fc9f9b56ad7f" alt="Microsoft sign-in prompt for an administrator account in the customer tenant" width="959" height="1040" data-path="images/98e2c948-2022-11-15-22-37-45.png" />
    </Frame>
  </Step>

  <Step title="Grant the bot's permissions">
    Click **Accept**. The permissions and why they're needed are listed in the [Microsoft Teams app permissions reference](/security-billing/microsoft-teams-app-permissions).

    <Frame>
      <img src="https://mintcdn.com/thread/hBAbkSANUQ4VVrOg/images/4d72b6f3-2022-11-15-22-41-28.png?fit=max&auto=format&n=hBAbkSANUQ4VVrOg&q=85&s=6aab33512b976f89c27832019b0ebf12" alt="Microsoft consent screen granting permissions to the Thread Teams app" width="440" height="985" data-path="images/4d72b6f3-2022-11-15-22-41-28.png" />
    </Frame>
  </Step>

  <Step title="Confirm it uploaded and installed">
    <Frame>
      <img src="https://mintcdn.com/thread/Jrou2eV7uBaBuALP/images/91b785c4-uploaded-and-installed.png?fit=max&auto=format&n=Jrou2eV7uBaBuALP&q=85&s=91102d1787b3e02215c06ca4f9ddf291" alt="Confirmation screen showing the Teams app uploaded and installed successfully" width="1462" height="943" data-path="images/91b785c4-uploaded-and-installed.png" />
    </Frame>
  </Step>
</Steps>

## Install it for all users

Uploading the app makes it available. These steps put it in front of users.

<Steps>
  <Step title="Find the app in the Teams admin center">
    Sign in to the [Teams admin center](https://admin.teams.microsoft.com) and go to **Teams apps → Manage apps**. Search for your app and open it.

    <Tip>
      Your app's name is in the Thread Admin Panel under **Messenger → Teams Apps → Edit → Teams app name**. That's the string to search for.
    </Tip>

    <Frame>
      <img src="https://mintcdn.com/thread/hBAbkSANUQ4VVrOg/images/54e8f481-2022-12-12-17-11-53.png?fit=max&auto=format&n=hBAbkSANUQ4VVrOg&q=85&s=69ab0dc455bd0cd986c6528175ca218d" alt="Searching for the custom Thread app in Manage apps in the Teams admin center" width="1619" height="388" data-path="images/54e8f481-2022-12-12-17-11-53.png" />
    </Frame>
  </Step>

  <Step title="Check the app overview">
    You'll see the publisher **Thread Magic, Inc**, the supported surfaces (Microsoft 365, Outlook, Teams), and the published version.

    <Frame>
      <img src="https://mintcdn.com/thread/hBAbkSANUQ4VVrOg/images/64324920-image.png?fit=max&auto=format&n=hBAbkSANUQ4VVrOg&q=85&s=83face5c8aef6ac0d8267fe8f9ecc2a0" alt="Teams app overview page showing publisher Thread Magic Inc and supported surfaces" width="1024" height="887" data-path="images/64324920-image.png" />
    </Frame>
  </Step>

  <Step title="Open Users and groups">
    On the **Users and groups** tab, find the dropdown labelled "Select to manage who this app is installed" and choose **Installs**.

    <Frame>
      <img src="https://mintcdn.com/thread/Jrou2eV7uBaBuALP/images/8b16d260-image.png?fit=max&auto=format&n=Jrou2eV7uBaBuALP&q=85&s=6bb43489034d10c6f1f0b7228cd28abb" alt="Users and groups tab with the install-management dropdown" width="1024" height="470" data-path="images/8b16d260-image.png" />
    </Frame>
  </Step>

  <Step title="Install the app">
    Click **Install App**.

    <Frame>
      <img src="https://mintcdn.com/thread/Zhw8nEn5bwT65_HT/images/e52605fd-image.png?fit=max&auto=format&n=Zhw8nEn5bwT65_HT&q=85&s=37edd8866de0c9569b1aa2154b7db05f" alt="Install App button on the Teams app Users and groups tab" width="470" height="212" data-path="images/e52605fd-image.png" />
    </Frame>
  </Step>

  <Step title="Choose Everyone, then Apply">
    **Everyone** covers all users in the org plus guests and external users.

    <Frame>
      <img src="https://mintcdn.com/thread/Jrou2eV7uBaBuALP/images/bcfe4a33-image.png?fit=max&auto=format&n=Jrou2eV7uBaBuALP&q=85&s=7db8479a0c1ad73a3feb85860fd95043" alt="Install scope selector set to Everyone" width="780" height="770" data-path="images/bcfe4a33-image.png" />
    </Frame>
  </Step>
</Steps>

## Pin it with a setup policy

<Steps>
  <Step title="Open Setup policies">
    In the Teams admin center, go to **Teams apps → Setup policies**.

    <Frame>
      <img src="https://mintcdn.com/thread/Jrou2eV7uBaBuALP/images/9f779a7e-2022-11-15-23-00-04.png?fit=max&auto=format&n=Jrou2eV7uBaBuALP&q=85&s=7b5ec943372d2253f1fbc178c03e23cc" alt="Setup policies list under Teams apps in the Teams admin center" width="1920" height="1052" data-path="images/9f779a7e-2022-11-15-23-00-04.png" />
    </Frame>
  </Step>

  <Step title="Select Global (Org-wide default)">
    This applies to everyone in the customer's tenant. To limit who gets it, create your own policy assignment instead — see [rolling the Teams Service App out to specific users](/messenger/how-to-roll-out-the-teams-service-app-to-specific-users).

    <Frame>
      <img src="https://mintcdn.com/thread/Jrou2eV7uBaBuALP/images/af4007b4-2022-11-15-23-02-20.png?fit=max&auto=format&n=Jrou2eV7uBaBuALP&q=85&s=ba262480a8b04c21e34d13abc330ae91" alt="Global org-wide default setup policy selected" width="1540" height="348" data-path="images/af4007b4-2022-11-15-23-02-20.png" />
    </Frame>
  </Step>

  <Step title="Add the app under Installed apps">
    In the **Add installed apps** sidebar, search for your Teams app name, click **Add**, then **Add** again at the bottom.

    <Frame>
      <img src="https://mintcdn.com/thread/Zhw8nEn5bwT65_HT/images/edb2d5fd-2022-11-15-23-08-36.png?fit=max&auto=format&n=Zhw8nEn5bwT65_HT&q=85&s=3796304e5fd240d99939d70b174d8603" alt="Add installed apps sidebar with the custom Thread app selected" width="474" height="1035" data-path="images/edb2d5fd-2022-11-15-23-08-36.png" />
    </Frame>
  </Step>

  <Step title="Pin it">
    Under **Pinned apps**, click **+ Add apps** and add the same app.

    <Frame>
      <img src="https://mintcdn.com/thread/Zhw8nEn5bwT65_HT/images/ca69c866-2023-01-17-17-12-10.png?fit=max&auto=format&n=Zhw8nEn5bwT65_HT&q=85&s=4e4e228fb70e87e06930699176af5a60" alt="Add apps button in the Pinned apps section of a Teams setup policy" width="1583" height="592" data-path="images/ca69c866-2023-01-17-17-12-10.png" />
    </Frame>
  </Step>

  <Step title="Order it and save">
    Move the app up or down to control how prominently it appears, then **Save**.

    <Frame>
      <img src="https://mintcdn.com/thread/Zhw8nEn5bwT65_HT/images/e0e49505-2022-11-15-23-11-18.png?fit=max&auto=format&n=Zhw8nEn5bwT65_HT&q=85&s=3d064dd57e31be20695efbece98392d5" alt="Pinned apps list with the Thread app positioned and ready to save" width="671" height="693" data-path="images/e0e49505-2022-11-15-23-11-18.png" />
    </Frame>
  </Step>
</Steps>

<Frame>
  <img src="https://mintcdn.com/thread/Jrou2eV7uBaBuALP/images/8fade510-2022-11-15-23-28-31.png?fit=max&auto=format&n=Jrou2eV7uBaBuALP&q=85&s=1ad0923698380eeccb5edb5fe8b5428e" alt="The deployed Thread service app pinned in a customer's Microsoft Teams sidebar" width="1920" height="1052" data-path="images/8fade510-2022-11-15-23-28-31.png" />
</Frame>

<Note>
  Microsoft's publishing process means the app can take **up to 24 hours** to appear for end users.
  We recommend everyone opens the app's chat tab once before they first need it.
</Note>

## Troubleshooting

<AccordionGroup>
  <Accordion title="The icon isn't appearing correctly after publishing">
    If the admin account you published with isn't a fully licensed user in that Teams tenant — common for IT providers — icons don't render for that account. Licensed end users see your full design, icons included.

    <Frame>
      <img src="https://mintcdn.com/thread/hBAbkSANUQ4VVrOg/images/60f451b6-image.png?fit=max&auto=format&n=hBAbkSANUQ4VVrOg&q=85&s=65057a67c2d6728894b6ef095e7ac0ae" alt="Teams app showing a missing or placeholder icon after publishing" width="2000" height="481" data-path="images/60f451b6-image.png" />
    </Frame>
  </Accordion>

  <Accordion title="“Insufficient privileges to complete the operation”">
    There's likely a previous Thread service app — or a legacy Chatgenie one — already published in that tenant. Remove any existing published apps from **Enterprise applications** in Entra ID, then retry.

    You may need to filter for **all** application types to see them:

    <Frame>
      <img src="https://mintcdn.com/thread/Zhw8nEn5bwT65_HT/images/d5303fa1-image.png?fit=max&auto=format&n=Zhw8nEn5bwT65_HT&q=85&s=0e223d75e40995bd02c3a40203a7ca63" alt="Enterprise applications list filtered to show all application types" width="2000" height="935" data-path="images/d5303fa1-image.png" />
    </Frame>

    The legacy **Chatgenie Bot** causes the same error even when it's been deactivated — uninstall both Thread and Chatgenie Bot to fully clear it.

    <Frame>
      <img src="https://mintcdn.com/thread/Zhw8nEn5bwT65_HT/images/f2e99cbe-image.png?fit=max&auto=format&n=Zhw8nEn5bwT65_HT&q=85&s=dd7d7ed1c8083d63ae5d2a943baecc4d" alt="Legacy Chatgenie Bot enterprise application that must be removed" width="1486" height="570" data-path="images/f2e99cbe-image.png" />
    </Frame>
  </Accordion>

  <Accordion title="“Unexpected error occurred while requesting Microsoft API”">
    The tenant you're deploying to has no Microsoft Teams license, or no Teams at all.

    <Frame>
      <img src="https://mintcdn.com/thread/hBAbkSANUQ4VVrOg/images/5584fa10-image.png?fit=max&auto=format&n=hBAbkSANUQ4VVrOg&q=85&s=344d4976253a12e3cc1ee3ba22b943b9" alt="Thread Teams app authentication or installation failure error message" width="759" height="658" data-path="images/5584fa10-image.png" />
    </Frame>
  </Accordion>
</AccordionGroup>

## Next step

Control who can see it with [setup policies for specific users](/messenger/how-to-roll-out-the-teams-service-app-to-specific-users), or [remove it](/messenger/how-to-uninstall-the-microsoft-teams-thread-service-app) if you need to start over.


## Related topics

- [How to Roll Out the Teams Service App to Specific Users](/messenger/how-to-roll-out-the-teams-service-app-to-specific-users.md)
- [Deploy the Slack Service App to a customer](/messenger/deploy-the-slack-service-app.md)
- [Design a Custom Teams App for Your Customers](/messenger/create-teams-app.md)
