Post to a Microsoft Teams channel from any Windmill script, flow or app — and run flows from a /windmill command typed in Teams.
Set up in 3 steps
Create an incoming webhook
In Teams, open the channel's connectors and add an incoming webhook. Copy the URL it gives you — it posts to that channel and no other.
Add the resource in Windmill
Open Resources, add a resource of type ms_teams_webhook, and paste the URL.
Run your first script
Fork a script below, or set one as a flow's failure step to get alerts in the channel.
Scripts
Building blocks, if none of the projects above fit. Fork one, run it, or call it as a step inside your own flow.
Trigger flows from Microsoft Teams
Microsoft Teams is not only a destination. These inbound paths are supported today.
Teams commands
Type /windmill in Teams and it runs a script, with what you typed as its inputs. A workspace admin connects Teams once from Workspace settings, under the Slack / Teams tab.
Resource types
The credential shapes the scripts on this page expect — pick the one your script asks for.
azure_bot
View raw schema →| Field | Type | Required | What it is |
|---|---|---|---|
| app_id | string | Yes | Microsoft App ID (Application (client) ID of the Azure Bot's App Registration) |
| app_password | string | Yes | Client secret value for the App Registration |
| tenant_id | string | No | Azure AD tenant ID. Set only when the Azure Bot is configured as Single Tenant; leave empty for Multi Tenant bots so the multi-tenant Bot Framework token endpoint is used. |
ms_teams_webhook
View raw schema →| Field | Type | Required | What it is |
|---|---|---|---|
| webhook_url | string | Yes | See https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook?tabs=dotnet for detais on how to create a webhook |
Questions
Webhook or bot?
A webhook only posts to the one channel it was created for, and needs no admin. The azure_bot resource — app id, password and tenant — is for a registered bot that acts across the tenant.
Who can set up the /windmill command?
A workspace admin, from Workspace settings, Slack / Teams tab. Several Windmill workspaces can share one Teams bot, but a given Team sends its commands to only one of them.
Is my webhook URL stored on the hub?
Never. It lives only in your own Windmill workspace, encrypted at rest — and anyone holding that URL can post to the channel.