Kommo + Juro: AI-контракты из воронки без ручного заполнения шаблонов

При интеграции Kommo и Juro контракт генерируется из данных сделки в один клик: имя клиента, сумма, условия - всё подтягивается из полей карточки. После подписания Juro возвращает статус и ссылку на документ обратно в Kommo. Менеджер не открывает Word, не копирует реквизиты вручную.

Juro - платформа для управления жизненным циклом контрактов с встроенным AI-ассистентом, который помогает составлять, редактировать и анализировать договоры. Для компаний, у которых каждая сделка завершается контрактом, разрыв между Kommo и Juro стоит дорого: менеджеры тратят 20-40 минут на каждый договор, допускают ошибки при копировании реквизитов, а статус подписания приходится отслеживать вручную.

По данным Juro, компании тратят в среднем 2-3 часа на подготовку и согласование одного B2B-контракта при ручном процессе - это время на поиск шаблона, заполнение реквизитов, отправку на юридическое согласование и повторную отправку клиенту после правок. Платформы contract management (Juro, DocuSign, PandaDoc) активно растут в EU B2B как ответ на этот запрос. Нативной интеграции Kommo и Juro нет: при выигрыше сделки контракт создаётся с перекопированием данных из карточки вручную. Кастомный webhook закрывает эту точку - данные из кастомных полей Kommo передаются в Juro автоматически. Ниже - детали архитектуры и реализации.

Почему нативная интеграция не работает

Juro не имеет готового виджета для Kommo. Существует Zapier-коннектор для Juro, но он работает только в одну сторону: триггер на событие в Juro отправляет данные в другой сервис. Создать документ в Juro из события в Kommo через стандартный Zapier-триггер нельзя - нет нужного action.

Проблема глубже, чем отсутствие коннектора. Juro работает с понятиями «contract workflow», «counterparty», «signatory» - это не то же самое, что «сделка», «контакт», «компания» в Kommo. Прямого маппинга нет, и без серверной логики, которая трансформирует данные, интеграция будет неполной.

Дополнительная сложность: Juro поддерживает multi-party signing - когда контракт должны подписать несколько человек. Ни один no-code инструмент не умеет правильно передавать список signatories из полей Kommo в Juro workflow.

Что реализовывается - архитектура решения

Kommo (сделка перешла на этап «Контракт»)
        |
        v
  Сервер-оркестратор
  - читает данные сделки через Kommo API
  - маппит поля на Juro template variables
        |
        v
  Juro API (создать документ из шаблона)
        |
        v
  Juro (документ в статусе Draft)
        |
  Juro отправляет на подпись counterparty
        |
        v
  Juro webhook (статус изменён: SIGNED / DECLINED)
        |
        v
  Kommo API (обновить поле + добавить заметку + приложить ссылку)

Три ключевых поля в Juro используются при создании документа:

  • template_id - ID шаблона контракта в Juro
  • counterparty - объект с именем, email, должностью подписанта со стороны клиента
  • custom_fields - переменные шаблона: сумма, срок, описание услуг

Технические детали

Juro API v2 использует Personal Access Token (PAT) для аутентификации - токен указывается в заголовке Authorization: Bearer <token>. API поддерживает создание документов из шаблона, управление workflow и получение статусов. Webhook настраивается в разделе Settings -> Integrations -> Webhooks в интерфейсе Juro.

import requests

JURO_API_URL = "https://paper.juro.com/api"
JURO_TOKEN = "your_personal_access_token"

def create_contract_from_kommo_deal(deal_data: dict) -> dict:
    """
    Создаёт контракт в Juro на основе данных сделки из Kommo.
    deal_data: данные сделки, полученные из Kommo API
    """
    headers = {
        "Authorization": f"Bearer {JURO_TOKEN}",
        "Content-Type": "application/json"
    }
    
    # Маппинг полей Kommo -> Juro
    payload = {
        "templateId": "tmpl_your_template_id",
        "name": f"Contract - {deal_data['name']}",
        "counterparties": [
            {
                "name": deal_data["contact_name"],
                "email": deal_data["contact_email"],
                "role": "signatory"
            }
        ],
        "customFields": {
            "deal_amount": str(deal_data["price"]),
            "currency": deal_data["currency"] or "USD",
            "service_description": deal_data.get("service_description", ""),
            "contract_term_months": str(deal_data.get("contract_term", 12)),
            "client_company": deal_data.get("company_name", "")
        }
    }
    
    resp = requests.post(
        f"{JURO_API_URL}/v2/documents",
        json=payload,
        headers=headers
    )
    resp.raise_for_status()
    return resp.json()

def send_for_signing(document_id: str) -> bool:
    headers = {"Authorization": f"Bearer {JURO_TOKEN}"}
    resp = requests.post(
        f"{JURO_API_URL}/v2/documents/{document_id}/send",
        headers=headers
    )
    return resp.status_code == 200

Пошаговая реализация

Шаг 1. Подготовьте шаблон контракта в Juro

В Juro создайте шаблон договора с переменными в формате {{variable_name}}. Стандартный набор: {{deal_amount}}, {{client_company}}, {{service_description}}, {{contract_term_months}}. Запишите templateId - он виден в URL страницы шаблона.

Шаг 2. Настройте кастомные поля в Kommo

Добавьте поля: juro_document_id (текст), juro_status (список: DRAFT/SENT/SIGNED/DECLINED), juro_document_url (ссылка). Эти поля будут заполняться автоматически после создания документа.

