Занимаюсь настройкой интернет-магазинов на Tilda и WordPress не первый год, и вопрос доставки всплывает почти в каждом проекте. Интеграция СДЭК и Почты России в интернет-магазин - это не один переключатель в настройках корзины, а набор отдельных решений: какой API дергать для расчёта тарифа, где хранить статусы посылок, как передавать трек-номер обратно в CRM и что делать, если клиент выбрал пункт выдачи вместо курьера. В статье разбираю варианты подключения обеих служб на реальных кейсах - от плагина для WooCommerce до связки CDEK API с n8n и Telegram-ботом для менеджера.
Зачем магазину подключать сразу две службы доставки
На практике клиенты редко ограничиваются одной службой. СДЭК закрывает города-миллионники курьерской доставкой за 1-3 дня и держит плотную сеть пунктов выдачи, а Почта России добирается туда, куда СДЭК физически не довозит - небольшие населённые пункты, посёлки без ПВЗ в радиусе разумной поездки. Делал магазин с товарами для дачи, где около 35% заказов уходило в населённые пункты без СДЭК - там Почта России не опция, а обязательный канал, иначе четверть покупателей просто не может оформить заказ.
Обе службы дополняют друг друга и по наложенному платежу: часть аудитории старшего возраста в регионах до сих пор доверяет оплате при получении больше, чем онлайн-эквайрингу вроде T‑Bank на сайте. По моим наблюдениям на нескольких проектах на WooCommerce, отказ от заказа на этапе выбора доставки падает на 15-20%, если добавить вторую службу для регионов, куда СДЭК не идёт.
Способы подключения СДЭК к сайту
Прямая интеграция через API v2
CDEK API v2 работает по OAuth2: в личном кабинете интегратора получаешь client_id и client_secret, обмениваешь их на токен, дальше дергаешь /v2/calculator/tariff для расчёта стоимости и /v2/orders для создания заказа. Токен живёт около часа, обновление нужно вести фоновым запросом, иначе калькулятор на сайте начнёт молча падать в ошибку 401 в пиковые часы.
Из подводных камней - тарифная сетка привязана либо к коду ПВЗ, либо к региону через объект location с кодом СДЭК, а не КЛАДР. Если передать координаты города без указания code_country или перепутать типы адреса, калькулятор часто отдаёт пустой список тарифов без внятного текста ошибки - приходится сверяться со справочником регионов отдельным запросом.
Готовые плагины и виджеты
Для WooCommerce есть официальный модуль СДЭК, но в реальных проектах почти всегда его дорабатываю: из коробки он плохо работает с несколькими складами отгрузки и не умеет гибко считать наложенный платёж с комиссией службы. Для Tilda нативной интеграции с СДЭК нет вообще - там ставлю кастомный JS-виджет, который дергает калькулятор с фронта и подставляет стоимость доставки в поля корзины перед отправкой заказа. Уже готовый скрипт такого калькулятора для Tilda можно взять в библиотеке готовых скриптов и адаптировать под свой склад отгрузки.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Как подключить Почту России к интернет-магазину
У Почты России два слоя API: старый SOAP-интерфейс Тарификатора для расчёта стоимости и новый OpenAPI для работы с отправлениями и трекингом. Для полноценной интеграции нужен единый лицевой счёт (ЕЛС) - оформляется через личный кабинет business.pochta.ru, заявку на подключение к API рассматривают от 3 до 10 рабочих дней, и это стоит закладывать в сроки проекта заранее, а не в последнюю неделю перед запуском.
По срокам доставки ориентируюсь на такие цифры из своих проектов: EMS между городами-миллионниками - 2-4 дня, посылка 1 класса в область - от 5 до 12 дней в зависимости от логистического узла. Наложенный платёж Почта России берёт с комиссией, которую нужно закладывать в расчёт стоимости на сайте - иначе магазин теряет на каждом заказе с оплатой при получении.
Отдельная головная боль - печать этикеток и штрихкодов. API отдаёт данные для формирования ярлыка, но верстку самого ярлыка под термопринтер обычно приходится собирать на стороне магазина, готового PDF Почта России не присылает в большинстве сценариев подключения через API.
СДЭК против Почты России: что выбрать для магазина
Сравнение по параметрам, которые реально влияют на выбор при интеграции:
| Параметр | СДЭК | Почта России |
|---|---|---|
| Скорость по городам-миллионникам | 1-3 дня | 3-7 дней |
| Охват отдалённых населённых пунктов | ограничен сетью ПВЗ | практически повсеместный |
| Наложенный платёж | да, комиссия ниже | да, комиссия выше |
| Подключение API | от заявки до токена - 1-3 дня | оформление ЕЛС - 3-10 дней |
| Документация API | подробная, JSON, Swagger | частично устаревшая, смешанный формат |
Вывод из этой таблицы простой - в большинстве проектов ставлю СДЭК основной службой с виджетом расчёта на сайте, а Почту России добавляю резервным каналом для адресов, куда СДЭК не дотягивается. Реализовать обе одновременно с нуля - не выходные разработчика, а отдельный этап проекта.
Автоматизация статусов и уведомлений через n8n и ботов
После того как заказ создан в обеих системах, следующая задача - не потерять статус посылки. Настраиваю это через n8n: вебхук от CDEK API при смене статуса заказа (передан курьеру, прибыл в ПВЗ, вручён) прилетает в workflow, который обновляет статус заказа в CRM - чаще Bitrix24 или amoCRM - и параллельно отправляет уведомление через aiogram-бота менеджеру и клиенту в Telegram.
Пример создания заказа СДЭК через API на Python - для понимания структуры запроса:
import requests
def get_token(client_id, client_secret):
resp = requests.post(
"https://api.cdek.ru/v2/oauth/token",
params={
"grant_type": "client_credentials",
"client_id": client_id,
"client_secret": client_secret,
},
)
return resp.json()["access_token"]
def create_order(token, order_payload):
resp = requests.post(
"https://api.cdek.ru/v2/orders",
headers={"Authorization": f"Bearer {token}"},
json=order_payload,
)
return resp.json()
Почта России в такую схему включается через отдельный узел n8n, который раз в 30-60 минут опрашивает OpenAPI по номерам отправлений (у Почты вебхуков в привычном виде нет) и сверяет статусы. Разница в подходах - веб-хуки у СДЭК против опроса у Почты - обычно и определяет архитектуру всей автоматизации на проекте.
Сколько стоит интеграция и на что смотреть при выборе подрядчика
По моему прайсу простая доработка виджета доставки для Tilda - от 3 000 ₽, а комплексная интеграция с CRM, эквайрингом и расчётом СДЭК и Почты России на одном сайте - от 40 000 ₽. Интернет-магазин под ключ с обеими службами доставки, подключением T‑Bank и учётом заказов в CRM - от 80 000 ₽. Отдельно настройка автоматизации статусов в n8n - от 25 000 ₽, техподдержка после запуска - от 15 000 ₽ в месяц.
При выборе подрядчика смотрю не на красивое портфолио, а на конкретные вопросы: работал ли человек с OAuth2-авторизацией СДЭК на реальном проекте, знает ли про разницу между Тарификатором и OpenAPI Почты России, и что он предложит для хранения статусов заказов и контактов клиентов - серверы должны быть в РФ, без выноса персональных данных в зарубежные облачные таблицы. На рынке за интеграцию такого уровня студии просят от 50 000 до 150 000 ₽ - это ориентир, не моя цена.
Интернет-магазин под ключ
Интернет-магазин
от 80 000 ₽
Подробнее →Частые вопросы
Можно ли подключить СДЭК и Почту России без готовых плагинов?
Можно и часто приходится - готовые плагины закрывают базовый сценарий (расчёт тарифа и создание заказа), но не умеют работать с несколькими складами, гибким наложенным платежом или кастомной логикой уведомлений. На Tilda нативных плагинов нет вообще, там всегда пишу отдельный скрипт.
Сколько времени занимает интеграция СДЭК и Почты России?
Подключение СДЭК по API - обычно 3-7 рабочих дней вместе с тестами калькулятора и созданием заказов. Почта России добавляет время на оформление ЕЛС и модерацию заявки на API - закладываю на неё 3-10 рабочих дней до начала разработки. Итоговый срок всего проекта зависит ещё от сложности CRM, к которой всё подключается.
Нужен ли отдельный договор с СДЭК и Почтой России для работы через API?
Да, для СДЭК нужен договор интегратора или юрлица с личным кабинетом, откуда выдают client_id и client_secret. Для Почты России - оформление единого лицевого счёта и подключение к API через кабинет business.pochta.ru, без ЕЛС доступ к отправке заказов через API не откроют.
Как передавать клиенту статус доставки автоматически, без ручного отслеживания?
У СДЭК есть вебхуки - при смене статуса заказа система сама шлёт уведомление на указанный URL, и его можно завести в n8n или напрямую в бота на aiogram. У Почты России вебхуков нет, поэтому статусы получаю периодическим опросом OpenAPI по номеру отправления - раз в 30-60 минут этого достаточно, чтобы клиент не замечал задержки в уведомлениях.