amoCRM: как работает коннектор

Скачать .md

В этой статье вы узнаете, как коннектор amoCRM выгружает данные в хранилище ROMI center: что именно попадает в таблицу, с какой периодичностью идёт выгрузка и как устроена перезапись прошлых дней. Полный список полей — в статье amoCRM: описание выгружаемых полей.

Что попадает в таблицу: события по сделкам

Коннектор выгружает события amoCRM, а не карточки: смену этапа сделки и другие изменения. По каждому событию он забирает саму сделку и её главный контакт, и в таблицу пишется одна строка.

Важно

Воронки и этапы в настройках не выбираются: коннектор берёт события по всем сделкам, а на шаге «Выбор полей» отмечаются только поля. У одной сделки в таблице по строке на каждое её изменение, попавшее в окно выгрузки — у каждой строки своя воронка и свой этап, те, что были у сделки в момент этого события.

Повторное попадание на тот же этап той же воронки по умолчанию считается дублем и в таблицу не попадает. Настройка «Учитывать повторные переходы в этап» добавляет к сравнению дату события: с ней каждый возврат сделки на пройденный этап даёт отдельную строку.

Поля сделки и поля её контакта лежат в одной строке одной таблицы — отдельных таблиц под контакты, компании или другие сущности amoCRM у коннектора нет. Значения полей берутся на момент выгрузки, то есть показывают карточку такой, какой её увидел коннектор. Исключение — воронка и этап: они пишутся такими, какими были в момент события.

Периодичность

Коннектор опрашивает amoCRM каждые 30 минут (для отдельных аккаунтов расписание настраивается индивидуально) и заливает собранное в таблицу каждую минуту. Если данных накопилось за несколько дней — коннектор стоял или был сбой, — он догоняет их посуточно: за один прогон берётся ограниченное окно, остальное подхватят следующие запуски.

За какой период забираются данные

Обычный прогон берёт данные с момента, на котором остановился прошлый прогон (курсор хранится по подключению), по текущий момент. Первый прогон нового подключения — с даты создания подключения минус 7 дней (если подключение создано раньше вчерашнего дня, отсчёт начинается с сегодняшнего — иначе первая загрузка растянулась бы на месяцы и задержала бы остальные подключения).

Примечание

Даты строк пересчитываются в часовой пояс из настроек подключения — если он указан неверно, события съедут на несколько часов и могут попасть в соседние сутки. Исключение — колонка «Дата события», если вы её выбрали: она пишется в UTC, поэтому со служебной датой строки может расходиться на величину смещения.

Как сохраняет данные

  • Куда: хранилище ROMI center на движке ClickHouse.
  • Имя таблицы: amocrm_<поддомен аккаунта>_<id подключения> (например amocrm_mycompany_412).
  • Один аккаунт можно подключить несколько раз — например, чтобы выгружать разные наборы полей. Каждое подключение пишет в свою таблицу и опрашивает amoCRM само по себе, то есть нагрузка на API аккаунта растёт кратно числу подключений.
  • Структура таблицы: движок MergeTree, сортировка по rc_data_id. Разбиения на партиции нет.
  • Структура догоняется, а не пересоздаётся. Новое поле, выбранное в настройках, добавляется командой ALTER TABLE … ADD COLUMN. Колонки никогда не удаляются: если снять поле в настройках, колонка останется со старыми значениями, а новые строки будут писаться в неё пустыми.
  • Повторная заливка того же события не плодит дубли. У каждой строки есть rc_data_id — номер события в очереди ROMI. При повторной заливке строка с тем же rc_data_id удаляется и вставляется заново, а дата первой заливки (rc_created_at) переносится со старой строки.
  • Одинаковые события отсеиваются ещё до таблицы. Событие считается повтором, если по тому же подключению уже есть событие с той же сделкой, тем же этапом, той же воронкой и тем же назначением (а при включённой настройке «Учитывать повторные переходы в этап» — ещё и с той же датой события). Если значения пользовательских полей отличаются, повтором событие не считается.

Перезапись прошлых дней

Сделки в amoCRM меняются задним числом, поэтому коннектор регулярно перечитывает недавние дни. Глубина — настройка «Перезагрузка прошлых дней»: 0, 1, 3 (по умолчанию), 7 или 14. При нуле автоматическая перезагрузка не запускается.

Автоматическая перезагрузка за выбранное число дней назад по вчерашний день удаляет из таблицы строки этого периода, эти же события — из очереди, и ставит на каждый день отдельное задание на повторный сбор. Функция «Загрузить исторические данные» в меню подключения работает за любой период: данные догружаются, уже загруженные события не задваиваются.

Важно

Галочка «Удалить ранее загруженные данные за период» у amoCRM удаляет таблицу целиком и очищает всю очередь событий подключения — не только выбранный период. После такой перезагрузки в таблице останется только перезагруженный период. Ставьте галочку, только если готовы перезагрузить всю историю.

Дополнительные настройки

НастройкаЧто делает
Часовой пояс аккаунтаВ нём читаются даты событий. Ставится один раз при настройке: при смене старые строки пересчитаны не будут.
Перезагрузка прошлых дней (0 / 1 / 3 / 7 / 14)Глубина ежедневной перезаписи. Больше дней — больше нагрузка на API и дольше прогон.
Учитывать повторные переходы в этапВключено — каждый возврат сделки на пройденный этап даёт отдельную строку, и данных становится заметно больше. Выключено (по умолчанию) — учитывается только первое попадание на этап.

Набор выгружаемых полей задаётся на шаге «Выбор полей»: список приходит из вашего аккаунта amoCRM — стандартные поля плюс пользовательские поля сделок и контактов. Поле, добавленное позже, начинает заполняться со следующего прогона; задним числом оно появится только после перезагрузки.

Примечание

Конвертации валют в хранилище ROMI center нет. Колонки вида <поле>_converted_<валюта> создаются только у подключений с приёмником «ClickHouse»; в хранилище ROMI center суммы выгружаются как есть.

Технические поля

КолонкаЧто внутри
rc_data_idНомер события в очереди ROMI. По нему строка обновляется при повторной заливке. Заполнен всегда, проиндексирован.
rc_created_atДата и время события (если его нет — момент заливки). При перезаливке того же события сохраняется прежнее значение.
rc_created_dateТа же дата в UTC, без времени. По ней ночная перезагрузка удаляет строки за период.

Других служебных колонок нет: rc_updated_at, rc_import_id и rc_datasource, которые встречаются у рекламных коннекторов, здесь не создаются.

Покажем, из чего собирается ваша аналитика

За 30 минут разберём ваши источники и соберём схему: что подключается, что считается само, где цифры разойдутся.

  • Что у вас уже собирается и чего не хватает, чтобы увидеть выручку по каналам
  • Порядок подключения: что заработает за день, а что придётся настроить руками
  • Готовые отчёты на живых данных — расход и выручка рядом, когорты, RFM
Записаться на демо
Дашборд ROMI center со сквозной аналитикой