Как мы снизили расходы на экспресс-доставку в Яндекс.Доставке на 13% и не потеряли в качестве

Привет! Меня зовут Денис Захаров, я руководитель продуктов логистики в компании GRI. Мы занимаемся заказной разработкой и сопровождением, ключевых игроков E-com. Наша задача – не просто интегрировать сервисы, а делать бизнес эффективнее: меньше тратить, больше зарабатывать.

Сегодня расскажу, как оптимизировать тарифы Яндекс.Доставки и снизить логистические расходы, не потеряв в скорости и удобстве для клиентов. Это практический кейс с цифрами, логикой и алгоритмом. Поехали.

Проблема: дорогие доставки и тарифный хаос

Типы доставок Яндекса:

У Яндекс.Доставки есть несколько типов и способов доставки, поэтому очень важно грамотно подбирать нужный для себя оффер.

Типы доставки:

Под типами доставки я подразумеваю группы офферов с разной скоростью и приоритетами доставки вашего товара до клиента. 

Типы доставки могут быть следующими:

  1. Экспресс "description": "express"

    Самый быстрый и приоритетный способ доставки. Если вы выбираете его, то курьер максимально быстро приезжает к вам и так же быстро доставляет заказ до клиента. При этом, если у курьера есть другие заказы, то ваш заказ будет доставлен до клиента в первую очередь. Данный тип доставки подходит для FoodTech-компаний и для тех, кому скорость доставки критически важна и необходима. В противном случае это деньги в унитаз.

  2. Экспресс + 30 "description": "express_30min_longer"

    Второй по скорости тип доставки экспресс с замедлением на 30 минут. Что значит с замедлением? Это значит что курьер приедет к вам забрать заказ на 30 минут позже, чем в экспрессе, либо на 30 минут позже доставит до клиента по сравнению с тарифом экспресс, так как ваш заказ в маршрутном листе курьера будет стоят не самым первым.

  3. Экспресс + 60 "description":"express_60min_longer"

    Аналогично с Экспресс + 30, только задержка на 60 минут.

  4. Доставка за 2 часа "description":"2_hours_delivery"

    Просто доставка до клиента за 2 часа

Сравнение типов доставки по цене:

Проработав с Яндексом примерно год по всей России, мы провели небольшую аналитику и выяснили как отличаются типы доставки друг от друга.
 

Экспресс

Экспресс + 30 (-5%)

Экспресс + 60 (-10%)

Доставка 2 часа (-15%)

X рублей

X рублей

X рублей

X рублей

По итогу могу сказать следующее:

Если у вас есть критическая необходимость доставлять до клиента в сжатые сроки, выбирайте тариф экспресс, а если у вас такой необходимости нет или у вас нет данных о влиянии скорости доставки на GMV или Выкупаемость, то выбирайте тариф “Экспресс + 60 (-10%)”.

Способы доставки:

Под способами доставки я подразумеваю как курьер будет доставлять ваш заказ до клиента, например, на велике или на машине.

Способы доставки могут быть следующими: 

  1. "taxi_class":"courier"

    Это значит, что курьер будет доставлять на своих двух / на велике / на самокате.

  2. "taxi_class":"express"

    Тут вашу доставку буду доставлять приоритетом на машине, чтобы в максимально  сжатые сроки быть у клиента перед дверью. Однако так же могут быть доставки и пешими курьерами

  3. "taxi_class":"cargo"

    Данным способом не пользовался, но знаю, что перевозит крупногабаритные грузы. 

Собираем формулу успеха:

Нужна доставка максимально быстро?

- Выбирай Express без замедления и способ доставки aka taxi_class, также выбирай Express

Нужна доставка не так быстро?

- Выбирай Express+60 и taxi_class = courier

Напишите в комментариях, работаете ли вы с Яндекс.Доставкой или нет. Если да, то какие настройки вы используете, и из какого сегмента ваша компания?

Офферы Яндекса

Про типы и способы доставки с вам поговорил, поехали к офферам. Яндекс.Доставка возвращает обширный список офферов – на любой вкус и скорость. Ну и тоже стоит понимать, что список офферов формируется на основе параметров, которые вы задаете ранее, я говорю о типах и способах доставки.

Все офферы у Яндекса устроены по одному принципу:

“Приедем на точку A во столько-то и довезем до точки B во столько-то”

Ниже приведу фрагмент Json ответа Яндекса с офферами на доставку. В фрагменте будет только оффер с доставкой за 2 часа, по аналогичной структуре формируются оффера и для других типов доставки.

