Kommo + Asana: проект по шаблону при закрытии сделки

Kommo + Asana: проект по шаблону при закрытии сделки

Менеджер закрыл сделку в Kommo — и начинается ручная работа: создать проект в Asana, добавить секции, назначить задачи исполнителям, скопировать имя клиента и сумму контракта. Этот переход «продажи -> доставка» — узкое место в большинстве компаний. Интеграция Kommo и Asana автоматизирует его: Deal Won -> проект из шаблона с задачами, исполнителями и данными клиента.

Почему переход «продажи -> доставка» ломается вручную

Компании, где продажи и исполнение — разные команды, сталкиваются с одной проблемой: информация о клиенте теряется при передаче. Менеджер закрыл сделку — команда исполнения узнаёт о новом проекте из письма или разговора, а не из системы. Детали контракта, особые пожелания, бюджет — приходится запрашивать заново.

Автоматическое создание проекта в Asana при закрытии сделки решает это: вся информация из Kommo передаётся в проект сразу.

Что передаётся из Kommo в Asana

При создании проекта:
— Название проекта = название сделки (или шаблон: «[Company] - Onboarding»)
— Описание = данные клиента + контекст сделки (менеджер, сумма, особые условия)
— Дата начала и дедлайн из кастомных полей Kommo
— Кастомные поля Asana: crm_deal_id, client_email, contract_value

Задачи из шаблона:
Asana позволяет дублировать существующий проект как шаблон. Интеграция создаёт проект из шаблона (duplicateProject) и затем обновляет переменные поля.

Назначение исполнителей:
Ответственный менеджер Kommo -> assignee первой задачи. Другие участники сделки -> followers в Asana-проекте.

Архитектура интеграции

Kommo: сделка перешла на этап Won (status_id = 142)
  ↓ Webhook -> Backend
  1. GET /api/v4/leads/{id} - детали сделки
  2. GET /api/v4/contacts?lead_id={id} - контакт клиента
  3. Asana API: duplicateProject(template_project_id)
     -> Получить новый project_id
  4. Asana API: updateProject(project_id) - вставить имя, описание, даты
  5. Asana API: updateCustomField - crm_deal_id, client_email
  6. Asana API: обновить assignee первой задачи по менеджеру Kommo
  7. Kommo: создать примечание на сделке «Проект Asana создан: [ссылка]"

Asana API: ключевые методы

Asana API авторизуется через Personal Access Token или OAuth 2.0.

Дублирование проекта из шаблона:

import asana

client = asana.Client.access_token(ASANA_TOKEN)

# Дублировать шаблонный проект
result = client.projects.duplicate_project(
    template_project_id,
    {
        'name': f'{client_name} - Onboarding',
        'team': ASANA_TEAM_ID,
        'schedule_dates': {
            'should_skip_weekends': True,
            'due_on': deadline_date  # ISO 8601
        }
    }
)
new_project_id = result['new_project']['gid']

Обновление проекта данными из Kommo:

client.projects.update(
    new_project_id,
    {
        'notes': (
            f'Клиент: {contact_name}\n'
            f'Email: {contact_email}\n'
            f'Сумма контракта: ${deal_price:,}\n'
            f'Менеджер: {manager_name}\n'
            f'Особые условия: {custom_field_notes}'
        )
    }
)

Назначение исполнителя на первую задачу:

# Получить задачи нового проекта
tasks = list(client.tasks.find_by_project(new_project_id))
if tasks:
    client.tasks.update(
        tasks[0]['gid'],
        {'assignee': asana_user_id}  # Маппинг Kommo user -> Asana user GID
    )

Маппинг пользователей Kommo -> Asana

Каждый менеджер в Kommo соответствует пользователю в Asana. Маппинг хранится на бэкенде:

USER_MAPPING = {
    # kommo_user_id: asana_user_gid
    "101": "1234567890",  # Иван
    "102": "0987654321",  # Мария
    "103": "1122334455",  # Алексей
}

