Skip to content

amoCRM

OPORA поддерживает 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. Сохраните его в OPORA как secret
  3. Настроите входящий webhook для реактивной workflow’ы (новый лид → AI-classify → обновить deal)

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

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

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

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

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

Section titled “3. Сохраните credentials в OPORA”

SettingsSecrets+ New secret:

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

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

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

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

В 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 в редакторе

Section titled “Пустой агент + 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 → агент активен

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

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

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

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

Section titled “6. Триггер workflow’а вручную”

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

Terminal window
curl -X POST https://app.opora.example/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, доступные сейчас

Section titled “Ноды 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.

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

Section titled “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")
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С")
  • Token expired. В amoCRM: «Интеграции» → ваша интеграция → «Ключи и доступы» → регенерировать access_token → обновите secret в OPORA.
  • Или: scope без crm — пересоздайте token с правильным скоупом.
  • Проверьте в amoCRM что webhook действительно включён (галочка «Активен»).
  • URL в amoCRM должен содержать ?token=<...> — та же строка, что в настройках trigger-ноды OPORA.
  • docker compose logs api | grep webhook на VM’е покажет incoming payload’ы — если amoCRM не доходит до нас, проблема на amoCRM-стороне (проверьте их Webhooks → History).

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

Section titled “«Entity already exists» при создании”

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

  • Bitrix24 — альтернатива amoCRM с похожей структурой workflow’ов
  • API reference — если нужно дёргать OPORA извне
  • Concepts → Agents & Processes — как устроен template-resolver и workflow-runtime