Сайт в разработке Наполняем разделы и правим ошибки — что-то может выглядеть или работать не так. Если заметили — позвоните или напишите.

Интеграции сайта: как связать его с CRM, оплатой, складом и не сломать всё при первом заказе

Разбираем, что такое интеграции сайта с внешними сервисами, какими они бывают, как устроены технически и почему именно на этом этапе проекты чаще всего выходят за сроки и бюджет.

Раздел: Разработка

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

Что считается интеграцией, а что просто «вставить код»

Путаница начинается с терминов. Клиент говорит «нам нужна интеграция с CRM», имея в виду, что заявки должны падать в систему. Разработчик уточняет — и выясняется, что задач там на самом деле три: создавать сделку, подтягивать статус обратно на сайт и не плодить дубли, если человек оставил заявку дважды.

Полезно разделять два принципиально разных случая.

Подключение скрипта. Вы вставляете на сайт код счётчика аналитики, виджета онлайн-чата, карты или формы стороннего сервиса. Данные при этом фактически передаются в чужую систему, а сайт выступает площадкой. Это делается быстро, риски минимальны, а от разработчика требуется корректно разместить код и не сломать скорость загрузки.

Обмен данными между системами. Сайт отправляет данные во внешний сервис и получает ответ, на который как-то реагирует: показывает результат, меняет статус заказа, блокирует оформление. Здесь появляется логика, обработка ошибок, безопасность и вопросы «что делать, если сервис не ответил». Это уже разработка, а не настройка.

Большинство конфликтов на проектах возникает из-за того, что заказчик оценивает задачу по первому сценарию, а работа идёт по второму.

Какие интеграции нужны чаще всего

Набор зависит от типа сайта, но повторяющихся сценариев не так много.

  • CRM. Заявки с форм, звонков и чатов попадают в систему автоматически, с указанием источника. Менеджер не переписывает контакты руками, а руководитель видит, откуда пришёл клиент.
  • Платёжные сервисы. Оплата картой, рассрочка, выставление счетов. Сайт формирует заказ, передаёт сумму, получает от банка подтверждение и только после него меняет статус.
  • Учётные системы и товарный учёт. Каталог, цены, остатки, статусы заказов. Задача — чтобы на сайте не продавалось то, чего нет на складе.
  • Службы доставки. Расчёт стоимости и сроков, выбор пункта выдачи на карте, создание накладной.
  • Почтовые и SMS-рассылки. Подтверждение заказа, восстановление пароля, уведомления, маркетинговые письма.
  • Мессенджеры и уведомления. Дублирование заявок менеджеру, чтобы не ждать, пока он откроет почту.
  • Аналитика и системы сквозной статистики. Передача событий: отправка формы, добавление в корзину, оплата.
  • Авторизация через внешние сервисы. Вход без пароля, привязка аккаунта.
  • Отраслевые системы. Запись на приём, бронирование, расчёт по калькулятору поставщика, выгрузка объявлений на агрегаторы.
Схема с сайтом в центре и расходящимися стрелками к CRM, платёжному сервису, службе доставки, складской системе и мессенджеру.
Схема с сайтом в центре и расходящимися стрелками к CRM, платёжному сервису, службе доставки, складской системе и мессенджеру.

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

Как это устроено технически

Понимать детали заказчику не обязательно, но общий принцип экономит много нервов при обсуждении сроков.

API

Самый распространённый способ. У сервиса есть документированный набор команд: создать сделку, получить список товаров, рассчитать доставку. Сайт отправляет запрос, получает ответ. Всё предсказуемо ровно до тех пор, пока документация соответствует реальности, а у вас есть доступы и тестовая среда.

Вебхуки

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

Обмен файлами

Устаревший, но живучий способ: учётная система выгружает файл с товарами, сайт его забирает и обновляет каталог по расписанию. Работает, когда прямого API нет. Минус — данные обновляются не мгновенно, а по расписанию, и при большом каталоге выгрузка становится тяжёлой.

Готовые модули и коннекторы

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

Где всё ломается: типичные сценарии

Интеграции — самая частая причина того, что проект сдаётся позже запланированного. Причины обычно не в коде.

