Choose a use case
Let’s say you are a SaaS product, and the companies using it want activity from your product to show up in their Microsoft Teams.Post to a channel with a webhook
The fastest path. Your customer pastes a Workflows webhook URL into your product, and every notification lands in that one channel, posted by Microsoft’s Workflows app. You don’t install your app in their tenant, and you can’t DM anyone as your product.Example: a CI product like GitHub Actions or CircleCI. A customer connects their
payments-api repository to #deploys. Every build result posts there, and nowhere else.Send using your Teams app
Your customer installs your Teams app once. After that you can DM individual people and post in any channel they choose, and every message shows your bot’s name and icon.Example: an incident tool like PagerDuty or Opsgenie. When
api-prod goes down, the on-call engineer gets a DM, and #incidents gets the same alert so the rest of the team sees it.Send via your customer's Teams app
The same DM and channel experience, but the bot is registered in your customer’s Entra directory and they hand you its credentials. Pick this when their security team won’t approve a third-party bot in their tenant.Example: a hospital network that only allows apps registered in its own tenant. Every message arrives from their internal app, not from yours.
Two ways to deliver
Incoming webhook. You still fill the Microsoft Teams vendor with App ID, password, App Type, and Tenant ID — same form as a bot send. The destination is a Workflows URL on the recipient. SuprSend POSTs to that URL; Microsoft’s Workflows app (Power Automate) posts in the channel, usually as the flow bot or on behalf of the person who created the flow. The message will not appear as your product’s bot, and you cannot DM someone this way. Microsoft retired Office 365 connectors; create the URL with Workflows. Azure bot + Teams app. You register a bot, wrap it in a Teams app package, and store the bot credentials on the Microsoft Teams vendor in SuprSend. The channel or person to notify is stored as an$ms_teams channel on a user or an object in SuprSend. Put DMs on users and map Teams channels to objects.
How bot delivery is modeled
The channel or person to notify is stored as an$ms_teams channel on a user or an object in SuprSend. When you trigger a workflow with that user or object as the recipient, SuprSend reads the $ms_teams value and delivers there.
Where to store it
- DMs go on users. Store the person’s Teams identity as
$ms_teamson their SuprSend user. If the same person uses your product under more than one customer org, store it on their per-tenant profile so an alert from one org doesn’t DM the identity they use in another. - Channels go on objects. A channel is not a person, so don’t attach it to a user. Model the thing the channel is about (a repository, a service, a project) as a SuprSend object and store
$ms_teamson it. Whenapi-prodgoes down, you trigger with theapi-prodobject as the recipient and the post lands in the channel mapped to it.
$ms_teams channel
An entry holds either a
conversation_id or a user_id. A user or object can carry several entries if it should be notified in more than one place.
When to include tenant_id in the $ms_teams channel
If you leave tenant_id out, SuprSend uses the home tenant ID saved in the Microsoft Teams vendor credentials. That’s the right default when one SuprSend workspace serves one customer, or when every user and object in the workspace belongs to the same Entra directory as your bot. You can skip the field entirely in that case.
Include tenant_id when a single workspace notifies people or channels across several Entra directories — for example a SaaS product where each customer has its own Microsoft 365 tenant and has installed your Teams app. The value tells SuprSend which directory to deliver into; without it, the send goes to your bot’s home directory instead of the customer’s.
The SuprSend tenant on the workflow trigger is a different thing. Its tenant_id is your own slug for the customer account (customer-a), not the Entra ID. It selects that customer’s branding, preferences, and tenant vendor, and SuprSend does not read the Entra directory from it.
Next
Create a Teams app
Register the bot, build the app package, and add the vendor in SuprSend. Start here.
Post with a webhook
One channel, stored on an object. Workflows posts the message.