В этой статье вы узнаете, как коннектор «Своя CRM» принимает события из вашей системы — CRM, личного кабинета, биллинга — в хранилище ROMI center: как отправлять запросы на вебхук, как события попадают в таблицу и что настраивается в мастере. Типы полей и правила записи значений — в статье Своя CRM: описание выгружаемых полей.
Что выгружается: одна таблица, строка на каждое событие
Коннектор ничего не запрашивает сам: ваша система отправляет запрос на вебхук ROMI center, и каждый запрос становится строкой таблицы. Поля и их типы вы задаёте в мастере.
| Что присылает ваша система | Что в таблице |
|---|---|
| Один запрос на вебхук | Строка |
| Ключ верхнего уровня JSON, заданный в настройках | Колонка |
| Ключи, которых нет в настройках | Не попадают в таблицу |
Имя таблицы — customcrm_<название подключения транслитом>_<id подключения>, например customcrm_billing_12. У подключений, созданных до 30.06.2025, имя другое: custom_db_data_<токен>.
- Один запрос — одно событие. Массив событий в одном запросе не разбирается: настроенных ключей верхнего уровня в нём нет, и присланные данные в таблицу не попадут.
- Берутся только ключи верхнего уровня. Вложенный объект целиком пишется в текстовую колонку строкой JSON; достать поле изнутри него нельзя.
- Перезагрузки нет. В таблице только то, что прислала ваша система: повторить события можно лишь повторной отправкой с вашей стороны.
Приём и отправка
| Что происходит | Когда |
|---|---|
| Приём вебхука | сразу: событие сохраняется в промежуточный буфер ROMI |
| Запись в таблицу | раз в 2 минуты |
| Повтор событий с ошибкой записи | раз в 30 минут, до 5 повторов на событие |
Обычно событие оказывается в таблице в течение нескольких минут после приёма.
Адрес вебхука и токен показаны в мастере на шаге «Доступ». Токен можно передать в адресе (?token=…, так он уже вставлен в показанный URL) или полем token в теле запроса. Поля данных — в теле, JSON или обычной формой, либо параметрами адреса.
Важно
JSON разбирается только с заголовком вида Content-Type: application/json — без него поля не прочитаются, и присланные значения в таблицу не попадут.
Ответ вебхука выглядит так: {"status": "ok", "matched_statuses": N, "created_rows": […]}.
Важно
При неверном токене или удалённом подключении ответ тоже status: ok, только matched_statuses: 0, и ничего не сохраняется — проверяйте это число. Запрос без token получает ошибку 400.
Важно
Запрос больше 64 КБ не сохраняется: на больший запрос вебхук ответит ошибкой 500. Учтите, что буква кириллицы занимает 2 байта.
Примечание
Пауза не теряет события: вебхук принимает их в буфер, а в таблицу они уйдут после снятия паузы.
Важно
Если хранилище недоступно, события помечаются ошибкой и повторяются раз в 30 минут. После пяти неудачных повторов — примерно через два с половиной часа — они больше не отправляются.
Примечание
Истёкшая лицензия запись не останавливает, а только задерживает: событие записывается позже, чем обычно, — иногда через десятки минут.
Что попадает в таблицу
- Каждое событие — отдельная строка. Ключ строки
rc_data_id— номер события в буфере ROMI, поэтому одинаковыйidв присланных данных строки не затирает. До 23.07.2026 ключом был присланныйid, и событие с тем жеidстирало предыдущее. - Событие без единого настроенного поля в таблицу не пишется. Исключение — подключения с полем
event_date: у них такое событие запишется строкой, где заполнено только это поле.
Важно
Повторы отсеиваются по содержимому. Событие, у которого значения всех настроенных полей совпадают с более ранним, в таблицу не попадает. Сравнение идёт с событиями подключения за последние полгода. Поэтому держите среди полей идентификатор события или время: иначе, например, два одинаковых платежа одного клиента склеятся в одну строку.
Важно
Тестовые события, отправленные до сохранения мастера, пропадают: запись раз в 2 минуты застаёт подключение ещё без полей. Отправляйте тестовые запросы после сохранения настроек.
Как сохраняет данные
- Куда: хранилище ROMI center на движке ClickHouse.
- Структура таблицы: движок
MergeTree, сортировка поrc_data_id, без партиций. У старых таблиц структура может отличаться. - Колонки добавляются на ходу. Новое поле из настроек появится колонкой при очередной записи и заполнится только у новых событий — уже записанные не пересчитываются. Колонки не удаляются: снятое поле остаётся колонкой и дальше заполняется пустыми значениями. Смена типа у сохранённого поля колонку не меняет: значения приводятся по новому типу, а тип колонки остаётся прежним.
- Имя колонки — ключ из вебхука транслитом: «Почта» →
pochta,client_email→client_email. У подключений, созданных до нового мастера, колонкой служит сам ключ без транслита. У сохранённых полей имя при редактировании не меняется, а другой ключ — это новое поле и новая колонка. - Удаление подключения удаляет и таблицу из хранилища.
Дополнительные настройки
| Шаг мастера | Что задаётся |
|---|---|
| «Доступ» | Название источника — из него собирается имя таблицы — и готовые токен и URL вебхука. Токен и URL при редактировании не меняются |
| «Выбор полей» | Поля по одному: «Имя поля (как в вебхуке)» — ключ JSON, «Название в ROMI center» и тип. Нужно хотя бы одно поле |
| «Дополнительные настройки» | «Часовой пояс вашей CRM», по умолчанию Москва — см. описание полей |
| Приостановить выгрузку | События копятся в буфере и уходят в таблицу после снятия паузы |
Важно
Название источника поменять можно, но у подключений, созданных после 30.06.2025, запись тогда пойдёт в новую таблицу: прежняя останется с накопленными данными и при удалении подключения уже не удалится.
«Название в ROMI center» хранится только в настройках: в «Просмотре данных» подписью колонки служит ключ из вебхука.
Технические поля
| Колонка | Что внутри |
|---|---|
rc_data_id | Номер события в буфере ROMI. У таблиц, созданных до 23.07.2026, — присланный id, если он был |
rc_created_at | Когда строка впервые записана в хранилище, по Москве |
Поле, чья колонка называется event_date, особенное. В него пишется не присланное значение, а момент приёма события вебхуком по Москве; у типов «Дата» и «Дата и время» он ещё и сдвинут на пояс подключения. Оно заполняется у каждого события, даже если ключа нет в запросе. В подключениях из старой формы такое поле обычно есть и чаще всего открывается в мастере как «Текст»: время в нём московское, без сдвига. При отсеве повторов сравнивается присланное значение этого ключа, а не время приёма.
В «Просмотре данных» служебные колонки скрыты, в самой таблице они есть.
