Kommo + Microsoft Teams: deal notifications and meetings into the lead card
There is no native integration between Kommo and Microsoft Teams. The Kommo Marketplace does not include a Teams connector, and Microsoft has not added Kommo to the Teams integration list. Teams that use Teams as their primary messenger are forced to manually copy CRM updates into chats or switch between interfaces. Teams Calendar meetings do not appear in Kommo cards automatically.
A custom integration addresses two scenarios: notifications about Kommo events are sent to Teams channels, and Teams Calendar meetings are synchronized into deal cards as activities.
Why there is no native integration
Microsoft Teams integrates with CRM systems via Microsoft Power Automate and official connectors. Salesforce, HubSpot, and Dynamics 365 (natively) have ready-made Teams apps. Kommo is not part of the Microsoft ecosystem — too small to be prioritized.
Zapier includes Microsoft Teams as an action (send a message to a channel) and Kommo as a trigger. Basic notifications via Zapier work, but:
— No card formatting (Adaptive Cards) — messages appear as plain text
— No two-way synchronization (from Teams into Kommo)
— Microsoft Graph API for meetings is not accessible via Zapier
— No control over which channel and who receives a notification based on the event type
Scenario 1: Kommo notifications -> Teams
Events worth notifying about:
— Deal stage change (especially critical ones: “Contract signed”, “Payment received”, “Deal lost”)
— New inbound lead above a certain value
— Overdue task (manager missed the deadline)
— Deal assigned to a new responsible manager
Mechanism:
Kommo Digital Pipeline -> webhook -> backend -> Microsoft Graph API
POST https://graph.microsoft.com/v1.0/teams/{team_id}/channels/{channel_id}/messages
Authorization: Bearer {access_token}
{
"body": {
"contentType": "html",
"content": "<b>Deal #{deal_id}</b> moved to stage <b>{stage_name}</b>..."
}
}
For formatted cards (Adaptive Cards) use the Teams Incoming Webhook connector — simpler to set up, no OAuth required:
POST {teams_incoming_webhook_url}
{
"type": "message",
"attachments": [{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"type": "AdaptiveCard",
"body": [
{ "type": "TextBlock", "text": "New deal: {deal_name}", "weight": "bolder" },
{ "type": "FactSet", "facts": [
{ "title": "Amount", "value": "{amount} USD" },
{ "title": "Stage", "value": "{stage_name}" },
{ "title": "Manager", "value": "{manager_name}" }
]}
],
"actions": [{
"type": "Action.OpenUrl",
"title": "Open in Kommo",
"url": "https://yourcompany.kommo.com/leads/detail/{deal_id}"
}]
}
}]
}
An Adaptive Card with an “Open in Kommo” button — the manager sees a formatted notification and opens the deal with one click.
Routing by channel:
— General notifications (new leads) -> channel #new-leads
— Large deals (over $10,000) -> channel #vip-clients
— Lost deals -> channel #analytics
— Overdue tasks -> direct message to the responsible manager
Scenario 2: Teams meetings -> Kommo cards
When a manager holds a Teams Meeting with a client, it needs to be recorded in Kommo. Without integration — a manual note after the call.
Mechanism via Microsoft Graph API:
GET https://graph.microsoft.com/v1.0/me/calendarView
?startDateTime={start}&endDateTime={end}
&$filter=isOnlineMeeting eq true
The backend periodically (every 15–30 minutes) or on trigger checks completed Teams Meetings:
— Compares meeting participants (email) with Kommo contacts
— Finds the related deal
— Creates a note in Kommo: meeting date, participants, duration
POST /api/v4/leads/{id}/notes
{
"note_type": "common",
"params": {
"text": "[Teams Meeting] {date}\nParticipants: {participants}\nDuration: {duration} min"
}
}
Teams Premium and transcriptions: if the company uses Microsoft Teams Premium with Copilot, meeting transcriptions are available via GET /communications/callRecords/{id}/sessions. Meeting summaries can be automatically added as a note in Kommo.
Microsoft Graph API authentication
Reading Calendar and sending messages in Teams requires OAuth 2.0 via Microsoft Entra ID (Azure AD):
- Register the application in Azure Portal -> App registrations
- Permissions:
ChannelMessage.Send,Calendars.Read,OnlineMeetings.Read - Client Credentials flow (for a server application without user interaction):
POST https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token grant_type=client_credentials client_id={app_id}&client_secret={secret} scope=https://graph.microsoft.com/.default - Token is refreshed automatically — lifetime is 1 hour, the backend refreshes it in advance
The Incoming Webhook for Adaptive Cards does not require OAuth — the URL is generated in the Teams channel settings and acts as a self-signed token.
Real-world case
In a project for an IT company (Microsoft 365 + Kommo, 15 managers):
— The team lived in Teams and rarely opened the CRM
— After integration: stage change notifications arrive in Teams -> managers click and go straight to the deal
— Client meetings are recorded in Kommo automatically — no manual notes
— Managers noted: “we can now see what’s happening in the pipeline without opening Kommo every hour”
After one month: average response time to a new lead dropped from 4 hours to 40 minutes (the team sees the notification in Teams immediately).
Comparison with Kommo + Zoom integration
If the company uses Zoom for meetings — Kommo and Zoom integration works in a similar way: meetings are created from the deal card, recordings come back automatically. The Teams integration differs in that Teams is also the corporate messenger — deal notifications go to the same place where the team communicates.
If the team’s messenger is Slack rather than Teams — the scheme is analogous, but via the Slack API (Incoming Webhooks + Block Kit instead of Adaptive Cards).
Who this is relevant for
Kommo + Teams integration makes sense if:
— The team actively uses Microsoft 365 (Teams as primary messenger)
— Managers hold client meetings via Teams Meetings
— Instant notifications about CRM events in the interface the team works in are important
— Routing different events to different Teams channels is required
Frequently asked questions
Can a Teams Meeting be created directly from a Kommo card?
Yes — via a custom widget in Kommo or a button in the Digital Pipeline. The backend creates an online meeting via POST https://graph.microsoft.com/v1.0/me/onlineMeetings, saves the link in the deal card, and sends an invitation to the client. This is the equivalent of Kommo and Zoom integration, but through Teams.
Teams Incoming Webhook vs Microsoft Graph API — which is better?
For notifications (Kommo -> Teams) — Incoming Webhook is simpler: no OAuth needed, just a URL. For two-way sync (reading Calendar, creating meetings, direct messages) — Graph API is required. Both approaches can be combined: Incoming Webhook for notifications, Graph API for meetings.
Do notifications go to the whole team or to a specific manager?
Both options are available. Via Incoming Webhook — only to a channel (all channel members). Via Graph API — a Direct Message can be sent to a specific Teams user by email or user ID. In a custom integration: critical events -> channel, personal ones (overdue task, deal assignment) -> direct message.
Is Microsoft Teams Premium required for meeting transcriptions?
Yes. Transcriptions and Copilot summaries are only available in Teams Premium ($7/user/month additional). Basic meeting metadata (participants, duration, recording) is available via Graph API on a standard Microsoft 365 Business plan.
Summary
- No native Kommo + Teams integration; Zapier provides basic notifications without formatting
- Custom integration: Adaptive Cards with an Open in Kommo button + sync of completed Teams Meetings
- Incoming Webhook — for notifications without OAuth; Graph API — for meetings and direct messages
- Channel routing: different event types -> different Teams channels
- Typical development timeline: 2–3 weeks
If your team works in Microsoft 365 and manages deals in Kommo — describe which events need to be visible in Teams. Exceltic.dev will assess the complexity and propose a concrete scheme.