Microsoft Teams Integration
Last updated: May 11, 2026
GovMatrixIQ integrates with Microsoft Teams in two directions:
- Outbound (Chatter → Teams) — Chatter messages forward to a Teams channel via a per-Chatter-channel webhook URL.
- Inbound (Teams bot commands) — Teams users issue
pipeline/search/draft/connectcommands to the bot in a DM or channel.
Inbound channel-message bridging (every Teams message into Chatter) is not yet supported — coming in a future release.
Part 1 — Outbound (Chatter → Teams)
Step 1. Create a Teams Incoming Webhook
Each Chatter channel binds to its own Teams webhook URL. Teams webhooks are bound 1:1 to a Teams channel at creation, so you need one webhook per Teams channel you want bridged.
Option A — Legacy Incoming Webhook connector:
- In Teams, navigate to the target Teams channel.
- Click … next to the channel name → Connectors.
- Find Incoming Webhook → Configure.
- Name it
GovMatrixIQ→ Create. - Copy the URL (
https://xxx.webhook.office.com/webhookb2/…).
Option B — Workflow connector (newer):
- In Teams, in the channel: … → Workflows → Post to a channel when a webhook request is received.
- Pick the team + channel → Create flow.
- Copy the generated URL.
Step 2. Bind the webhook to a Chatter channel
- In GovMatrixIQ, open Chatter → pick the Chatter channel that should forward to this Teams channel.
- In the channel header, click the Bind Teams ch pill → a modal opens.
- Paste the webhook URL → Save. The pill switches to
→ Teams ch.
Per-channel binding means different Chatter channels can route to different Teams channels — one Chatter channel cannot share a webhook with another.
Step 3. Enable forwarding
- In the channel header, click the Teams off pill → confirm the "Not E2E" warning.
- Pill flips to Teams ON.
- Post in Chatter → the message renders as an Adaptive Card in the bound Teams channel.
Part 2 — Inbound (Teams Bot Commands)
The Teams bot supports the same command surface as the Slack bot, accessible via 1:1 DM or @mention in a team.
Step 1. Install the bot
- In Teams: Apps → search "GovMatrixIQ" (when published to the Teams app store), or sideload via Apps → Manage your apps → Upload an app.
- Open a 1:1 chat with the bot or add it to a team.
Step 2. Connect your Teams user
- In the Teams DM, type
connect. - Click the Connect Account button on the card.
- Browser opens GovMatrixIQ → sign in → connection completes automatically.
Step 3. Use commands
| Command | Description |
|---|---|
pipeline | Show pipeline summary |
search <keyword> | Search SAM.gov opportunities |
draft co <topic> | AI-generated CO email |
draft capability <topic> | AI-generated capability statement |
alerts | Configure notifications |
status | Check connection state |
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| "Teams ON" but no Teams messages | Channel not bound, or bound URL is wrong/revoked | Re-bind the Teams webhook via Bind Teams ch in Chatter channel header. |
| Bot says "Connect Account" repeatedly | Azure Bot Framework client secret expired | Admin: rotate the secret in Azure Portal → App Registrations → Certificates & secrets, then update Render env GMIQ_APP_PASSWORD. |
AADSTS7000215: Invalid client secret in bot logs |
Secret ID pasted instead of Secret Value, or value expired | Copy the Value column (one-time view) when generating, not the Secret ID. |
Security notes
- Webhook URLs are credentials. Rotate immediately if leaked.
- The Teams bot uses Microsoft Bot Framework OAuth. Each user must connect their own account; cross-tenant access is impossible.
- Per-channel webhook binding means revoking one Chatter channel's bridge doesn't affect others.
Need help?
Email [email protected] or open a ticket from Settings → Support.