Готовый модуль закрывает популярные направления: перевозчик, платежный шлюз, знакомая CRM. Далее начинается зона, где коннектора под вашу пару систем не существует, и обмен приходится писать.
Смета здесь определяет чужую сторону, а не нашу. Есть ли у него тестовый контур, сообщает ли он об изменениях вебхуком, имеет ли запись идентификатор, по которому его узнают во второй раз, и отличает ли он отказ от успеха. Тот же обмен на подготовленном интерфейсе занимает неделю, а на интерфейсе, который во что бы то ни стало соответствует коду 200 и пустому телу, — втрое больше.
Поэтому начинаем не с кода, а с разведки: дергаем методы и смотрим, что интерфейс умеет на самом деле. Срок работ после нее – 7–17 рабочих дней. Стоимость называем, когда увидим чужой API, а не по описанию задачи.
очередь с повторами, идемпотентный ключ, оповещение
Если чужой сервис не ответил
сверка количества записей на двух сторонах двумя методами
Прием работы
Этапы работы
Прозрачные этапы с согласованием на каждом шагу
Общий срок:7–17 дней
1
Разведка чужого интерфейса
2–5 рабочих дней, бесплатно
Дергаем методы и проверяем восемь пунктов: документация, авторизация, вебхуки, лимиты, пагинация, идентификатор, поведение при ошибке, версионирование. На выходе – письменное заключение и черновик контракта обмена.
2
Контракт обмена
1–3 рабочих дня
Фиксируем в письменном виде: какие записи передаются, в какую сторону, с какой частотой, по какому идентификатору и что считается успехом. Именно этот документ затем закрывает спор о границах работы.
3
Прототип на тестовом контуре
2–5 рабочих дней
Первый рабочий обмен в одну сторону и один тип записей. Если контура у чужого сервиса нет, поднимаем заглушку с ответами по документации и отдельно проверяем ее на живых данных позже.
4
Поведение при сбоях
2–4 рабочих дня
Очередь с повторными попытками, идемпотентный ключ, журнал с телом запроса и ответа, маскировка персональных данных, оповещение ответственному. Тут же намеренно ломаем чужую сторону и смотрим, не появился ли дубль.
5
Сверка на живых данных
1–3 рабочих дня
Считаем записи на источнике и на приемнике двумя независимыми методами, объясняем каждое расхождение. Прогон идет в режиме, который считает изменения, но ничего не записывает, так ошибка идентификатора вылезает к первой записи.
6
Запуск и передача
1–2 рабочих дня
Переводим обмен на боевые ключи, включаем расписание и оповещения, проходим журнал с вашим человеком, отдаем репозиторий и инструкцию.
Технологии и интеграции
На чём строим и с чем это соединяется
Стек
REST с JSON – берем тот формат, который отдает чужую сторону, а не намного удобнее
XML и CSV – когда сервис живет на выгрузках, а не на запросах
Вебхуки с проверкой подписи; предел: у части сервисов их нет вообще
Опрос по расписанию через cron; предел: между циклами всегда есть окно различия
Идемпотентный ключ на операцию – защита от дублей при повторе
Очередь с повторными попытками и нарастающим отступлением
Журнал обмена в отдельной таблице с маскировкой персональных данных
Тестовый контур чужой системы, а в его отсутствие — локальная заглушка
OpenCart 3 и 4, WooCommerce, Next.js на стороне сайта
PHP, MySQL, Node.js
Git — ваш репозиторий
Интеграции
произвольный REST-API с документацией
вебхуки входящие и выходные
учетные системы 1С и BAS
KeyCRM и другие CRM по API
складские и ERP-системы
платежные шлюзы
API перевозчиков
маркетплейсы и прайс-агрегаторы
почтовые и SMS-сервисы
Telegram-бот для уведомлений
GA4 и Google Tag Manager
Что входит
Полный перечень работ и того, что вы получаете на выходе
Контракт обмена отдельным документом: какие записи, в какую сторону, с какой частотой и по какому идентификатору — за ним затем принимается работа
Обмен на том механизме, который реально есть у чужого сервиса: вебхуки с проверкой подписи там, где они есть, опрос по расписанию там, где их нет
Идемпотентный ключ на каждую операцию: повтор после сбоя обновляет имеющуюся запись, а не создает вторую
Очередь с повторными попытками и нарастающим отступлением — недоступность чужой стороны откладывает передачу, а не теряет ее
Журнал обмена с телом запроса и ответы, персональные данные замаскированы
Уведомление ответственное, когда очередь не разобралась за согласованное время
Сверка на живых данных двумя независимыми методами для передачи работы
Инструкция вашему человеку: где журнал, как перезапустить передачу руками, как отличить сбой чужой стороны
Выходцы в Git на вашей стороне – интеграцию может подхватить другой разработчик
Гарантия 30 календарных дней на выполненные работы
Когда эта услуга не подходит
Что не входит в работу — чтобы не было сюрпризов на сдаче
Лицензии, тарифы и комиссии чужого сервиса
Изменения на стороне чужой системы: если метода в API нет, добавить его может только владелец
Наведение порядка в ваших справочниках и слияние дублей – отдельный объем работ
Поддержка после гарантийного срока, включая переработку под новую версию чужого API
Хостинг и вычислительные мощности под обмен
Кому подходит
Ситуации, в которых эта услуга даёт результат
Сценарий 1 из 4
В маркете модуля под вашу пару систем нет
Отраслевая программа учета, узкий сервис бронирования, внутренняя система заказчика, самописный слог. Рынок расширений покрывает массовые направления, и чем более специфична система, тем меньше шансов найти готовое. Здесь интеграция пишется под конкретный интерфейс — и поэтому начинается с его разведки.
Разберём вашу ситуацию на бесплатном аудите
Сценарий 2 из 4
Модуль есть, но делает не то, что нужно
Передает половину полей, не умеет в обратное направление, создает новую запись вместо обновления существующего. Подгонять чужое расширение иногда дороже, чем написать обмен под свой контракт: в первом случае вы правите чужую логику вслепую, во втором – владеете ею.
Сценарий 3 из 4
Обмен уже есть, но никто не знает, работает ли он
Данные где-то расходятся, а журнала нет, поэтому разбор начинается с предположений. Мы меряем обе стороны и показываем, где теряется запись. Часто оказывается, что передача молча падает годами – статус ответа успешен, а тело пусто.
Сценарий 4 из 4
Каталог или заказ живут в нескольких системах сразу
Сайт, склад, кабинет менеджера, площадка. Каждая пара из них нуждается в договоренности об идентификаторе и направлении передачи. Наш кейс именно об этом: платформа рерайта описаний принимает каталоги из пяти площадок в четырех форматах, и ни одного готового коннектора под такую смесь не существует.
Написать интеграцию под ключ против того, чтобы ждать модуль от вендора
Чем этот вариант отличается от альтернативы
Ожидание готового модуляНаш подход
Когда появитсянеизвестно: вашей пары систем может не быть в планах вендора вообще7–17 рабочих дней после разведки, дата в договоре
Покрытие сценариято, что автор модуля считал типичным случаемровно ваши записи, поля и правила по контракту обмена
Поведение при сбое чужой стороныкак сделано внутри — снаружи не видно до первого инцидентаочередь с повторами, идемпотентный ключ, журнал, оповещение
Когда чужой API изменитсяждете обновления и того, что автор его выпуститправим мы, поломка видна в журнале того же дня
Владениелицензия и зависимость от автора модулявыходники ваши, репозиторий у вас
Деньгилицензия и абонплата, иногда ноль – если модуль бесплатный и подходитразовая разработка, далее только изменения на чужой стороне
Бесплатная разведка чужого интерфейса
К смете мы выясняем одну вещь: готова ли чужая сторона к обмену вообще. Часть запросов упирается не в код, а в то, что нужного интерфейса у сервиса просто нет – и узнать это к оплате выгоднее для обоих.
Что мы измеряем
Есть ли документация и совпадает ли она с поведениемМы не читаем описание, мы дергаем несколько методов и сверяем ответ с обещанным. Различие здесь – норма, и именно оно съедает дни на этапе разработки, если его не найти заранее.
Способ авторизацииПостоянный токен, OAuth или только сессия в браузере. Последнее означает, что публичного интерфейса нет: остается имитировать работу человека в кабинете и о хрупкости такого решения мы говорим к договору.
Вебхуки или опросыЕсли сервис сам сообщает об изменениях – обмен идет почти мгновенно. Если нет, мы опрашиваем его по расписанию, и между циклами остается окно, в которое обе стороны видят разное. Размер окна называем числом до старта.
Лимиты запросов и пагинацияСколько обращений в минуту разрешено и как отдается длинный список. Каталог на несколько тысяч позиций при жестком лимите выгружается не через минуты, и это влияет на расписание обмена, а не только на смету.
Стабильный идентификатор записиПо какому значению чужая система узнает тот же товар или заказ во второй раз. Без него повторная передача плодит дубли, и заметно становится, когда их уже сотни.
Что приходит в ответ на ошибкуПодходящий интерфейс отличает отказ от успеха. Непригодный отдает код 200 с пустым телом и внешне это выглядит как успешная передача. В магазине косметики, который мы мерили 31.07.2026, штатный фид и карта сайта отдавали ровно это – 200 и ноль байтов.
Тестовый контурМожно ли гонять обмен, не трогая боевые данные. Если контура нет, мы поднимаем заглушку на своей стороне – это дороже, и строка появляется в смете открыто.
Версионирование и предупреждение об измененияхИмеет ли интерфейс версии и сообщает ли владелец об изменениях заранее. Меняющий формат молча сервис делает интеграцию постоянным расходом — и знать это надо до старта.
Что вы получаете
Письменное заключение по восьми пунктам разведки: что интерфейс умеет, чего не умеет и где в нем дырки.
Черновик контракта обмена: какие записи, в какую сторону, с какой частотой и по какому идентификатору.
Оценку работ со сроком и перечнем того, что может выпасть из сметы.
Разговор на 40 минут по документу – с вашим разработчиком, если он у вас есть.
Срок: 2–5 рабочих дней
Почему это бесплатно
Потому что самая дорогая ошибка здесь – начать разработку под интерфейс, который к обмену не готов. Несколько дней разведки дешевле недели работы, которую придется выбросить.
Что дальше
После разведки – сумма, срок, договор. Если интеграция под вашу задачу невозможна или не окупается, вы услышите это первым письмом и счета не будет.
Короткая форма: контакт и адрес сайта
Не нашли свой случай?
Опишите, как это устроено у вас, — ответим, подходит ли «Интеграция под ключ: чужой API, обмен данными, вебхуки» и что это значит в вашей ситуации. Без брифа и без звонка: один вопрос, один ответ.
Договор, акт и гарантия 30 дней
На каждый проект письменный договор: объём, сроки, сумма, порядок приёмки. После сдачи — акт и счёт, затем 30 календарных дней гарантии.
ФОП и безналичный расчёт
Исполнитель — зарегистрированный ФОП. Оплата на счёт с закрывающими документами.
Права и доступы — ваши
Код, дизайн и материалы переходят к вам после полной оплаты. Домен, хостинг, репозиторий оформляем на вас.
Портал клиента вместо переписки
Во время работы вы получаете доступ к порталу: договоры, счета, акты и статус проекта в одном месте.
Заказчики из Европы
Среди работ — проекты для Норвегии, Болгарии, Молдовы и Испании.
Цифры, которые можно проверить
Каждый кейс в портфолио — со ссылкой на живой сайт и техническим замером.
Сначала аудит, потом сумма
Прайса на сайте нет намеренно: объём одной и той же работы у двух клиентов отличается кратно.
Говорим «нет», когда не уверены
Если задача не наша или срок нереальный — скажем сразу.
Что влияет на стоимость
Почему две одинаковые на вид задачи считаются по-разному
Готовность чужой стороныГлавная составляющая сметы и зависит она не от нас. Документированный интерфейс с тестовым контуром и вебхуками – нижняя граница. Интерфейс без описания, без контура и без версий – верхняя, потому что формат приходится восстанавливать из сетевых запросов кабинета и проверять на заглушке.
Количество типов записейПередавать только заказы – одна работа. Товары, остатки, цены, статусы и возврат — пять отдельных договоренностей о полях и идентификаторах, каждую из которых нужно сверить.
Направление обменаОдин поток дешевле двух примерно вдвое. В обратном направлении добавляется конфликт: если запись сменили с обеих сторон одновременно, кто-то должен решить, чья версия главная, и это решение ваше, а не наше.
Объем и частотаСотня сделок в сутки проходит любым способом. Десятки тысяч позиций ежечасно упираются в лимиты чужого сервиса, и тогда появляется пагинация, батчи и расписание – отдельная строка работ.
Состояние ваших данныхЕсли общего идентификатора между системами нет, то обмен начинается с сопоставления справочников руками. Эта работа не входит в разработку и оценивается раздельно.
Требования к отказоустойчивостиОчередь, повторы, журнал и оповещение – это примерно четверть трудоемкости. Отказаться от них можно, но тогда первый же сбой чужой стороны означает тихую потерю данных.
Кейсы
Задачи и результат в цифрах — все показатели сняты нашим замером
собственная SaaS-платформа рерайта описаний товаров, принимает каталоги с пяти площадок
Задача
Принимать выгрузку каталогов из Prom.ua, Rozetka, Хорошоп, OpenCart и WooCommerce в форматах XML, YML, CSV и Excel – готового коннектора под такую смесь нет, каждая площадка отдает свое.
Решение
Приложение на Next.js с собственным разбором четырех форматов, настройкой стиля текстов и SEO-структурой заголовков. Оплата - безналичный перевод на IBAN ФЛП, минимальное пополнение 50 грн. Разметка JSON-LD из SoftwareApplication, Offer, Organization, WebSite и FAQPage подключен PWA-манифест.
Результат
Измерение 31.07.2026: первый ответ 220,6 мс, полная загрузка 329,8 мс – самый быстрый отзыв среди 16 измеренных сайтов портфолио, HTML 140,8 КБ, 8 публичных страниц. Предел атрибуции называем прямо: сам импорт каталогов извне не верифицируется, мы мерили то, что видно со стороны посетителя. То же измерение дало два дефекта: robots.txt объявляет /sitemap.xml, который отдает 404, и на лендинге нет ни одного счетчика аналитики.
интернет-магазин профессиональной косметики, каталог более 5 тыс. позиций
Задача
Подсчитать живой каталог там, где штатные источники данных магазина не отдают ничего.
Решение
Считали штатным поиском платформы с пустым запросом постранично, потому что /sitemap.xml и товарный фид платформы соответствуют коду 200 с нулевым телом.
Результат
5 561 товар - 55 страниц по 100 позиций плюс 61 на последний, измерение 31.07.2026. Первый ответ – 801,2 мс при 153,8 КБ разметки. Для интеграции главное здесь другое: два штатных источника данных отдают успешный код и пустое тело, то есть статус ответа не доказательство того, что данные приехали. То же измерение показало, что счетчика аналитики на главной нет ни одного.
оптовый B2B-каталог товаров из Китая, почти 6 тыс. позиций
Задача
Сверьте реальный объем каталога двумя независимыми источниками, прежде чем строить на нем выгрузку.
Решение
Считали двумя способами: штатным поиском платформы постранично и по картам сайта обеих языковых версий.
Результат
5 830 товаров: поиск дал 58 страниц по 100 позиций плюс 30, карты сайта — по 6 234 адреса на каждый из двух языков, итого 12 468. Первый ответ 506,9 мс при 333,1 КБ разметки, измерение 31.07.2026. Разницу между 5830 позициями каталога и 6234 адресами карты сайта нужно разобрать до запуска обмена, а не после первого расхождения в остатках.
Что нужно от вас
Без этого не начнём — лучше подготовить заранее
1Документацию чужого API или доступ в кабинет, из которого она видна.
2Ключ к тестовому контуру — именно тестовый: боевые данные на этапе разработки нам не нужны.
3Контакт технического человека на стороне чужого сервиса с правом ответить на лимиты и формат.
4Список записей и полей, которые действительно нужны: «все, что есть» превращает обмен в постоянный расход.
5Правило идентификации: по какому значению запись узнается вторично.
6Один человек с вашей стороны с правом согласовать контракт обмена и принять работу.
Если чего-то из этого нет — скажите, подскажем, как собрать или сделаем сами отдельной задачей.
Частые вопросы
Что спрашивают чаще всего — с конкретными ответами
Как понять, что с нашим сервисом интеграция вообще не возможна?
Отвечает на это не описание на сайте вендора, а сам интерфейс. Мы дёргаем несколько методов и смотрим на восемь вещей: документация, авторизация, вебхуки, лимиты, пагинация, идентификатор записи, поведение при ошибке, версионирование. Частый стоп-сигнал — авторизация только сессией браузера: публичного интерфейса нет, и технически остается имитировать работу человека в кабинете. Мы такое делаем, но говорим прямо, что решение хрупкое и ломается от смены верстки кабинета.
Документации нет вообще – это приговор?
Нет, но это другой объем работ и другой риск. Когда описания нет, формат восстанавливается из сетевых запросов кабинета: видны адреса, состав полей и вид ответа. Прочесть это несложно. Проблема более глубокая: никто не обязан держать такой интерфейс неизменным, и владелец может переделать его завтра, никого не предупредив. Мы пишем этот риск в договор отдельной строкой, чтобы вы принимали решение до первой поломки, а не после нее.
Почему успешный ответ не означает, что данные переданы?
Ибо код ответа описывает транспорт, а не результат. Подходящий интерфейс отличает отказ от успеха и объясняет, что именно не так. Непригодный отдает 200 и пустое тело во что бы то ни стало. Это не теория: в магазине профессиональной косметики, который мы мерили 31.07.2026, штатная карта сайта и товарный фид платформы соответствовали коду 200 с нулевым телом — оба источника формально работали. Поэтому успехом мы считаем разобранный ответ с ожидаемыми полями, а не сам факт соединения.
Вебхуки или опрос по расписанию?
Вебхуки, когда они есть: чужая система сама сообщает об изменении, данные расходятся на секунды. У большинства сервисов их нет, и тогда остается опрос раз в определенный промежуток. Главное здесь не механизм, а названная цифра: между циклами есть окно, в которое обе стороны видят разное. Для остатков это означает, что товар может быть куплен дважды. Размер окна согласовываем к старту и пишем в контракт обмена вместо слова «мгновенный».
Что будет, когда чужой сервис лежит?
Операция не должна исчезнуть – требование, от которого мы не отступаем. Передача становится в очередь и повторяется с нарастающим отступлением, пока не пройдет. Чтобы повторы не наплодили дублей, каждая операция несет идемпотентный ключ: чужая система узнает ее как ту же и обновляет имеющуюся запись. Если очередь не разобралась в согласованное время, ответственный получает уведомление. Без этих трех вещей сбой на чужой стороне становится тихой потерей данных, которую замечают через недели.
Как проверить, что обмен работает верно, а не просто работает?
Сверка двумя независимыми методами, и делаем мы ее до передачи работы, а не после жалобы. Пример по измерению 31.07.2026: в оптовом B2B-каталоге товаров из Китая объем считали дважды — штатный поиск платформы дал 58 страниц по 100 позиций плюс 30, то есть 5 830 товаров, а карты сайта двух языковых версий дали по 6 232 адреса. адресов, и сойтись они не обязаны — обязана быть разъяснена разница. Тот же порядок действий переносим на прием обмена: счет на источнике, счет на приемнике, разбор различия.
Сколько длится работа и почему сумма дней по этапам больше срока?
7–17 рабочих дней после разведки; сама разведка длится 2–5 дней, она бесплатна и в срок не входит. Нижний предел – одно направление передачи и один тип записи на документированном API с тестовым контуром. Верхняя — обмен в обе стороны с несколькими типами записей и обратными статусами. Этапы частично идут параллельно: очередь и журнал мы пишем, пока ждем доступа или ответа технического человека на чужой стороне.
Интеграция сломается, когда они изменят свой API?
Когда-то да, и планировать это честнее, чем обещать вечную работу. Поэтому обмен пишется так, чтобы поломка была заметна: журнал показывает, какой метод начал соответствовать иначе, а уведомление приходит в день сбоя, а не в день, когда не сошелся отчет. Гарантийные 30 дней охватывают ошибки с нашей стороны. Изменения на чужой стороне – новая работа с отдельной оценкой; сервисы с версионированием дают на нее время, сервисы без него не дают.
Есть ли у вас кейс с нашим сервисом?
Скорее всего, нет, и придумывать его мы не станем: чужой обмен извне не проверяется. Показываем, что действительно измерили. Ближе всего к задаче – собственная платформа рерайта описаний товаров: она принимает каталоги из пяти площадок в четырех форматах, готового коннектора под такую смесь не существует. Границу называем открыто: сам импорт извне не верифицируется, мы мерили видимое – 220,6 мс до первого ответа при 140,8 КБ разметки. Ваш интерфейс разберем так же конкретно, до сметы.
Код и ключи остаются нашими?
Да. Ваш репозиторий, выходцы передаются вместе с работами и инструкцией: где журнал, как перезапустить передачу руками, как отличить сбой чужой стороны от своей. Ключи доступа оформляются на вас, а не на подрядчика, и лежат в переменной среде, а не в коде. Интеграция, которую может сопровождать только ее автор, это зависимость, и продавать такое мы не хотим.
Отправьте ссылку на документацию чужого API или скажите, что ее нет.
В ответ – заключение по восьми пунктам разведки, черновик контракта обмена и оценка работ со сроком. Если интерфейс к обмену не готов, вы услышите это первым письмом.
Из измеренных кейсовИзмерение 31.07.2026: первый ответ 220,6 мс, полная загрузка 329,8 мс
Прайса на сайте нет намеренно: объём той же работы у двух клиентов отличается в разы, и цифра «от» в этом случае ничего не объясняет. Сначала бесплатный аудит — считаем ваши страницы, дубли и скорость, — потом называем сумму и срок и фиксируем их в договоре.