{

   "offers":[

      {

         "description":"2_hours_delivery",

         "is_selected":true,

         "pickup_interval":{

            "from":"datetime.datetime(2025, 7, 11, 15, 37, 44, 829169, tzinfo=zoneinfo.ZoneInfo(key='Europe/Moscow'))",

            "to":"datetime.datetime(2025, 7, 11, 16, 45, tzinfo=zoneinfo.ZoneInfo(key='Europe/Moscow'))"

         },

         "price":{

            "surge_ratio":1,

            "total_price":305,

            "currency":"RUB",

            "total_price_with_vat":366

 

Ключевой вопрос: офферы мы получили, а какой из них выбирать?

Для того чтобы ответить на этот вопрос, мы решили разобраться сколько времени клиент реально готов ждать доставку?

Ответ не так очевиден. Интуитивно кажется: чем быстрее, тем лучше. Но на деле – не всегда.

Люди хотят получить заказ быстро, но не обязательно мгновенно – особенно, когда речь идет не о еде, а о ювелирных украшениях.

Мы провели качественное исследование:

  • опросили клиентов

  • проанализировали выкупаемость в зависимости от времени доставки

  • сопоставили ожидания и реальность

Результаты нас удивили.

Главный инсайт:

Формулировка «от 30 минут» воспринимается как «ну, в течение часа точно привезут».
Однако, нужно понимать, что мы говорим про Рынок E-com, но например, в Foodtech, клиенты не воспринимают доставку за 30 минут, как за час. ?

Именно так: если клиент видит «экспресс-доставку», он внутренне рассчитывает не на 30 минут по таймеру, а просто на «достаточно быстро». А разница между 30 и 45-60 минутами – почти не чувствуется.

Что показала аналитика: платим больше, а смысла нет

После разбора всей истории заказов и тарифов от Яндекс.Доставки мы заметили очевидную нестыковку:

Экпресс доставка за 30 минут обходится в среднем нам в 700+ рублей, а тот же Экпресс+60 на 10% дешевле, чем доставка за 30 минут, а конверсия в выкуп – одинакова. То есть, клиенты не замечают разницы.

Почему это важно? Потому что без фильтрации система чаще выбирает самый быстрый (и дорогой) вариант, даже если он не нужен.

? Пример из жизни

Представим, что клиент оформляет заказ в 14:00 и выбирает экспресс-доставку «от 30 минут». Система возвращает вот такие офферы:

Ранее система выбрала бы доставку за 560 ₽ – просто потому, что она самая быстрая.

Но если взглянуть чуть шире и вспомнить, что «от 30 минут» клиент воспринимает как «в течение часа», становится очевидно:

Лучше выбрать оффер за 425 ₽ – с доставкой до 14:45. Клиент не заметит разницы, а мы сэкономим 135 ₽ на одном заказе.

Микрооптимизация на каждом этапе в итоге даёт значительную экономию.

Три сценария покупки и логика выбора тарифа

Чтобы понять, как выбирать тариф правильно, мы разложили все заказы на типовые сценарии.

Сценарий 1: товара нет в наличии в магазине

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

Но тут важно не перегнуть с «сервисом»:

  • Слишком быстро – дорого и требует держать большие товарные остатки на каждой точке

  • Слишком долго – клиент не дождется и уйдет

Оптимальное окно – 30-60 минут. Это всё ещё «быстро» в восприятии клиента, но уже позволяет экономить на тарифах.

В этом сценарии система должна искать все офферы в пределах 30-60 минут и выбирать самый дешёвый. Это дает баланс между скоростью, удовлетворенностью клиента и маржинальностью. 

? Сценарий 2: доставка «до двери» в течение 3 часов

В этом случае клиент оформляет заказ онлайн, и товар нужно привезти по адресу. Тут важна надёжность, но сверхскорость не требуется.

Что учитываем:

  • Платить за ускорение смысла нет – клиент всё равно ждёт в течение нескольких часов.

  • Нужно заложить время на сборку заказа (20 минут) и возможные задержки курьера (ещё около 10 минут).

Оптимальное окно доставки – от 2 до 2.5 часов. Этого достаточно, чтобы уложиться в обещанные 3 часа и при этом не переплачивать.

В этом сценарии нужно выбирать самый дешёвый тариф, укладывающийся в лимит до 3 часов, с поправкой на внутренние процессы. Так мы экономим, не рискуя качеством сервиса.

Сценарий 3: доставка «от 30 минут»

В этом случае клиент выбирает экспресс-доставку – и тут, действительно, важна скорость. Но не всё так буквально, как мы уже поняли.

Если в офферах нет варианта ровно на 30 минут – это не повод отказывать клиенту в создании заказа.
Важно другое: уложиться в разумный интервал – до 90 минут, который клиент воспринимает как всё ту же "быструю доставку".

Что делаем:

  • Ищем все офферы с интервалом от 30 до 90 минут

  • Из них выбираем самый дешевый

Такой подход сохраняет ощущение «экспресса» для клиента и при этом не тратит лишние деньги на сомнительную гонку за минутами.

Супер инсайд – проблема:

Раньше мы на чек-ауте давали пользователю заказать экспресс-доставку, ориентируясь только на его адрес доставки (входит в полигон доставки или нет) и на локальное время клиента (смотрели, работают ли еще магазины, из которых можем доставить, или нет). Однако такой подход вызывал проблемы связанные с тем, что при создании заказа в Яндексе мы могли получить офферы, ни один из которых не удовлетворял ни по времени, ни по стоимости доставки. По итогу получалась картина, когда клиент заказал доставку от 30 минут и нам ничего не остается, кроме как выбирать невероятно дорогой оффер, чтобы доставить до клиента в разумный интервал времени.

Пример:
1. Покупатель на Check-out выбирает доставку от 30 минут
2. Мы идем создавать заказ и получаем офферы от Яндекса
3. Яндекс присылает дорогущие офферы, один из которых еле-еле попадает в допустимый интервал доставки
4. Мы в ловушке и нам ничего не остается, кроме как выбрать этот самый дорогой оффер, который мог быть дороже самого изделия в заказе

Как с этим бороться?
На check-out-е перед тем как показать способы доставки, опрашивать Яндекс и выводить экспресс-доставку только тогда, когда хотя бы на текущий момент Яндекс имеет адекватные офферы в пуле по адекватным ценам.

Антипаттерны: как точно не надо делать

Проработав все сценарии, мы собрали ТОП-3 ошибки, которые мы раньше допускали:

  1. Брать самый быстрый оффер без фильтрации.
    Да, звучит как забота о клиенте. Но на деле – просто бессмысленные траты.

  2. Одинаково обрабатывать все сценарии.
    У каждого клиента свой контекст. Применять одну и ту же логику к доставке «до двери» и доставке «в торговую точку» – это прямой путь в минус.

  3. Гнаться за скоростью, забывая о марже.
    Какой смысл доставки за 30 минут, если ты на этом теряешь прибыль?

Как работает наш алгоритм выбора тарифа

Теперь переходим к самому интересному. 

Чтобы перестать гадать, мы собрали алгоритм, который учитывает всё – и интересы клиента, и экономику.

Что подаем на вход:

  • Ожидания клиента (сценарий использования)

  • Все доступные офферы из API Яндекс.Доставки

  • Время на сборку заказа

  • Прибыль с единицы товара

Условие выбора:

Цена доставки < Цена изделия × k1

где k1 – медианный коэффициент маржинальности. 

Если доставка съедает прибыль с продажи данного ювелирного изделия, то тариф не проходит фильтр.

Что делает алгоритм:

  1. Выбирает все офферы, которые укладываются в нужное временное окно (по сценарию).

  2. Фильтрует по стоимости – с учетом коэффициента маржи.

  3. Сортирует и берёт самый дешёвый из подходящих.

  4. Если оффер прошёл все условия — даём оформить заказ.
    Не прошёл? Не даём создать заказ. 

Пример алгоритма на блок-схеме:

Под капотом: как работает алгоритм

Интеграция с Яндекс.Доставкой идёт через их API.

# Пример фильтрации тарифов

def filter_tariffs(offers: list(Offer), cart_price: int, k1 :int, deliver_datetime_limit: datetime) -> OfferID:

    max_offer_price = cart_price * k1

    return OfferID(sorted(

        [o for o in offers if o['delivery_interval']['to'] <= deliver_datetime_limit and o['price']['total_price_with_vat'] <= max_offer_price],

        key=lambda x: x['price']['total_price_with_vat']

    )[0]['payload'])

В качестве отслеживания корректности выбора тарифов мы:


1. Используем связку Prometheus + Grafana для мониторинга
2. Пересчитываем k1 ежемесячно по реальным данным

Что в итоге?

После внедрения алгоритма:

  • Расходы на Яндекс.Доставку снизились на 10%

  • Стоимость доставки перестала “съедать” маржу

  • Экспресс-доставок стало больше, благодаря расширенному окну (30–60 минут)

  • Недовольных клиентов не прибавилось

В двух словах

Вместо того чтобы гнаться за доставкой за 30 минут – мы начали думать, что нужно клиенту и сколько это должно стоить бизнесу.

Оказалось: если немного подождать, то можно сильно сэкономить, и никто даже не заметит разницы. :)

Автоматизация – это не магия, это просто честная логика и немного кода.

Комментарии (0)