Putting OpenClaw into Microsoft Teams so it becomes the company’s in-house AI employee? The fastest way is the ZenClaw dashboard’s Microsoft Teams connection page. MixerBox AI’s managed service deploys in 9 seconds. The Messaging endpoint URL is auto-generated, and the *.zenclaw.bot subdomain plus certificates are set up for you. All you do is create an Azure Bot and paste three credentials back. This post covers both paths: ZenClaw’s Microsoft Teams connection page (click) and the full self-host Azure walkthrough.
Teams integration architecture: why it’s trickier than LINE or Telegram
Microsoft Teams doesn’t use a webhook-token model. It routes through the Azure Bot service plus Microsoft Entra ID (formerly Azure AD) for identity. That’s by design for enterprise compliance and SSO. Pieces involved:
- Azure Bot — an Azure resource that relays messages between Teams and your server
- Messaging endpoint — your server’s public HTTPS URL (
https://your-domain/api/messages) - App ID — the application identifier in Microsoft Entra ID
- Client Secret — password used to verify message sources
- Tenant ID — your company’s Microsoft 365 tenant ID
- Teams app manifest — lets users find and install the bot inside Teams
Official docs: docs.microsoft.com/en-us/azure/bot-service. Compared to LINE’s two values (Channel Secret + Access Token), Teams needs three IDs plus a secret, so the flow is longer.
Recommended: ZenClaw’s Microsoft Teams connection page (15 minutes)
ZenClaw handles the Messaging endpoint, domain, and HTTPS certs for you. All you do is create an Azure Bot and paste the three IDs back. Flow:
- Sign in at zenclaw.ai
- Click “Hire AI Employees Now” → dashboard → “Add New OpenClaw Installation” → wait 9 seconds
- In Channels, click Microsoft Teams
- Copy the Messaging endpoint URL at the top (ZenClaw auto-generates
https://*.zenclaw.bot/api/messages) - Go to portal.azure.com and create an Azure Bot (Type of App: Single Tenant, Pricing tier: Free F0)
- Bot → Configuration → paste the Messaging endpoint → Apply
- Copy the App ID (Microsoft App ID field)
- Create a Client Secret: click Manage Password, or Microsoft Entra ID → App registrations → that app → Certificates & secrets → New client secret → copy Value
- Grab the Tenant ID: Microsoft Entra ID → Overview
- Back in ZenClaw’s Microsoft Teams connection page, paste App ID / Client Secret / Tenant ID and click connect
Done. Publish the Teams app next — ZenClaw can generate the manifest for you, or you can sideload via Teams admin center.
Self-hosted OpenClaw on Teams: the full 7 steps
This assumes you already have OpenClaw running (see the complete beginner’s guide), a public HTTPS domain, and an Azure subscription. Full walkthrough:
Step 1: Create an Azure Bot
portal.azure.com → search “Azure Bot” → Create:
- Bot handle: pick a unique name
- Subscription / Resource group: pick yours
- Pricing tier: Free (F0)
- Data residency: Global
- Type of App: Single Tenant (recommended, simplest, easiest to certify)
- Creation type: Create new Microsoft App ID
Review + Create → wait for the resource.
Step 2: Set the Messaging endpoint
Azure Bot → Configuration:
- Messaging endpoint:
https://your-domain/api/messages- Must be HTTPS
- Cert must be valid (Let’s Encrypt or a real CA)
- OpenClaw must already serve that path publicly
- Apply
Step 3: Grab the App ID
Same Configuration page: Microsoft App ID is on that row. Copy and store it — it maps to an Entra ID app registration.
Step 4: Create a Client Secret
Two paths:
Path A: Configuration page → Manage Password (jumps into Entra ID)
Path B: left panel Microsoft Entra ID → App registrations → find your app → Certificates & secrets → New client secret
- Fill in description
- Pick expiry (6 months or longer recommended; you’ll need to rotate)
- Copy the Value immediately (shown once, gone on reload)
Step 5: Grab the Tenant ID
Microsoft Entra ID → Overview → Tenant ID (GUID). Copy and store.
Step 6: Configure OpenClaw
Edit ~/.openclaw/openclaw.json or use the dashboard. Under channels.msteams:
{
"channels": {
"msteams": {
"appId": "your App ID",
"appPassword": "your Client Secret",
"tenantId": "your Tenant ID"
}
}
}
Restart the gateway (default port 18789). Official CLI config: docs.openclaw.ai/cli/config.
Step 7: Sideload/publish the Teams app
Build the Teams app manifest (JSON with App ID, bot info, icons). Zip it. Then:
- Teams admin center → Manage apps → Upload new app (org-wide)
- Or Teams client → Apps → Upload a custom app (personal / team scope)
Open a 1:1 chat with the bot, send a message, and check OpenClaw’s gateway log.
Common gotchas
The usual blockers: Messaging endpoint isn’t HTTPS or cert expired, Client Secret Value wasn’t copied, wrong Single vs Multi Tenant choice, or Teams app didn’t sideload correctly. Walkthrough:
- Bot is live but messages don’t land → Is the Messaging endpoint reachable?
curlit - Cert invalid → Don’t forget Let’s Encrypt auto-renew
- Client Secret auth fails → Value was copied wrong or expired — create a new one
- Wrong Tenant ID → Grab it again from Entra ID Overview
- Can’t find the bot in Teams → Sideload failed — check Teams admin center error messages
~/.openclaw/loses settings on restart → Docker volume isn’t mounted, see Docker volume settings lost fix
Also keep in mind: corporate network policy might block Azure or Teams APIs — see OpenClaw security hardening 10-item checklist.
ZenClaw vs self-host: time cost
ZenClaw doesn’t save you the Azure steps (you still do those), but it does save you the Messaging endpoint server, domain, HTTPS cert, and ongoing OpenClaw ops. Side-by-side:
| Area | Self-host | ZenClaw Microsoft Teams connection page |
|---|---|---|
| Azure Bot creation | Required | Required (same Azure steps) |
| Server + OpenClaw | Your infra | 9-second deploy |
| Messaging endpoint URL | Register domain + TLS | Automatic *.zenclaw.bot |
| HTTPS certs | Maintain yourself | Auto-renewed |
| Upgrades / CVEs | Track yourself | Automatic |
| First deploy time | Days to weeks | 15-20 minutes |
The choice is yours — but if the goal is “let the company use an AI employee in Teams”, ZenClaw is clearly the simpler path.