Kommo + GanttPRO: проект из выигранной сделки без ручного создания задач
Когда сделка переходит в «Выиграно», интеграция Kommo и GanttPRO автоматически создаёт проект по шаблону: название клиента, сроки из сделки, ответственные из карточки. Менеджер не открывает GanttPRO вручную, PM не ждёт письма от продаж.
GanttPRO - инструмент управления проектами с диаграммой Ганта, популярный среди агентств, IT-компаний и сервисного B2B. Разрыв между продажами (Kommo) и доставкой (GanttPRO) - классическая проблема: проект создаётся с задержкой, данные о клиенте переносятся вручную, сроки из контракта не попадают в задачи автоматически.
В проектах по интеграции Kommo для сервисных компаний мы видим одну и ту же точку боли: при переходе сделки в «Выиграно» PM получает письмо или сообщение в мессенджере с описанием клиента, а дальше вручную создаёт проект в GanttPRO - копирует название, бюджет, дедлайн, назначает исполнителей. При 8-15 новых проектах в месяц это занимает несколько часов в неделю и регулярно приводит к ошибкам: неправильные сроки, пропущенные поля, задержка старта на 1-3 дня. Кастомный webhook, который срабатывает на смену статуса в воронке Kommo, полностью убирает эту ручную точку. Ниже - архитектура и детали реализации.
Почему нативная интеграция не работает
GanttPRO не имеет готовой интеграции с Kommo. Zapier-коннектор для GanttPRO существует, но поддерживает только базовые действия: создать задачу, обновить статус. Создать полноценный проект по шаблону с иерархией задач, milestone, ресурсами и зависимостями - через Zapier нельзя.
Дополнительная проблема: GanttPRO работает с понятием «шаблон проекта» - набором задач с относительными дедлайнами («задача A начинается через 3 дня после старта проекта»). Zapier не умеет использовать шаблоны - он создаёт только одиночные задачи с фиксированными датами. При 10-20 задачах в проекте это означает 10-20 отдельных Zapier-шагов и плату за каждый.
Синхронизация в обратную сторону (обновление дедлайна в GanttPRO -> уведомление в Kommo) через Zapier невозможна вообще - GanttPRO не поддерживает триггер на изменение задачи в стандартном Zapier-коннекторе.
Что реализовывается - архитектура решения
Kommo (сделка -> «Выиграно»)
|
v
Сервер-оркестратор:
- читает данные сделки (название, сумма, клиент, сроки, ответственный)
- определяет шаблон проекта по типу сделки
|
v
GanttPRO API:
- создать проект из шаблона
- установить дату старта
- назначить ответственных на задачи
- добавить клиента как stakeholder
|
v
Kommo API:
- записать ganttpro_project_id в поле сделки
- добавить заметку со ссылкой на проект
---
GanttPRO (задача просрочена / milestone достигнут)
|
v
GanttPRO Webhook -> Сервер
|
v
Kommo API:
- добавить заметку в сделку
- если просрочена ключевая задача -> задача для менеджера
Основная ценность - использование шаблонов GanttPRO. Вместо создания задач по одной, API создаёт проект из готового шаблона, который PM настроил заранее под конкретный тип работ.
Технические детали
GanttPRO API v1 использует JWT-токен для аутентификации. Токен генерируется в Account Settings -> API. Основные эндпоинты для интеграции: POST /projects (создать проект), POST /projects/{id}/from-template (создать из шаблона), GET /projects/{id}/tasks (получить задачи). Webhook для уведомлений настраивается через API или в разделе Integrations интерфейса.
import requests
from datetime import datetime, timedelta
from flask import Flask, request, jsonify
app = Flask(__name__)
GANTTPRO_API_BASE = "https://api.ganttpro.com/v1"
GANTTPRO_TOKEN = "your_ganttpro_jwt_token"
# Маппинг типов сделок на шаблоны GanttPRO
DEAL_TYPE_TO_TEMPLATE = {
"website": "tmpl_website_development",
"integration": "tmpl_integration_project",
"audit": "tmpl_seo_audit",
"default": "tmpl_generic_project"
}
def create_project_from_deal(deal_data: dict) -> dict:
headers = {
"Authorization": f"Bearer {GANTTPRO_TOKEN}",
"Content-Type": "application/json"
}
deal_type = deal_data.get("deal_type", "default")
template_id = DEAL_TYPE_TO_TEMPLATE.get(deal_type, DEAL_TYPE_TO_TEMPLATE["default"])
# Дата старта - завтра от даты закрытия сделки
start_date = (datetime.now() + timedelta(days=1)).strftime("%Y-%m-%d")
# Дедлайн из поля сделки или +90 дней
deadline_field = deal_data.get("project_deadline")
if deadline_field:
end_date = deadline_field
else:
end_date = (datetime.now() + timedelta(days=90)).strftime("%Y-%m-%d")
payload = {
"templateId": template_id,
"name": f"{deal_data['company_name']} - {deal_data['deal_name']}",
"startDate": start_date,
"endDate": end_date,
"description": f"Kommo deal #{deal_data['lead_id']}. Budget: {deal_data['price']} {deal_data.get('currency', 'USD')}",
"members": [
{
"email": deal_data["responsible_email"],
"role": "manager"
}
]
}
resp = requests.post(
f"{GANTTPRO_API_BASE}/projects/from-template",
json=payload,
headers=headers
)
resp.raise_for_status()
return resp.json()
@app.route("/kommo/webhook", methods=["POST"])
def kommo_webhook():
data = request.json
# Событие: сделка перешла в «Выиграно» (lost = false, status = success)
for lead_update in data.get("leads", {}).get("status", []):
if lead_update.get("pipeline_id") and lead_update.get("status_id") == WON_STATUS_ID:
handle_won_deal(lead_update["id"])
return jsonify({"ok": True})
def handle_won_deal(lead_id: int):
lead = kommo_api.get_lead(lead_id)
contact = kommo_api.get_lead_contact(lead_id)
responsible = kommo_api.get_user(lead.get("responsible_user_id"))
deal_data = {
"lead_id": lead_id,
"deal_name": lead["name"],
"company_name": lead.get("company_name", "Client"),
"price": lead.get("price", 0),
"currency": lead.get("custom_fields", {}).get("currency", "USD"),
"deal_type": lead.get("custom_fields", {}).get("deal_type", "default"),
"project_deadline": lead.get("custom_fields", {}).get("project_deadline"),
"responsible_email": responsible.get("email", "")
}
project = create_project_from_deal(deal_data)
project_id = project["id"]
project_url = f"https://app.ganttpro.com/projects/{project_id}"
kommo_api.update_lead(lead_id, {"ganttpro_project_id": str(project_id)})
kommo_api.add_note(
lead_id,
f"GanttPRO проект создан: {project_url}\n"
f"Шаблон: {deal_data['deal_type']}\n"
f"Дедлайн: {deal_data.get('project_deadline', 'не указан')}"
)
Пошаговая реализация
Шаг 1. Создайте шаблоны проектов в GanttPRO
Подготовьте шаблоны под каждый тип ваших проектов. Важно: используйте относительные даты в задачах («начало через N дней после старта проекта»), а не абсолютные. Это позволит системе правильно распределить задачи при любой дате старта. Запишите ID каждого шаблона.
Шаг 2. Добавьте кастомные поля в Kommo
Необходимые поля: deal_type (список: website/integration/audit/…), project_deadline (дата), ganttpro_project_id (текст), ganttpro_project_url (ссылка). Поле deal_type заполняется при создании сделки или квалификации.
Шаг 3. Настройте webhook Kommo на «Выиграно»
Кommo отправляет webhook при смене статуса сделки. Нужно отфильтровать именно переход в статус «Выиграно» (pipeline_id + status_id соответствующего этапа). Это делается на стороне сервера-обработчика.
Шаг 4. Настройте обратные уведомления
В GanttPRO настройте webhook на событие просрочки задачи и завершения milestone. При получении webhook сервер находит сделку по ganttpro_project_id и добавляет заметку в Kommo.
Шаг 5. Тестирование на реальных сделках
Создайте тестовую сделку с заполненными полями deal_type и project_deadline. Переведите в «Выиграно» и проверьте: создался ли проект в GanttPRO, правильно ли заполнены дедлайны задач, добавлена ли заметка в Kommo.
Реальный кейс с цифрами
IT-интегратор из Варшавы, команда 25 человек, 8-12 новых проектов в месяц. До интеграции процесс передачи от продаж к PM выглядел так:
- Менеджер отправлял письмо PM с описанием проекта
- PM создавал проект в GanttPRO вручную, копируя данные из письма
- Средняя задержка от «Выиграно» до создания проекта: 1-3 рабочих дня
- 30-40% данных из сделки не попадали в GanttPRO (бюджет, конкретные требования из кастомных полей Kommo)
После интеграции Kommo + GanttPRO через Exceltic.dev:
- Проект создаётся автоматически в течение 30 секунд после «Выиграно»
- PM получает уведомление через GanttPRO и видит уже заполненный проект
- Задержка передачи: 0
- Данные из сделки в проекте: 100%
Время PM на создание проекта: с 45-60 минут до 10-15 минут (только проверка и уточнение деталей).
Подробнее о настройке воронки в Kommo CRM для сервисного B2B - в отдельном материале.
Для кого подходит
Интеграция Kommo + GanttPRO актуальна для:
- Агентств и IT-компаний, где продажи закрываются в CRM, а реализация идёт в проектном инструменте
- Команд с 5+ проектами в месяц, где ручное создание стало узким местом
- Компаний с типовыми проектами - когда структура задач повторяется и можно использовать шаблоны
- Компаний с PM-командой отдельно от продаж - интеграция устраняет информационный разрыв при передаче клиента
Если проекты уникальные по структуре и не поддаются шаблонизации - рассмотрите интеграцию Kommo + Notion или Kommo + ClickUp, где больше гибкости в создании структуры задач.
Часто задаваемые вопросы
GanttPRO поддерживает API для создания проектов из шаблона?
Да. GanttPRO API v1 поддерживает создание проектов из шаблонов, управление задачами, назначение ресурсов и webhook-уведомления. Документация доступна на help.ganttpro.com/en/articles/API. API доступен на тарифах Team и выше.
Как интеграция обрабатывает случай, когда в Kommo нет всех нужных данных?
Сервер проверяет обязательные поля перед созданием проекта. Если deal_type не заполнен - используется шаблон по умолчанию. Если project_deadline отсутствует - дедлайн проекта устанавливается через 90 дней от даты создания. Менеджер получает заметку в Kommo с указанием какие поля не были заполнены - это сигнал для уточнения данных у клиента.
Можно ли синхронизировать статус проекта обратно в Kommo?
Да. При завершении проекта в GanttPRO (все задачи закрыты) webhook обновляет кастомное поле сделки в Kommo («Проект завершён») и может автоматически создать задачу для менеджера: «Запросить отзыв у клиента» или перевести сделку в специальный статус для upsell-работы.
Что если PM меняет сроки проекта в GanttPRO - как это отражается в Kommo?
Если настроить webhook на событие изменения дедлайна ключевой задачи или milestone в GanttPRO - сервер добавляет заметку в Kommo о переносе сроков. Это даёт менеджеру возможность уведомить клиента без того, чтобы следить за GanttPRO самостоятельно. Обо всех кастомных интеграциях в Kommo для управления проектами - подробнее в нашем материале.
Сколько стоит разработка интеграции Kommo + GanttPRO?
Базовый вариант (создание проекта из шаблона при выигрыше сделки + заметка в Kommo) - 2-3 недели. С обратной синхронизацией (просрочки, завершение, изменение сроков) - 3-4 недели. Оцениваем после разбора вашей структуры проектов и типов сделок.
Если разрыв между продажами в Kommo и управлением проектами в GanttPRO отнимает время вашей команды - опишите задачу команде Exceltic.dev. Разберём архитектуру и оценим объём работ.