Как подойти к задаче без лишней магии
Я бы начинал интеграцию не с кнопки Connect, а с вопроса: какое событие в системе A должно изменить в системе B и кто владеет этим полем.
Ошибка, которую я бы сразу убрал: Большинство дублей появляется потому, что workflow создаёт запись при каждом webhook и не хранит id исходного события. Повторная доставка выглядит как новая заявка.

Что подготовить и какой результат ждать
- На выходе: Файлы, CRM, календарь и почта связаны предсказуемо, а ошибка не превращается в тихую потерю данных.
- Нарисуйте карту event → source → transform → target → owner и укажите для каждого поля направление, формат и право записи.
- Сохраните исходные данные и права доступа отдельно от результата, чтобы можно было проверить, что сделал связь AI с бизнес-системами.
- Проверьте повтор webhook, пропущенное поле, истёкший токен, таймаут и ответ API с неожиданной структурой.
Подключите AI к системам с журналом и защитой от дублей
- Опишите владельца каждого поля
В таблице интеграции укажите: поле, система-владелец, формат, направление, кто может менять и что делать при конфликте.
Проверьте: Нет двух систем, которые считают себя владельцем одного значения.
Если не сработало: Оставьте поле только для чтения в одной системе.
- Выдайте минимальные credentials
Создайте отдельные ключи или OAuth-доступы для workflow. Где возможно, используйте read-only и ограничьте папку, проект или таблицу.
Проверьте: Отзыв одного ключа не ломает весь бизнес и не открывает лишние данные.
Если не сработало: Сначала протестируйте на sandbox-аккаунте.
- Сделайте transform явным
Перед AI и записью нормализуйте даты, телефоны, enum и вложенные JSON. Не передавайте целый объект, если нужны три поля.
Проверьте: Одинаковый вход даёт одинаковый формат target.
Если не сработало: Добавьте validation step и пример ожидаемого JSON.
- Добавьте идемпотентность и ошибки
Храните event_id, ограничьте число повторов и создайте dead-letter очередь для случаев, которые требуют человека.
Проверьте: Повтор не создаёт дубль, а ошибка видна владельцу.
Если не сработало: Остановите workflow после одного контролируемого повтора и уведомите команду.

Карта полей до подключения
Сделайте таблицу event_name, source_system, target_system, source_field, target_field, transform, required, owner и failure_route. Например: form.email → crm.email, normalize_phone → crm.phone, form.request → crm.note. Поле без владельца лучше не переносить автоматически.
Сначала запишите событие в журнал, затем нормализуйте данные, проверьте обязательные поля и только потом вызывайте Create/Update. Для каждого запуска храните source_event_id и target_record_id.
- Тестируйте пустое поле, повторный webhook и недоступный API.
- Не выдавайте интеграции права на удаление, если ей нужен только create/update.
Как искать ошибку за пять минут
Откройте run log и проверьте цепочку: событие получено, данные распарсились, правило прошло, API ответил, target_record_id сохранён. Если есть только итоговая ошибка без входа и ответа API, логирование настроено слишком поздно.
Тестирую повторную доставку и недоступную CRM
Отправьте один и тот же webhook дважды, затем отключите CRM перед шагом Create/Update. Правильный результат: второй запуск находит `source_event_id`, а сбой сохраняет вход, ответ API, retry_count и срок следующей попытки. Если повторить безопасно нельзя, остановите интеграцию до выдачи боевых прав.
Сделайте отдельный маршрут `failed → retryable → retried/needs_human`. Для каждого запуска сохраняйте `target_record_id` только после подтверждённого ответа CRM. Это позволяет отличить «запись не создана» от «запись создана, но ответ потерялся».
Что должно измениться после настройки
Файлы, CRM, календарь и почта связаны предсказуемо, а ошибка не превращается в тихую потерю данных.

Где интеграции теряют данные без громкой ошибки
Подключать сервисы без карты владения данными.
Использовать один глобальный ключ с правами администратора.
Доверять разным форматам дат и enum.
Считать успешным запуск, который просто не показал ошибку.
Когда связь систем нужно проектировать как продукт
Привлекайте специалиста, если интеграция затрагивает деньги, несколько источников истины, чувствительные данные или высокую частоту событий.
Что спросить у интегратора до подключения
Кому подходит этот способ работы с связь AI с бизнес-системами?
Интеграция начинается не с кнопки Connect. Сначала решите, какое событие переносит какие поля, кто владеет данными и что происходит при повторе или ошибке.
С чего начать, если всё пока делается вручную?
Нарисуйте карту event → source → transform → target → owner и укажите для каждого поля направление, формат и право записи.
Как проверить, что настройка не навредит?
Проверьте повтор webhook, пропущенное поле, истёкший токен, таймаут и ответ API с неожиданной структурой.
Что делать при непонятном результате?
Сохраните событие в очередь повторной обработки с run_id и причиной сбоя; не запускайте бесконечные ретраи.