Нет доступов. Реквизиты для тестовой среды платёжного сервиса, ключ API, учётная запись в CRM с нужными правами. Пока этого нет, разработчик может написать код, но не может проверить, что он работает. Ожидание доступов легко съедает недели.

Сервис работает не так, как написано в документации. Отдаёт данные в другом формате, ограничивает число запросов, молча игнорирует часть полей. Выясняется это только на практике.

Никто не описал бизнес-логику. Что происходит, если товар закончился между добавлением в корзину и оплатой? Если клиент оплатил, но заказ не создался? Если в CRM уже есть контакт с таким телефоном? Технически всё это решаемо, но решения нужно принимать заранее — иначе система поведёт себя случайным образом.

Не продумана обработка ошибок. Внешний сервис недоступен — и что видит пользователь? Белый экран, вечный спиннер или понятное сообщение и возможность оформить заказ другим способом? Правильный вариант: сайт продолжает работать, а заявка сохраняется локально и уходит позже.

Несогласованность данных. На сайте одни названия товаров, в учётной системе — другие. Категории не совпадают, единицы измерения разные. Интеграция не наведёт порядок в данных — она только перенесёт беспорядок быстрее.

Экран оформления заказа с сообщением об ошибке платёжного сервиса и предложением альтернативного способа оплаты.
Экран оформления заказа с сообщением об ошибке платёжного сервиса и предложением альтернативного способа оплаты.

Изменение на стороне сервиса. Внешние системы обновляют версии API и отключают старые. Интеграция, работавшая год, однажды перестаёт работать без каких-либо действий с вашей стороны. Это аргумент в пользу поддержки после запуска.

Безопасность и скорость: побочные эффекты, о которых забывают

Каждая интеграция — это канал, по которому данные покидают сайт. Значит, к нему применимы те же требования, что и к остальной системе.

Ключи и пароли от внешних сервисов не должны лежать в открытом виде в коде или в репозитории. Доступы выдаются с минимально необходимыми правами: если сервису нужно только создавать сделки, ему не нужен доступ на удаление. Данные, которые передаются наружу, должны ограничиваться необходимым — незачем отправлять в сторонний виджет больше, чем ему требуется для работы.

Отдельная история — влияние на производительность. Сторонние скрипты загружаются с чужих серверов, и если такой сервер отвечает медленно, тормозить будет ваш сайт. Виджет чата, карта, пиксели аналитики, всплывающие формы — по отдельности мелочь, вместе иногда половина веса страницы. Решение простое: подключать только то, что действительно используется, и загружать тяжёлые виджеты отложенно, после основного контента.

Серверные интеграции нельзя выполнять синхронно там, где пользователь ждёт ответа. Если отправка данных в CRM занимает несколько секунд, форма не должна «висеть» всё это время. Заявка сохраняется, пользователь видит подтверждение, а передача во внешнюю систему идёт фоном.

Что подготовить заказчику и как это оценивается

Интеграции сложно оценить «в целом» — цифра появляется только после того, как понятно, с чем именно и в какую сторону нужно связываться. Чтобы разговор был предметным, от заказчика нужны конкретные вещи.

  1. Список систем. Точные названия и версии. «Наша CRM» — недостаточно, разные системы устроены по-разному.
  2. Направление обмена. Только из сайта наружу, только внутрь или в обе стороны.
  3. Состав данных. Какие поля передаются, какие обязательны, как называются в каждой системе.
  4. Частота обновления. Мгновенно, раз в час, раз в сутки. От этого зависит и архитектура, и нагрузка.
  5. Доступы. Учётные записи, ключи, тестовая среда. И контакт человека, который отвечает за эту систему на вашей стороне.
  6. Сценарии сбоев. Что считается допустимым, если внешний сервис недоступен.

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

И последнее: интеграции стоит закладывать в проект на этапе проектирования, а не после сдачи дизайна. От того, куда и как уходят данные, зависят поля в формах, шаги оформления заказа, структура каталога и логика личного кабинета. Добавить это в готовый сайт можно почти всегда, но дороже и дольше, чем предусмотреть заранее.

Заявка

Расскажите о проекте

Свяжемся в течение рабочего дня, зададим уточняющие вопросы и предложим варианты. Без навязчивых звонков.

Форма обратной связи

Отвечаем в рабочие дни с 10:00 до 19:00

Написать в Telegram