diff --git a/docs/cloud/integrations/alerts/ms-teams-app.mdx b/docs/cloud/integrations/alerts/ms-teams-app.mdx
new file mode 100644
index 000000000..8d5bbf60c
--- /dev/null
+++ b/docs/cloud/integrations/alerts/ms-teams-app.mdx
@@ -0,0 +1,114 @@
+---
+title: "Microsoft Teams (App)"
+---
+
+Elementary's Microsoft Teams app sends alerts when data issues happen, as
+[Adaptive Cards](https://adaptivecards.io/) with rich context. Unlike the
+[webhook integration](/cloud/integrations/alerts/ms-teams), the app is installed
+once per team — no per-channel webhooks to create — and Elementary posts to any
+standard channel in that team.
+
+You can create [alert rules](/features/alerts-and-incidents/alert-rules) to
+distribute alerts to different channels and destinations.
+
+
+
+
+
+## Connecting the Microsoft Teams app
+
+
+
+ **In Microsoft Teams**, open the app store and search for **Elementary**.
+ Install the app and add it to the team where you want to receive alerts.
+
+
+
+ Once the bot is installed in a team, you should see this card.
+ Click **Connect to Elementary** to link this workspace to your
+ Elementary account.
+
+
+
+
+
+ This opens **Elementary** and connects the workspace automatically.
+ Connecting requires an Elementary user with the **Edit integrations**
+ permission — usually a user with the **Admin** role.
+
+ Once complete, you should see both:
+
+ **In Elementary** — a dialog confirming the workspace is connected:
+
+
+
+
+
+ **In Microsoft Teams** — a confirmation card in the channel:
+
+
+
+
+
+
+ You can regenerate the connection link any time by typing
+ **`@Elementary connect`** in the channel.
+
+
+
+
+ **In Elementary**, pick a **Default channel** in the connected view to start
+ receiving alerts right away. Use
+ [alert rules](/features/alerts-and-incidents/alert-rules) to control which
+ alerts go to which channels.
+
+
+ Setting a default channel automatically adds a default
+ [alert rule](/features/alerts-and-incidents/alert-rules) that sends all
+ failures to that channel. Alerts on warnings are not sent by default — to
+ change this, go to the `Alert Rules` page.
+
+
+
+
+
+## Bot commands
+
+**In Microsoft Teams**, mention the bot in any channel it's installed in:
+
+- **`@Elementary help`** — what Elementary can do and how to get started.
+
+
+
+
+
+- **`@Elementary connect`** — a fresh link to connect the team to your Elementary account.
+
+
+
+
+
+## Supported channels
+
+The app posts to **standard channels** in the team it's installed in. Private
+and shared channels are not supported.
+
+## Disconnecting
+
+You can disconnect from either side:
+
+- **From Elementary** — go to `Environments` → `Connect messaging app`, open the
+ **Microsoft Teams App** menu, and choose **Disconnect**. This unlinks the
+ workspace from your Elementary account and stops alerts. The app stays
+ installed in Teams — remove it there too if you want to fully uninstall.
+- **In Microsoft Teams** — remove the Elementary app from the team
+ (`Manage team` → `Apps` → remove **Elementary**). This uninstalls the app, and
+ the integration then shows as disconnected **in Elementary**.
+
+Either way, you can reconnect later from the welcome message or by typing
+**`@Elementary connect`** in the channel.
+
+
+ Each Teams team can be connected to a single Elementary account. If a team is
+ already connected to a different account, connecting it again is rejected.
+
diff --git a/docs/cloud/integrations/alerts/ms-teams.mdx b/docs/cloud/integrations/alerts/ms-teams.mdx
index d7ea82311..2fd1061ca 100644
--- a/docs/cloud/integrations/alerts/ms-teams.mdx
+++ b/docs/cloud/integrations/alerts/ms-teams.mdx
@@ -1,8 +1,15 @@
---
-title: "Microsoft Teams"
+title: "Microsoft Teams (Legacy webhook)"
---
-Elementary's Microsoft Teams integration enables sending alerts when data issues happen.
+
+ The webhook integration is deprecated. For new setups, use the
+ [Microsoft Teams App](/cloud/integrations/alerts/ms-teams-app) instead —
+ it's easier to set up, requires no per-channel webhooks, and supports
+ richer alert cards.
+
+
+Elementary's Microsoft Teams webhook integration enables sending alerts when data issues happen.
The alerts are sent using Adaptive Cards format, which provides rich formatting and interactive capabilities.
The alerts include rich context, and you can create [alert rules](/features/alerts-and-incidents/alert-rules) to distribute alerts to different channels and destinations.
diff --git a/docs/images/teams/alert-rule-teams.png b/docs/images/teams/alert-rule-teams.png
new file mode 100644
index 000000000..18495dc6d
Binary files /dev/null and b/docs/images/teams/alert-rule-teams.png differ
diff --git a/docs/images/teams/connect-command.png b/docs/images/teams/connect-command.png
new file mode 100644
index 000000000..7f3239169
Binary files /dev/null and b/docs/images/teams/connect-command.png differ
diff --git a/docs/images/teams/connected-dialog.png b/docs/images/teams/connected-dialog.png
new file mode 100644
index 000000000..4b8c46d95
Binary files /dev/null and b/docs/images/teams/connected-dialog.png differ
diff --git a/docs/images/teams/connecting-dialog.png b/docs/images/teams/connecting-dialog.png
new file mode 100644
index 000000000..f5f1667d7
Binary files /dev/null and b/docs/images/teams/connecting-dialog.png differ
diff --git a/docs/images/teams/help-card.png b/docs/images/teams/help-card.png
new file mode 100644
index 000000000..5b0bdb97a
Binary files /dev/null and b/docs/images/teams/help-card.png differ
diff --git a/docs/images/teams/hero-alert.png b/docs/images/teams/hero-alert.png
new file mode 100644
index 000000000..2098ec8f4
Binary files /dev/null and b/docs/images/teams/hero-alert.png differ
diff --git a/docs/images/teams/messaging-connected.png b/docs/images/teams/messaging-connected.png
new file mode 100644
index 000000000..3834952d0
Binary files /dev/null and b/docs/images/teams/messaging-connected.png differ
diff --git a/docs/images/teams/messaging-picker.png b/docs/images/teams/messaging-picker.png
new file mode 100644
index 000000000..1bd0e7235
Binary files /dev/null and b/docs/images/teams/messaging-picker.png differ
diff --git a/docs/images/teams/teams-cards-after-connection.png b/docs/images/teams/teams-cards-after-connection.png
new file mode 100644
index 000000000..322b063f3
Binary files /dev/null and b/docs/images/teams/teams-cards-after-connection.png differ
diff --git a/docs/images/teams/welcome-and-connected-cards.png b/docs/images/teams/welcome-and-connected-cards.png
new file mode 100644
index 000000000..77baaf675
Binary files /dev/null and b/docs/images/teams/welcome-and-connected-cards.png differ
diff --git a/docs/images/teams/welcome-card.png b/docs/images/teams/welcome-card.png
new file mode 100644
index 000000000..c69bc83a7
Binary files /dev/null and b/docs/images/teams/welcome-card.png differ
diff --git a/docs/mint.json b/docs/mint.json
index 0e231db80..5be35d8d8 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -268,6 +268,7 @@
"group": "Alerts & Incidents",
"pages": [
"cloud/integrations/alerts/slack",
+ "cloud/integrations/alerts/ms-teams-app",
"cloud/integrations/alerts/ms-teams",
"cloud/integrations/alerts/pagerduty",
"cloud/integrations/alerts/opsgenie",