Kommo + Height: современное управление проектами из выигранных сделок
Height — современный инструмент управления задачами и проектами ориентированный на инженерные и продуктовые команды: AI-автоматизация рутинных задач, гибкие workflow без жёстких ограничений, чистый UX. Позиционируется как альтернатива Linear для команд которым нужна большая гибкость чем Linear, но меньше overhead чем Jira. Нативной интеграции с Kommo нет — разбираем правильную архитектуру: Won -> автоматическое создание проекта и задач в Height; завершение задач -> Note в Kommo.
Height vs Linear vs Asana для команд рядом с CRM
| Параметр | Height | Linear | Asana |
|---|---|---|---|
| AI-автоматизация задач | Да (нативная) | Частичная | Через Rules |
| Целевая аудитория | Инженеры + product | Инженеры | Все команды |
| Гибкость workflow | Высокая | Средняя | Высокая |
| API | REST (OAuth 2.0) | GraphQL | REST |
| Цена | от $6.99/user/мес | от $8/user/мес | от $10.99/user/мес |
| Нативная Kommo | Нет | Нет | Нет |
Height выбирают tech-команды где delivery-процесс плотно связан с продажами: агентства, SaaS с custom-разработкой под клиента, IT-сервисные компании.
Архитектура: что синхронизируется
Kommo -> Height:
— Won -> создать List (проект) в Height с задачами по шаблону
— Изменение бюджета/дедлайна -> обновить Height project attributes
— Kommo Note -> Height task comment (для важных клиентских сообщений)
Height -> Kommo:
— task.completed -> Note в Kommo: «Задача «{name}» выполнена»
— list.completed (все задачи закрыты) -> смена этапа + Note: «Проект завершён»
— task.created с флагом -> Task в Kommo (для менеджера по продажам)
Height REST API: аутентификация и базовые запросы
Height использует OAuth 2.0. Для server-side интеграции: Personal Access Token из Height -> Settings -> API. Base URL: https://api.height.app.
import requests
HEIGHT_TOKEN = "your_height_access_token"
HEIGHT_BASE = "https://api.height.app"
HEIGHT_HEADERS = {
"Authorization": f"api-key {HEIGHT_TOKEN}",
"Content-Type": "application/json",
}
def get_height_workspace() -> dict:
resp = requests.get(
f"{HEIGHT_BASE}/workspace",
headers=HEIGHT_HEADERS,
)
resp.raise_for_status()
return resp.json()
def create_height_list(name: str, description: str = "",
color: str = "blue") -> dict:
# Создать List (проект/папку задач)
payload = {
"name": name,
"description": description,
"color": color,
"type": "list",
}
resp = requests.post(
f"{HEIGHT_BASE}/lists",
headers=HEIGHT_HEADERS,
json=payload,
)
resp.raise_for_status()
return resp.json()
def create_height_task(list_id: str, name: str,
description: str = "",
assignee_ids: list = None,
due_at: str = "") -> dict:
# due_at формат: "2025-12-31T00:00:00.000Z"
payload = {
"name": name,
"description": description,
"listIds": [list_id],
"assigneeIds": assignee_ids or [],
}
if due_at:
payload["dueAt"] = due_at
resp = requests.post(
f"{HEIGHT_BASE}/tasks",
headers=HEIGHT_HEADERS,
json=payload,
)
resp.raise_for_status()
return resp.json()
def add_task_comment(task_id: str, message: str) -> dict:
resp = requests.post(
f"{HEIGHT_BASE}/activities",
headers=HEIGHT_HEADERS,
json={"taskId": task_id, "message": message, "type": "comment"},
)
resp.raise_for_status()
return resp.json()
Won -> создание проекта в Height
DELIVERY_TEMPLATE = [
{"name": "Kickoff встреча с клиентом", "days_offset": 3},
{"name": "Техническое задание (ТЗ)", "days_offset": 7},
{"name": "Дизайн / прототип", "days_offset": 14},
{"name": "Разработка - итерация 1", "days_offset": 28},
{"name": "Тестирование и QA", "days_offset": 35},
{"name": "Сдача клиенту", "days_offset": 42},
]
from datetime import datetime, timezone, timedelta
def on_kommo_deal_won(lead: dict, contact: dict):
deal_name = lead.get("name", f"Deal #{lead['id']}")
budget = lead.get("price", 0)
description = (
f"Клиент: {contact.get('name', '')}\n"
f"Бюджет: {budget}\n"
f"Kommo deal ID: {lead['id']}"
)
height_list = create_height_list(
name=f"[{deal_name}]",
description=description,
color="green",
)
list_id = height_list.get("id")
now = datetime.now(timezone.utc)
for tmpl in DELIVERY_TEMPLATE:
due = (now + timedelta(days=tmpl["days_offset"])).strftime(
"%Y-%m-%dT00:00:00.000Z"
)
create_height_task(
list_id=list_id,
name=tmpl["name"],
due_at=due,
)
# Сохранить height_list_id в Kommo
save_to_kommo_deal(lead["id"], {"height_list_id": list_id})
create_kommo_note(
lead["id"],
f"Height: создан проект [{deal_name}] с {len(DELIVERY_TEMPLATE)} задачами",
)
Height Webhooks -> Kommo
Height поддерживает webhooks через Settings -> Developer -> Webhooks.
@app.route("/webhooks/height", methods=["POST"])
def height_webhook():
payload = request.json
event = payload.get("type", "")
data = payload.get("data", {})
if event == "task.completed":
task_name = data.get("task", {}).get("name", "")
list_ids = data.get("task", {}).get("listIds", [])
for list_id in list_ids:
lead_id = find_kommo_deal_by_custom_field("height_list_id", list_id)
if lead_id:
create_kommo_note(lead_id,
f"Height: задача «{task_name}» выполнена")
break
elif event == "list.completed":
list_id = data.get("list", {}).get("id", "")
lead_id = find_kommo_deal_by_custom_field("height_list_id", list_id)
if lead_id:
create_kommo_note(lead_id, "Height: все задачи по проекту выполнены")
move_kommo_deal_to_stage(lead_id, DELIVERED_STAGE_ID)
return "", 200
AI-автоматизация Height + Kommo
Height встраивает AI для автоматического создания подзадач из описания задачи. Для интеграции с Kommo: при создании проекта передавать детальное описание из Kommo Note -> Height AI разбивает его на подзадачи автоматически.
Реальный кейс
IT-агентство (EU, 12 человек, Kommo + Height):
- До: Won -> менеджер вручную создавал проект в Height, копировал детали сделки, назначал задачи по шаблону. 30–40 минут. Если забывал — проект стартовал с задержкой.
- После: Won -> Python webhook -> Height проект + 6 задач с дедлайнами за 3 секунды.
task.completed-> Note в Kommo -> менеджер видит прогресс без входа в Height. - Дополнительно: при изменении бюджета сделки в Kommo -> автоматическое обновление описания проекта в Height через
PATCH /lists/{id}.
Для кого актуально
- IT-агентства и SaaS с custom-разработкой: Won -> старт delivery
- Продуктовые компании где продажи и разработка используют разные инструменты
- Команды которые перешли с Asana/Trello на Height и хотят сохранить связь с Kommo
- Менеджеры по продажам которым нужна видимость прогресса проекта в CRM без входа в проектный инструмент
Часто задаваемые вопросы
Height vs Linear — когда выбирать Height для интеграции с Kommo?
Linear ориентирован на software engineers с жёсткой Issue-based структурой. Height гибче — поддерживает произвольные списки задач, цветовые метки, любые workflow. Для агентств и сервисных компаний где проект = набор задач для клиента, Height удобнее. Для продуктовых компаний со строгим sprint-процессом — Linear подойдёт лучше.
Height поддерживает шаблоны проектов (Templates)?
Да. Height -> Templates позволяет создать List-шаблон с задачами. В API: POST /lists с templateId параметром создаёт List по шаблону. Для интеграции с Kommo это удобнее чем создавать задачи по массиву DELIVERY_TEMPLATE — шаблон редактируется в Height UI без изменений в коде интеграции.
Как синхронизировать ответственных (assignees) между Kommo и Height?
В Kommo у лида есть responsible_user_id. В Height — assigneeIds. Маппинг: {kommo_user_id: height_user_id} хранить в конфиге. Получить список Height пользователей: GET /users. Получить список Kommo пользователей: GET /users в Kommo API. Маппинг по email совпадению — если email совпадает, автоматически назначать.
Height webhook верификация — нужна ли?
Height отправляет заголовок X-Height-Signature с HMAC-SHA256 подписью (ключ из настроек webhook). Верификация рекомендована: hmac.new(secret.encode(), request.data, sha256).hexdigest(). Без верификации endpoint открыт для спуфинга — любой может отправить фейковое task.completed событие.
Итого
- API:
api-key {token}заголовок, base URLhttps://api.height.app - Won ->
POST /lists(проект) +POST /tasksс шаблоном задач и дедлайнами - Webhook ->
task.completed/list.completed-> Note в Kommo + смена этапа - Templates: используй Height шаблоны через
templateIdвместо hardcoded массива задач - Маппинг пользователей: по email между Kommo responsible_user и Height assignee
Если у вас агентство или SaaS с Kommo и вы хотите автоматически стартовать проект в Height после Won — опишите ваш шаблон задач. Exceltic.dev настроит интеграцию за 1–2 рабочих дня.