Kommo + Monday.com: автоматическое создание проектов из выигранных сделок
Monday.com использует GraphQL API — не REST. Это важно для архитектуры интеграции: все запросы идут на один endpoint https://api.monday.com/v2, тело — JSON с полем query. Связка с Kommo автоматизирует операционный момент: сделка Won -> item в нужном board с именем клиента, суммой и дедлайном -> по мере выполнения статус возвращается в Kommo.
Kommo + Monday.com vs Kommo + Asana: когда что выбирать
Оба инструмента закрывают задачу «создать проект из CRM-сделки». Выбор зависит от того, как команда работает с задачами:
| Параметр | Monday.com | Asana |
|—|—|—|—|
| API | GraphQL | REST |
| Шаблоны | Board Templates | Project Templates |
| Визуализация | Board / Timeline / Map | Board / List / Timeline |
| Экосистема | 200+ интеграций | 300+ интеграций |
| Цена (Basic) | $9/мес/польз. | $10.99/мес/польз. |
Monday выигрывает по гибкости board-структуры и визуализации. Для команд, которые уже используют Monday — выбор очевиден. Аналогичная интеграция с Asana и Kommo реализована через REST API.
Что синхронизируется
Kommo -> Monday.com:
— Название сделки -> item name
— Имя и email контакта -> текстовые колонки
— Сумма сделки -> колонка типа Numbers
— Дедлайн из кастомного поля -> колонка типа Date
— ID сделки Kommo -> колонка для обратной трассировки
— Ответственный менеджер -> колонка People (по маппингу)
Monday.com -> Kommo:
— Смена статуса item на «Delivered» / «Done» -> обновление этапа в Kommo
— Дата завершения -> Note на сделке
Архитектура
Kommo Webhook: сделка Won
↓ Backend
1. GET /api/v4/leads/{id} + contacts
-> имя клиента, email, сумма, дедлайн, менеджер
2. Monday.com GraphQL: create_item mutation
-> board_id + item_name + column_values
-> получить item_id
3. Kommo: PATCH /leads/{id}
-> обновить поле monday_item_id
Monday.com Webhook: column_values_updated (статус -> Done)
↓ Backend
1. Извлечь item_id из payload
2. Monday.com GraphQL: items query
-> найти колонку с kommo_deal_id
3. Kommo: PATCH /leads/{deal_id}
-> этап -> 'Доставлено'
4. Kommo: POST /notes
-> дата завершения + ссылка на item
Monday.com GraphQL API: ключевые запросы
Monday.com API работает через POST на https://api.monday.com/v2. Аутентификация — API Token в заголовке Authorization.
Создание item с данными сделки:
import requests
import json
MONDAY_TOKEN = 'your_api_token'
BOARD_ID = 1234567890 # ID board'а в Monday.com
headers = {
'Authorization': MONDAY_TOKEN,
'Content-Type': 'application/json'
}
def create_monday_item(deal_name, client_email, amount, deadline_str, kommo_deal_id):
# column_values - JSON-строка, ключи - ID колонок
column_values = {
'text_email': client_email, # колонка типа Text
'numbers_amount': amount, # колонка типа Numbers
'date_deadline': {'date': deadline_str}, # 'YYYY-MM-DD'
'text_deal_id': str(kommo_deal_id), # для обратной трассировки
'status': {'label': 'In Progress'} # статус
}
query = '''
mutation ($boardId: ID!, $itemName: String!, $columnValues: JSON!) {
create_item(
board_id: $boardId,
item_name: $itemName,
column_values: $columnValues
) {
id
name
}
}
'''
variables = {
'boardId': BOARD_ID,
'itemName': deal_name,
'columnValues': json.dumps(column_values)
}
response = requests.post(
'https://api.monday.com/v2',
headers=headers,
json={'query': query, 'variables': variables}
)
data = response.json()
return data['data']['create_item']['id']
Получение ID колонок board’а:
def get_board_columns(board_id):
query = '''
query ($boardId: [ID!]) {
boards(ids: $boardId) {
columns {
id
title
type
}
}
}
'''
response = requests.post(
'https://api.monday.com/v2',
headers=headers,
json={'query': query, 'variables': {'boardId': [board_id]}}
)
return response.json()['data']['boards'][0]['columns']
Регистрация webhook в Monday.com:
def create_monday_webhook(board_id, callback_url):
mutation = '''
mutation ($boardId: ID!, $url: String!, $event: WebhookEventType!) {
create_webhook(
board_id: $boardId,
url: $url,
event: $event
) {
id
board_id
}
}
'''
requests.post(
'https://api.monday.com/v2',
headers=headers,
json={
'query': mutation,
'variables': {
'boardId': board_id,
'url': callback_url,
'event': 'change_status_column_value' # или change_column_value
}
}
)
Маппинг менеджера Kommo -> People в Monday.com
Монday.com People-колонка принимает ID пользователей Monday. Нужен маппинг:
# Маппинг Kommo user_id -> Monday.com user_id
OWNER_MAP = {
12345: 67890123, # Kommo ID -> Monday user ID
12346: 67890124,
}
def get_monday_user_id(kommo_owner_id):
return OWNER_MAP.get(kommo_owner_id)
# В column_values:
'people_owner': {'personsAndTeams': [{'id': monday_user_id, 'kind': 'person'}]}
ID пользователей Monday.com получаются через запрос query { users { id name email } }.
Создание из шаблона (Board Template)
Для сложных проектов вместо создания item’а лучше создавать целый board из шаблона:
def create_board_from_template(deal_name, template_id, folder_id=None):
mutation = '''
mutation ($name: String!, $templateId: ID!) {
duplicate_board(
board_id: $templateId,
duplicate_type: duplicate_board_with_pulses_and_updates,
board_name: $name
) {
board {
id
name
}
}
}
'''
response = requests.post(
'https://api.monday.com/v2',
headers=headers,
json={'query': mutation, 'variables': {'name': deal_name, 'templateId': template_id}}
)
return response.json()['data']['duplicate_board']['board']['id']
Этот подход используют когда каждый клиент получает отдельный board — например, для агентств с индивидуальными проектами.
Реальный кейс
Маркетинговое агентство (EU-рынок, 10–15 клиентов одновременно, команда 12 человек):
- До: менеджер по продажам выигрывал сделку в Kommo, отправлял письмо head of delivery с данными клиента. Тот вручную создавал board в Monday.com. Среднее время от Won до старта проекта — 2 дня.
- После: Won в Kommo -> через минуту в Monday.com готов board из шаблона с именем клиента, суммой и дедлайном -> ссылка на board появляется в карточке Kommo -> delivery команда начинает работу сразу.
- Дополнительный эффект: руководитель видит все активные клиентские проекты в одном Monday.com Portfolio view — без дополнительных статус-апдейтов от менеджеров.
Для кого актуально
- Monday.com используется для управления проектами, Kommo — для продаж
- Есть разрыв между закрытием сделки и стартом проекта — данные передаются вручную
- Команда delivery и команда продаж работают в разных инструментах
- Объём: 5+ новых проектов в месяц
- Нужна трассировка: в каком проекте что происходит — видно в Kommo без перехода в Monday.com
Часто задаваемые вопросы
Monday.com GraphQL — сложнее ли чем REST API?
GraphQL отличается структурой запросов, но не сложнее. Один endpoint, тело — строка с query/mutation. Основная сложность — правильно сформировать column_values JSON: ключи должны совпадать с ID колонок конкретного board’а. ID колонок получаются отдельным запросом к API или из URL в интерфейсе Monday.com.
Как узнать ID колонок без программирования?
В Monday.com: открыть board -> любой item -> через три точки на колонке -> Copy column ID. Или через GraphQL-запрос boards { columns { id title } } — возвращает все колонки board’а с ID и типами.
Нужен ли специальный API-план Monday.com?
API доступен на всех платных тарифах (Basic и выше). На Basic-плане — 100,000 запросов/мин. Для типового объёма интеграции с Kommo этого более чем достаточно. Webhooks доступны на Standard и выше.
Можно ли создавать подзадачи (subitems) автоматически?
Да. Monday.com API поддерживает create_subitem mutation: create_subitem(parent_item_id: ID!, item_name: String!, column_values: JSON!). Используется когда из сделки нужно создать структуру: item-проект с subitems-задачами (дизайн, разработка, QA, запуск).
Как обработать отмену проекта (сделка перешла в Lost)?
Через Kommo Webhook на событие смены этапа: если новый этап — «Потеряна» -> обновить статус item’а в Monday.com через change_column_value mutation. Или заархивировать board если проект так и не начался.
Итого
- Monday.com API — GraphQL, endpoint
https://api.monday.com/v2, аутентификация через API Token - Создание item:
create_itemmutation сboard_id,item_name,column_values(JSON-строка с ID колонок) - Webhook на смену статуса -> обновление этапа в Kommo
- Для агентств:
duplicate_boardmutation создаёт board из шаблона на каждого клиента - Типовой срок разработки — 2–3 недели
Если вы используете Monday.com и Kommo и хотите автоматизировать передачу сделок в delivery — опишите структуру вашего board’а и какие данные сделки нужны. Exceltic.dev разберёт маппинг колонок и предложит архитектуру.