Шаг 3. Создайте webhook в Kommo на смену этапа

Настройте webhook на событие leads.status. При переходе сделки на этап «Контракт» (укажите конкретный status_id) сервер вызывает функцию create_contract_from_kommo_deal.

Шаг 4. Разверните обработчик webhook от Juro

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/juro/webhook", methods=["POST"])
def juro_webhook():
    data = request.json
    event_type = data.get("type")  # document.signed, document.declined
    document_id = data["document"]["id"]
    
    # Найти сделку по juro_document_id
    lead = kommo_api.find_lead_by_custom_field("juro_document_id", document_id)
    if not lead:
        return jsonify({"error": "Lead not found"}), 404
    
    if event_type == "document.signed":
        kommo_api.update_lead(lead["id"], {
            "juro_status": "SIGNED"
        })
        kommo_api.move_to_stage(lead["id"], SIGNED_STAGE_ID)
        signed_url = data["document"].get("signedPdfUrl", "")
        kommo_api.add_note(
            lead["id"],
            f"Контракт подписан. Документ: {signed_url}"
        )
    elif event_type == "document.declined":
        kommo_api.update_lead(lead["id"], {"juro_status": "DECLINED"})
        kommo_api.add_note(
            lead["id"],
            f"Контракт отклонён контрагентом. Причина: {data.get('reason', '-')}"
        )
    
    return jsonify({"ok": True})

Шаг 5. Настройте Juro webhook

В Juro -> Settings -> Integrations -> Webhooks добавьте URL https://yourserver.com/juro/webhook. Подпишитесь на события document.signed и document.declined.

Реальный кейс с цифрами

IT-компания из Амстердама, продающая SaaS-решения корпоративным клиентам в Европе. 30-50 контрактов в месяц, каждый - индивидуальный с вариациями по сумме, сроку и перечню услуг.

До интеграции:

  • Менеджер получал уведомление о закрытии сделки
  • Открывал Word-шаблон, копировал реквизиты из Kommo вручную
  • Отправлял в Juro для согласования с юристом
  • После подписания вручную обновлял статус в Kommo
  • Прикладывал ссылку на документ в заметку

Время на операцию: 25-35 минут. При 40 контрактах в месяц - 17-23 часа менеджерского времени.

Частота ошибок: 8-12% контрактов содержали опечатки или неправильные цифры из-за ручного копирования. Исправления требовали перезапуска процесса подписания.

После интеграции через Exceltic.dev:

  • Контракт генерируется автоматически при переходе этапа: менеджер проверяет за 2-3 минуты
  • Ошибки из-за ручного копирования: 0
  • Статус подписания обновляется в Kommo в реальном времени
  • Экономия: 18-20 часов в месяц

Подробнее о кастомных интеграциях в Kommo CRM и том, какие сценарии автоматизации уже реализованы.

Для кого подходит

Интеграция Kommo + Juro оптимальна для:

  • B2B-компаний с объёмом 20+ контрактов в месяц, где ручная работа стала узким местом
  • Компаний с юридическим согласованием - Juro поддерживает внутренний approval workflow перед отправкой клиенту
  • Команд, работающих с международными клиентами - Juro поддерживает eSignature, соответствующую eIDAS (Европа) и ESIGN Act (США)
  • SaaS и агентств, где контракт - стандартная часть воронки, а не исключение

Если вам нужна более простая электронная подпись без AI-функционала - посмотрите на интеграции с DocuSign или SignNow. Juro выигрывает именно там, где важно управление шаблонами, совместное редактирование и AI-анализ договоров.

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

Juro поддерживает юридически значимую подпись в России?

Juro ориентирован на международный рынок: США, Великобритания, ЕС. Подпись соответствует eIDAS (Европа) и ESIGN Act (США). Для российского юрисдикционного контекста Juro не подходит - рассмотрите DocuSign или Контур.Диадок.

Можно ли использовать несколько шаблонов контрактов?

Да. В Kommo можно добавить кастомное поле «Тип контракта» (список), и сервер-оркестратор будет выбирать нужный templateId в зависимости от значения. Например: NDA, Service Agreement, Subscription Agreement - каждый со своим набором переменных.

Как работает согласование контракта внутри компании перед отправкой клиенту?

Juro поддерживает internal approval workflow: после создания документа он проходит через список согласующих (юрист, CFO) и только после финального одобрения отправляется клиенту на подпись. Интеграция может отслеживать статус approval и уведомлять менеджера в Kommo через заметки или смену кастомного поля.

Как настроить воронку в Kommo под процесс работы с Juro?

Оптимальная структура этапов: «Квалификация» -> «КП отправлено» -> «Контракт» (здесь срабатывает создание документа в Juro) -> «На подписании» -> «Подписан» -> «Реализация». При такой структуре переход между «Контракт» и «На подписании» происходит автоматически после отправки документа, а «Подписан» - после события document.signed от Juro.

Сколько стоит разработка интеграции?

Типовой проект с одним шаблоном, базовым маппингом полей и обработкой webhook занимает 2-3 недели разработки. Сложные сценарии - несколько шаблонов, multi-party signing, internal approval - добавляют 1-2 недели. Точную оценку делаем после разбора вашего стека.


Если контракты - стандартная часть вашей воронки и вы хотите убрать ручную работу - опишите задачу команде Exceltic.dev. Разберём архитектуру под ваши шаблоны и оценим объём работ.

Ещё статьи

Все →