Яндекс Доставка API я подключаю клиентам каждый раз, когда встроенных виджетов конструктора не хватает: нужно посчитать стоимость по своим правилам, выбрать ближайший склад из нескольких или сразу после оплаты автоматически передать заказ курьеру, без звонка менеджера каждый раз вручную. Весь цикл интеграции на практике укладывается в 3 шага: получить токен доступа, отправить запрос на расчёт стоимости и создать заявку на доставку. Дальше разбираю каждый шаг и показываю, где эта связка реально нужна на Tilda, WooCommerce и в паре с n8n.
Что умеет API Яндекс Доставки и когда виджета недостаточно
Яндекс Доставка для бизнеса работает как курьерская служба по запросу: вы создаёте заявку с адресами забора и вручения, а система ищет исполнителя и везёт посылку в тот же день. API даёт доступ к этой механике напрямую, без интерфейса личного кабинета: можно посчитать стоимость до оформления заказа, создать заявку сразу из своей системы и получать статусы обратно.
В Tilda подключить Яндекс Доставку можно и без API, штатно, через поле токена в настройках доставки, без JS-виджета и без кода в head. Для простого магазина с одним складом и стандартной логикой этого хватает. Но как только появляются нестандартные условия, например расчёт по весу и объёму одновременно, выбор одного из нескольких складов по адресу покупателя или проверка стоимости прямо в момент оформления заказа, штатного поля становится мало и приходится идти в API напрямую.
У WooCommerce официальный плагин есть: «Яндекс Доставка» со слагом yandex-go-delivery, автор Yandex Delivery, лежит в каталоге wordpress.org. Он добавляет метод доставки с расчётом стоимости по адресу из корзины, склады отправления и кнопку отправки заказа в Яндекс Доставку прямо из списка заказов. Смотреть при этом нужно на состояние плагина: последняя версия 1.13 вышла 11 октября 2024 года, совместимость заявлена до WordPress 6.6.7, установок порядка 300. Поэтому под свежий WooCommerce плагин проверяют тестовым заказом, а нестандартную логику расчёта всё равно собирают через кастомный обработчик на стороне WordPress или через связку с n8n, которая забирает заказ из CRM или самой WooCommerce и уже сама обращается к API.
Регистрация и токен для API Яндекс Доставки
Подключение начинается с регистрации в кабинете Яндекс Доставки для бизнеса: там указываются реквизиты юрлица или самозанятого, привязывается способ оплаты услуг курьерской доставки и подписывается оферта. После этого в разделе интеграций выдаётся токен для авторизации запросов к API.
На практике сразу закладываю несколько вещей:
- токен храню в переменных окружения на сервере, а не в коде фронтенда и не в публичном репозитории;
- для тестового прогона использую отдельный тестовый адрес и минимальную посылку, чтобы не создавать боевые заявки во время отладки;
- сразу настраиваю адрес для обратных уведомлений о смене статуса заявки, иначе потом придётся опрашивать API вручную.
Если токен скомпрометирован, его перевыпускают в том же кабинете, старый при этом перестаёт работать, поэтому хранить его в открытом виде в письмах или тикетах не стоит.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Расчёт стоимости доставки через API
Перед созданием заявки Яндекс Доставка позволяет сделать предварительный расчёт: в запрос передаются координаты или адреса точки забора и точки вручения, а также параметры посылки, вес и габариты. В ответе приходит стоимость и ориентировочное время подачи курьера.
Важный момент, который часто упускают: цена, полученная на этапе расчёта, действует ограниченное время. Если между расчётом и фактическим созданием заявки покупатель долго оформляет заказ или меняет корзину, стоимость на момент подтверждения может отличаться. Поэтому расчёт стоит гонять заново прямо перед финальным шагом оформления, а не один раз при открытии страницы корзины.
Для магазина с несколькими складами логика усложняется: сначала нужно определить ближайший к покупателю склад, и только потом отправлять запрос на расчёт от его адреса. Такую логику я обычно выношу в отдельный кастомный скрипт на стороне сайта или в бэкенд-обработчик, а не пытаюсь встроить в готовые поля конструктора. Разработка такой доработки для Tilda как комплексная интеграция стоит от 40 000 ₽, а точечное изменение вроде смены логики выбора тарифа, без завязки на склады, обычно укладывается в простую доработку от 3 000 ₽.
Если на сайте уже настроен расчёт зон доставки под конкретные районы или города, удобно опираться на готовый виджет зоны доставки для Tilda, который считает стоимость по заданным зонам прямо в блоке заказа, а API Яндекс Доставки уже подключать поверх него для финального этапа передачи заказа курьеру.
Передача заказа: от заявки до курьера
После того как покупатель оплатил заказ, создаётся заявка на доставку с адресом получателя, контактным телефоном и описанием вложения. Дальше заявку нужно подтвердить, после чего система переходит к поиску исполнителя.
Статус заявки после этого меняется несколько раз: от поиска курьера до фактического вручения посылки получателю. Отслеживать это можно двумя способами: либо периодически опрашивать API по идентификатору заявки, либо принимать уведомления на заранее настроенный адрес обратного вызова, что заметно экономит количество запросов и не даёт пропустить момент, когда курьер не найден и нужно предложить покупателю альтернативу, например СДЭК.
На одном из проектов мы прокидывали смену статуса заявки в внутренний чат склада через телеграм-бота на aiogram: как только курьер назначен, кладовщик получал сообщение с временем подачи и мог заранее собрать посылку. Это избавило от постоянного ручного контроля кабинета доставки и снизило количество заказов, которые курьер забирал с опозданием из-за того, что посылка ещё не была собрана.
Условия и тарифы Яндекс Доставки меняются, поэтому перед запуском я уточняю их у самого сервиса.
Подключение к Tilda, WooCommerce и n8n
На Tilda штатное поле токена в настройках доставки закрывает базовый сценарий: покупатель оформляет заказ, магазин передаёт его в доставку с фиксированной логикой расчёта. Если нужно завязать выбор тарифа на вес товара, объединить несколько условий доставки или добавить проверку остатков на разных складах перед расчётом, поверх штатного поля добавляется кастомный скрипт, который обращается к API напрямую и уже потом передаёт готовые данные в форму заказа.
В WooCommerce интеграцию обычно собирают на уровне хуков оформления заказа: как только заказ переходит в статус оплаченного, срабатывает обработчик, который отправляет запрос на расчёт и создание заявки. Здесь же часто настраивают связку с оплатой через T‑Bank, чтобы доставка запускалась сразу после подтверждения платежа, а не по ручной отметке менеджера.
Если заказы приходят из разных источников, сайт на Tilda, форма на лендинге, заявки из CRM, удобно собирать передачу в доставку через n8n: сценарий принимает вебхук с данными заказа, обращается к API Яндекс Доставки за расчётом и созданием заявки, а результат пишет обратно в таблицу или CRM. Такой сценарий не привязан к конкретной платформе магазина и легко масштабируется на несколько источников заказов сразу.
Частые ошибки при интеграции
Из того, что регулярно вижу при подключении API Яндекс Доставки на чужих проектах:
- цену для покупателя показывают один раз при открытии корзины и не пересчитывают перед оплатой, из-за чего итоговая сумма заказа расходится с суммой на кассе;
- не обрабатывают ситуацию, когда курьер не найден, и заказ просто зависает без уведомления менеджера;
- телефон получателя передают в произвольном формате без нормализации, из-за чего часть заявок отклоняется на этапе создания;
- не логируют входящие уведомления о статусах, и при разборе спорного заказа с покупателем невозможно восстановить, на каком этапе была потеряна посылка.
Большая часть этих проблем решается на этапе проектирования интеграции, а не патчами после первых жалоб покупателей, поэтому закладывать обработку ошибок и логирование стоит сразу, вместе с основной логикой расчёта и передачи заказа.
Частые вопросы
Можно ли подключить Яндекс Доставку на сайте без разработчика?
Если сайт на Tilda и логика доставки простая, без разных складов и условий по весу, достаточно штатного поля токена в настройках, это делается без кода. Как только появляется нестандартная логика расчёта или нужно передавать заказы из внешней системы, без интеграции через API не обойтись.
Чем API отличается от готового поля токена в конструкторе?
Штатное поле в Tilda решает базовый сценарий: покупатель оформляет заказ, магазин передаёт его в доставку. API даёт доступ к тем же операциям напрямую из своего кода, поэтому на нём можно построить произвольную логику расчёта, выбор склада, свои условия подтверждения заявки и обработку статусов под конкретные процессы магазина.
Сколько стоит подключение API Яндекс Доставки под ключ?
Точечная доработка вроде смены логики расчёта тарифа на уже работающем сайте на Tilda стоит от 3 000 ₽. Комплексная интеграция с расчётом по складам, обработкой статусов и передачей заказа из CRM или WooCommerce оценивается как отдельный проект от 40 000 ₽, а если нужен ещё и весь интернет-магазин под эту логику, такой проект начинается от 80 000 ₽.
Работает ли Яндекс Доставка вместе с СДЭК на одном сайте?
Да, это разные сервисы и разные интеграции: у Tilda, например, есть штатная интеграция с СДЭК, где стоимость считает калькулятор самой СДЭК по адресу, выбранному в корзине, а под разные тарифы службы добавляют отдельные варианты доставки, никаких зон в этой настройке нет. Яндекс Доставка подключается отдельно через своё поле токена или через API. На одном сайте их обычно совмещают так: Яндекс Доставка для срочной курьерской доставки по городу, СДЭК для доставки в другие регионы, а покупателю на кассе показывают оба варианта на выбор.