def get_asana_user(kommo_responsible_id: str) -> str | None:
    return USER_MAPPING.get(str(kommo_responsible_id))

Если менеджер не найден в маппинге — задача создаётся без assignee и попадает в очередь команды.

Обратный поток: Asana -> Kommo

Asana поддерживает webhooks на события задач. Когда ключевая задача завершена — Kommo получает обновление:

Asana: task completed (task_id = «Подписан акт выполненных работ»)
  ↓ Webhook -> Backend
  1. Найти deal_id по custom_field crm_deal_id
  2. Kommo: создать Note «Акт подписан [дата]"
  3. Kommo: перевести сделку на этап «Завершено"

Это закрывает круг: продажа в Kommo -> проект в Asana -> завершение в Asana -> обновление в Kommo.

Реальный кейс

IT-аутсорсинговая компания (10–15 новых проектов в месяц, команда 12 человек):

  • До интеграции: PM получал информацию о новом клиенте от менеджера по продажам через Telegram. Создавал проект в Asana вручную. Часть данных терялась или искажалась при передаче.
  • После: Won в Kommo -> проект в Asana за 5 секунд. Шаблон содержит 22 задачи для стандартного онбординга. PM получает уведомление Asana — заходит в готовый проект с данными клиента.
  • Результат: среднее время от Won до начала работ сократилось с 2 дней до 4 часов. Ошибки передачи данных — нулевые.

Аналогичный сценарий мы реализовывали при интеграции Kommo и Notion и Kommo и ClickUp — паттерн «Won -> проект» универсален, меняется API назначения.

Для кого актуально

Интеграция Kommo + Asana имеет смысл если:
— Продажи (Kommo) и исполнение/доставка (Asana) — разные команды
— Каждая новая сделка требует создания стандартизированного проекта
— Важна прослеживаемость: менеджер по продажам должен видеть статус исполнения
— Команда использует Asana как основной инструмент управления проектами

Часто задаваемые вопросы

Asana Templates (шаблоны проектов) — это платная функция?

Asana Project Templates доступны на тарифах Premium и выше ($10.99+/пользователь/мес). На бесплатном тарифе дублирование проекта через API также работает — просто нет встроенного UI-редактора шаблонов. Для интеграции это не критично: дублирование через duplicateProject работает на любом тарифе.

Как обновлять задачи в Asana при изменении данных сделки в Kommo?

Kommo генерирует webhook при обновлении сделки (lead_update). Если изменилось критичное поле (например, сдвинулся дедлайн или сменился менеджер) — Asana обновляется по crm_deal_id, который хранится в кастомном поле проекта.

Что если шаблон проекта часто меняется?

Логика интеграции привязана к template_project_id. Когда шаблон обновляется в Asana — все новые проекты создаются с обновлённой структурой автоматически. Старые проекты не затрагиваются.

Можно ли создавать разные проекты Asana для разных воронок Kommo?

Да. Роутинг прост: pipeline_id из Kommo webhook определяет, какой шаблон использовать:

TEMPLATE_MAP = {
    PIPELINE_SMB: ASANA_TEMPLATE_SMB,
    PIPELINE_ENTERPRISE: ASANA_TEMPLATE_ENTERPRISE,
}

Итого

  • Kommo + Asana: Won -> проект из шаблона с задачами, данными клиента и assignees за секунды
  • Asana API duplicateProject копирует шаблон с полной структурой секций и задач
  • Маппинг пользователей Kommo -> Asana хранится на бэкенде
  • Обратный поток: завершение задачи в Asana -> Note и смена этапа в Kommo
  • Типовой срок разработки — 2–3 недели

Если вы используете Kommo и Asana и хотите автоматизировать передачу данных при закрытии сделки — опишите структуру вашего шаблонного проекта. Exceltic.dev разберёт маппинг полей и настроит интеграцию.

Ещё статьи

Все →