Документация

amoCRM

SUMMING поддерживает amoCRM двумя способами:

SUMMING поддерживает amoCRM двумя способами:

  • Long-lived access token (v1 shipped, описан ниже) — подходит для single-account workflow'ов, когда у вас один amoCRM-аккаунт и интеграция создаётся вручную в его админке.
  • OAuth2 app-installation (отложено) — для marketplace- distributed integrations, когда приложение ставят из каталога сторонние клиенты. Добавим по demand'у.

За ~15 минут вы:

  1. Создадите внешнюю интеграцию в amoCRM и получите long-lived token
  2. Сохраните его в SUMMING как secret
  3. Настроите входящий webhook для реактивной workflow'ы (новый лид → AI-classify → обновить deal)

1. Создайте интеграцию в amoCRM

  1. Откройте ваш аккаунт: https://<your-company>.amocrm.ru
  2. Админ-панель → «Интеграции»«Создать интеграцию»
  3. Режим: «Внешняя интеграция»
  4. Заполните поля:
    • Название: SUMMING (или любое, только для вас)
    • Описание: опционально
    • Redirect URI: если будущий OAuth2 — понадобится, сейчас можете оставить пустым или написать https://summing.org/app/auth/oauth/complete
  5. Права доступа: отметьте crm (обязательно для lead / contact / company / task операций)
  6. Сохранить

2. Получите long-lived token

В открывшейся карточке интеграции:

  1. Вкладка «Ключи и доступы»
  2. Нажмите «Долгоживущий токен» (generate)
  3. Укажите срок действия (рекомендуем год) + scope (crm)
  4. Скопируйте access_token — он понадобится в SUMMING

3. Сохраните credentials в SUMMING

SettingsSecrets+ New secret:

  • Name: amocrm-token-main (любое имя, только для UI)
  • Value: вставьте access_token целиком

Создайте второй secret с поддоменом:

  • Name: amocrm-subdomain
  • Value: ваш поддомен без .amocrm.ru (например acme из https://acme.amocrm.ru)

SUMMING будет использовать этот поддомен как base-URL для всех API-вызовов.

4. Наймите агента

Из шаблона

В workspace dashboard'е — «Hire from template»:

  • «amoCRM lead qualifier» — incoming webhook с формы сайта → AI classifies (hot/warm/cold) → amocrm.lead.create с UTM-полями + assigned responsible user по round-robin'у
  • «amoCRM deal progression bot» — cron-trigger раз в день → amocrm.crm.list по pipeline'у → AI-summary застрявших сделок → Telegram-отчёт менеджеру
  • «amoCRM task completer» — incoming event task.completedamocrm.task.update с is_completed:true + result.text из LLM-summary последних событий

Wizard спросит какие secrets использовать (созданные в § 3) и запустит агента. После — он виден в разделе Agents, KPI начинают собираться как только пойдут runs.

Пустой агент + workflow в редакторе

Если шаблон не подходит:

  1. Dashboard → «Start from blank» (в hero-CTA) или /agentsNew agent → Skip template
  2. Имя агента + goal (human-readable)
  3. В editor'е перетащите ноды:
    • amocrm.webhook.trigger — incoming events от amoCRM
    • ai.classify — классификация payload'а
    • amocrm.lead.create — создание лида
  4. На ноде-триггере и ноде-выходе укажите secrets (amocrm-token-main
    • amocrm-subdomain).
  5. Save + Publish → агент активен

5. Webhook setup (для incoming events)

SUMMING webhook-URL для агента формируется автоматически после Publish. Зарегистрируйте его в amoCRM:

  1. Админ-панель amoCRM → «Интеграции» → ваша SUMMING-интеграция
  2. Вкладка «Webhooks»«Добавить webhook»
  3. URL: https://api.summing.org/webhook/<uuid> (SUMMING покажет в настройках trigger-ноды)
  4. Events: выберите нужные (чаще всего Добавить лид, Добавить контакт, Изменить сделку)
  5. Сохранить

amoCRM шлёт query-token в URL'е для валидации — SUMMING проверяет совпадение на каждый incoming request.

6. Триггер workflow'а вручную

Для smoke-теста без amoCRM-события:

curl -X POST https://api.summing.org/webhook/<uuid>?token=<webhook-token> \
  -H "Content-Type: application/json" \
  -d '{"leads":{"add":[{"id":12345,"name":"Тест","created_at":"2026-04-24T10:00:00Z"}]}}'

Через секунду run появится в Runs с полной трассой.

Ноды amoCRM, доступные сейчас

НодаЧто делает
amocrm.webhook.triggerIncoming events с query-token валидацией
amocrm.lead.{create,get,update}Сделки
amocrm.contact.{create,get,update}Контакты
amocrm.company.{create,get,update}Компании
amocrm.task.{create,update}Задачи (update покрывает completion через is_completed:true + result.text)
amocrm.crm.listList с filter / select / order / paging + включение tasks entity через with=tasks
amocrm.pipelines.listМетаданные для lookup pipeline_id / status_id

Не реализовано (по demand'у добавим): OAuth2 app-installation, notes, calls, files, custom-fields metadata endpoints.

Примеры workflow'ов

Welcome-bot: incoming lead → приветственное сообщение

amocrm.webhook.trigger  (event: leads.add)
    ↓
ai.extract  (template: "{\"phone\": ..., \"name\": ...}")
    ↓
telegram.message.send  (chat_id = <manager>, text = "Новый лид: {{extract.name}}")
    ↓
amocrm.lead.update  (id = {{trigger.leads.add.0.id}}, tags += "welcomed")

Refund coordinator

yookassa.webhook.trigger  (event: refund.succeeded)
    ↓
amocrm.crm.list  (entity=leads, filter={custom_fields_values: [{field_id: 123, value: {{trigger.refund.metadata.order_id}}}]})
    ↓
approval.request  (title = "Refund для сделки {{list.results.0.name}}", assigned_to: "owner")
    ↓ (on approved)
amocrm.lead.update  (id = {{list.results.0.id}}, status_id = <refunded>)
amocrm.task.create  (entity_id = {{list.results.0.id}}, text = "Оформить возврат в 1С")

Troubleshooting

401 при вызове amoCRM API

  • Token expired. В amoCRM: «Интеграции» → ваша интеграция → «Ключи и доступы» → регенерировать access_token → обновите secret в SUMMING.
  • Или: scope без crm — пересоздайте token с правильным скоупом.

Webhook не срабатывает

  • Проверьте в amoCRM что webhook действительно включён (галочка «Активен»).
  • URL в amoCRM должен содержать ?token=<...> — та же строка, что в настройках trigger-ноды SUMMING.
  • docker compose logs api | grep webhook на VM'е покажет incoming payload'ы — если amoCRM не доходит до нас, проблема на amoCRM-стороне (проверьте их Webhooks → History).

«Entity already exists» при создании

amoCRM не даёт создать дубликат по email / phone. Используйте amocrm.crm.list с фильтром сначала, потом .update если нашли.

Связанное

  • Bitrix24 — альтернатива amoCRM с похожей структурой workflow'ов
  • Concepts → Agents & Processes — как устроен template-resolver и workflow-runtime