WordPress · 6 мин чтения

Интеграция СДЭК и Почты России в интернет-магазин: разбор вариантов

Занимаюсь настройкой интернет-магазинов на 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 минут этого достаточно, чтобы клиент не замечал задержки в уведомлениях.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Самозанятый Калинкин Н. А. · работаю с физлицами и юрлицами

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно