Skip to main content
Before you send to Microsoft Teams, create a Teams app and save its App ID, password, App Type, and Tenant ID on the Microsoft Teams vendor form in SuprSend. For bot delivery you also wrap the bot in a Teams app package that customers install. That’s what makes the message show your name and icon, and what lets you DM people. In the customer’s Teams app use case they create their own copy. You’ll need a Microsoft 365 account that can create apps.
Since 31 July 2025, every new Azure bot is single-tenant. That’s fine — customers still get your bot by installing your Teams app. Existing multi-tenant bots keep working.On the SuprSend vendor form, set App Type to Single tenant for any bot created after that date. Picking Multi tenant still returns an access token, but every send then fails with 401 Authorization has been denied for this request.This is separate from Supported account types in Azure, which controls which directories can install your app. Set that to multiple tenants if customers will install it (see step 4).

Create the Teams app

1. Create the app

Open the Teams Developer Portal → Apps → + New App. Name it something people will recognize in the Teams app list, such as Incident Alerts.
Teams Developer Portal Apps page with New App
New app name dialog
You’ll land on the Basic information form shown below. Fill in the app name, descriptions, company name, and the website, privacy policy, and terms of use URLs. All three URLs must be https:// — an http:// link or a missing one blocks publishing.
Teams app Basic information form with developer name, HTTPS URL fields, and Application (client) ID

Basic information in the Teams Developer Portal. The three URL fields are validated for https://.

2. Create the bot and a client secret

Left panel → App features → Bot. Pick an existing bot or Create a new bot. On the bot page, + New Bot, name it, Add. Leave the messaging endpoint blank unless you also handle inbound activity (for example @mentions). Select Microsoft Teams as the channel.
Create a new bot dialog
Then create a client secret. It is shown only once — save it. That value is Password on the SuprSend vendor form.
Create a client secret on the bot configuration page

3. Attach the bot and set scopes

Select App features → Bot, then pick the bot you just created. Its Application (client) ID is filled in on Basic information and cannot be edited there. You will need that value when you configure the vendor in SuprSend.
Attach the newly created bot; Application client ID is filled in automatically
Under What can your bot do?, choose Only send notifications unless you also handle inbound messages. Add the scopes you’ll use:
  • personal — DMs
  • team — channel posts
  • group chat — group chats
Save.
Bot scopes personal, team, and group chat
Add these application permissions: If you need Entra object IDs from the roster (stable user_ids for DMs), include a resource-specific consent permission such as TeamMember.Read.Group.
Teams app resource-specific permission list
Your app package is ready. To test it, upload it in your own tenant from Teams admin center → Teams apps → Manage apps → Upload new app. How customers install it is covered on Send using your Teams app.

4. Let other directories install the app (SaaS)

Skip this if the bot only ever serves your own Microsoft Entra directory. In the Azure portal, open App registrations → your app → Authentication, and set Supported account types to Multiple Entra ID tenants. The bot still mints its token from your directory. This setting only lets other organizations install the app.
Azure Authentication supported account types set to Multiple Entra ID tenants
Until the app registration has a verified publisher (MPN ID), end users in those organizations cannot consent themselves — an administrator has to approve it.

Alternative: create the bot with the Azure CLI

Prefer scripts over portal clicks? These commands do the Azure side of steps 2–4 — the app registration, its client secret, and the Azure Bot with the Teams channel enabled. They’re useful if you provision infrastructure with scripts, or if you’re setting up a bot inside a customer’s subscription for the customer’s Teams app use case. They do not build the Teams app package (name, scopes, permissions). You still do that in the Developer Portal — steps 1 and 3 above — and attach the bot these commands create.
When it finishes you have the three values the vendor form needs: $APP_ID (Application ID), the secret printed in step 3 (Password), and $HOME_TENANT_ID (Tenant ID), with App Type Single tenant. The CLI created the bot outside the Developer Portal, so it won’t show up in the bot list there. Go back to step 3 in the Teams Developer Portal, open your app → App features → Bot, and enter $APP_ID as the bot ID to attach it to your Teams app.

Add the vendor in SuprSend

Go to Vendors → Microsoft Teams (open vendor settings). Add the Application (client) ID and the client secret (Password field).
SuprSend Microsoft Teams vendor form with App Type and Tenant ID
Find Tenant ID in the Azure portal under Microsoft Entra ID → Overview → Tenant ID, or on the app registration Overview as Directory (tenant) ID.
Microsoft Entra ID Overview showing Directory tenant ID
After you save, SuprSend tries to log in to Microsoft with these credentials and shows the result in the Access Token field on the same form. If the field stays empty, the login failed. The usual cause is a wrong Tenant ID — it must be the directory the bot was created in, not a customer’s. If the field is filled, the login worked. Sends can still fail if App Type doesn’t match the Azure Bot, so send one test message from your use-case page before going further. A 401 Authorization has been denied for this request on that test means App Type is wrong.
Tenant ID on the vendor is the directory your bot is registered in. tenant_id on a user or object $ms_teams channel is the recipient’s organization. They are the same value when the bot only serves its own directory. Once the bot serves several customers, a destination without its own tenant_id falls back to the vendor’s and the send fails with 401.
If an enterprise customer brings their own bot, those credentials go on a tenant-level vendor instead. See Send via your customer’s Teams app.

Next

Send using your Teams app

Customers install your app. DMs on users, channels on objects.

Send via your customer's Teams app

The customer registers the app in their own Entra directory and hands you the credentials.