Евгений Герасимов
Кейс · В продакшене с сентября 2026

Кейс СКИН ЕТИКА: доставка Ozon на сайте бренда натуральной косметики на WooCommerce

СКИН ЕТИКА — бренд натуральной косметики. Его сайт я разрабатывал с нуля, включая автоматизацию производства, и в сентябре 2026 года добавил на него доставку в пункты выдачи и постаматы Ozon. Из этой работы вырос плагин «Ozon Доставка для WooCommerce». Рассказываю, какая была задача, какие решения принял владелец и с какими сюрпризами Ozon API пришлось справиться.

О проекте

skinetika.shop — интернет-магазин бренда натуральной косметики на WordPress и WooCommerce. Я разрабатывал этот сайт с нуля, включая автоматизацию производства. К сентябрю 2026 года на сайте уже работали онлайн-оплата через Т-Банк и доставка другой службой с собственными пунктами выдачи.

Задача звучала просто: добавить Ozon к уже работающей доставке и ничего не сломать — ни корзину, ни оформление заказа, ни оплату, ни существующую службу доставки. На живом сайте любая ошибка сразу видна покупателям, а отдельной тестовой копии сайта владелец решил не делать: разработка и тесты шли на живом сайте в тестовом режиме плагина, где Ozon видели только администраторы и тестовые номера сотрудников.

Решения владельца

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

ВопросРешение
Кабинет OzonКабинет доставки объединён с кабинетом продавца — общий баланс
ОтгрузкаСамостоятельно, в пункт выдачи Ozon рядом со складом
ПосылкиОдно отправление на заказ
Объявленная стоимостьСтоимость товаров после скидок
Цена для покупателяРасчёт Ozon плюс страховка, округление вверх до 10 ₽
«Бесплатно от N ₽»Опция в настройках, по умолчанию выключена
Курьер OzonНе подключаем — только пункты выдачи и постаматы
После полученияЗаказ на сайте автоматически становится «Выполнен»
Проверка телефонаБез SMS-кода — вместо него предупреждение о номере на оформлении

От SMS-подтверждения отказались сознательно: лишний шаг на оформлении снижает конверсию. Вместо него покупатель видит, на какой номер оформится заказ в Ozon, и предупреждение, что получить заказ можно только в приложении Ozon на этот номер, а изменить номер после оформления нельзя. Тот же пункт есть в оферте магазина.

С какими трудностями Ozon API пришлось справиться

Ozon Delivery API молодой, и подключить его «за вечер» не получилось. Вот что пришлось решить, прежде чем доставка заработала на живом сайте.

1. Нет карты, а список пунктов — без адресов

Готовой карты или виджета у Ozon нет, а метод списка пунктов отдаёт только номера — без адресов, координат и фильтра по городу. Пунктов при этом 88 337. Решение — свой справочник в базе сайта с инкрементальной синхронизацией: полный проход по списку, а подробности — только для новых пунктов и тех, что не проверялись больше 7 дней. Пункты, пропавшие из списка, удаляются только после завершённого прохода, а состояние сохраняется после каждой страницы, чтобы сбой посередине ничего не испортил. Первая загрузка с сервера заняла около 14 минут, ежедневное обновление — 5–8 минут ночью. Поиск ближайших пунктов по таблице — 3–4 миллисекунды.

2. Адреса в десятке форматов

«Обл. Томская», «Вологодская» без слова «область», адреса с индексом и без, «дер.», «городской посёлок». Чтобы показывать примерную цену для города покупателя, город нужно надёжно выделить из адреса. Разбор адресов проверен на 600 реальных адресах пунктов Ozon. График работы Ozon отдаёт датами примерно на три недели вперёд, где отсутствующая дата — выходной; его сжали в понятную недельную строку вместо хранения сырых данных.

3. API иногда «молчит»

Обычный ответ Ozon приходит за 50–250 миллисекунд. Но примерно один запрос из 10–20 принимает соединение и не отдаёт ни байта до таймаута, а повтор сразу проходит. Решение — короткие таймауты (несколько секунд для фоновых задач и админки, ещё меньше — на оформлении заказа) и быстрые повторы. Если Ozon не ответил на оформлении, способ Ozon временно скрывается, а покупатель спокойно оформляет заказ другим способом.

4. Защита от ботов и токен, который живёт не так, как написано

На первый же запрос API отвечает перенаправлением 307 — это защита Ozon от DDoS. Обычный HTTP-клиент WordPress при перенаправлении превращает POST-запрос в GET и теряет тело запроса. Плагин повторяет тот же запрос с тем же телом и полученной cookie. А срок жизни токена в ответе Ozon оказался не количеством секунд, как сказано в документации, а временем истечения — плагин распознаёт оба варианта и обновляет токен заранее, чтобы доставка не «отваливалась» раз в час.

5. Нет уведомлений о статусах

Ozon не сообщает магазину, что посылка в пути или получена. Сайт сам опрашивает статусы каждые 30 минут, хранит историю в заказе и пишет покупателю от имени магазина.

6. Без телефона нет цены

Ozon не считает доставку без номера телефона, а заказ получит только владелец номера в приложении Ozon. Сначала способ Ozon появлялся только после ввода телефона. По просьбе владельца его сделали видимым сразу: без номера под способом — просьба указать телефон и кнопка перехода к полю, а смена номера сразу пересчитывает цену. Проверка номера в Ozon кэшируется и ограничена по сессии и IP, чтобы сайт нельзя было использовать для массовой проверки чужих номеров.

Совместная работа с другой службой доставки

Ozon встал на оформлении рядом с уже работающей службой доставки, и тут нашлись свои тонкости:

  • Яндекс.Карты уже грузились другим плагином доставки на всех страницах. Загружать вторую копию карт нельзя: они конфликтуют и тратят лимиты. Плагин Ozon переиспользует уже загруженные карты, а свою копию, если нужно, грузит лениво и в отдельном пространстве имён.
  • Соседний плагин сбрасывал кэш расчёта доставки при каждом обновлении страницы оформления. Без защиты это означало бы запрос в Ozon при каждом изменении поля. Поэтому ответы Ozon кэшируются в сессии покупателя по параметрам посылки.
  • Данные в заказе — минимальные. В заказ сохраняются только номер и адрес выбранного пункта, а не список всех пунктов города: база данных не должна разрастаться из-за доставки.
  • Форма оформления была на двух страницах — и в корзине, и на странице оформления. Проверять пришлось обе.

Т-Банк и фиксированная сумма доставки

Т-Банк сверяет сумму оплаты с суммой заказа. Отсюда жёсткое правило: стоимость доставки после создания заказа не меняется — ни при создании заказа в Ozon, ни при пересоздании отправления. Заказ в Ozon создаётся только после оплаты, с защитой от дублей: если ответ Ozon потерялся, плагин сначала ищет уже созданное отправление.

Ещё одна особенность: при оплате Т-Банк иногда оставлял заказ в статусе «На удержании», хотя деньги прошли. Плагин опирается на событие оплаты, а не только на статус, поэтому такие заказы тоже уходят в Ozon. И мелочь, которая важна для чеков: доставка пробивается отдельной позицией с названием способа, поэтому название сделано коротким, а адрес пункта хранится в заказе отдельно.

Результат

  • 17 сентября 2026 года доставка Ozon открыта для всех покупателей сайта, после тестового заказа с полной цепочкой: выбор пункта, цена, оплата, передача в Ozon, отмена.
  • Ozon работает рядом с другой службой доставки — покупатель выбирает сам.
  • Менеджерам остаётся три действия: собрать посылку, нажать «Собрано», отвезти её в пункт отгрузки. Для них написана инструкция со всеми кнопками, статусами и ответами на частые вопросы.
  • Добавились функции по ходу работы: пересоздание отправления, если покупатель ошибся в номере или сменил пункт, и письмо-напоминание, если оплаченный заказ больше суток ждёт сборки.

В октябре 2026 года на основе этого кода вышла версия 1.0.0 плагина для других магазинов: свои ключи Яндекс.Карт и DaData, ленивая загрузка карты, тексты для покупателя в настройках. Затем — поддержка блочного оформления заказа и лицензия с пробным периодом. Подробнее — в истории версий.

Что из этого кейса пригодится вашему магазину

  • Заполните вес и размеры товаров. В кейсе их не было у 27 % товаров — без них цена доставки для покупателя считается по значениям по умолчанию.
  • Проверьте все страницы с оформлением заказа, включая корзину, если форма оформления есть и там.
  • Проверьте письмо «Примечание к заказу». Через него уходят письма о статусах доставки; в кейсе в теме и заголовке этого письма оставался посторонний текст, его пришлось заменить.
  • Тестируйте в тестовом режиме на номере сотрудника и отменяйте тестовый заказ до сдачи посылки — песочницы у Ozon нет.
  • Обновите оферту и политику конфиденциальности: получение только через приложение Ozon, передача ФИО и телефона в Ozon, проверка при получении, возвраты через магазин.

Плюсы и минусы — в отзыве. Кейс рассказывает, как внедряли доставку. Что в самом сервисе Ozon удобно, что мешает и кому он подойдёт, — в отдельном отзыве об Ozon Доставке для бизнеса, а из чего складывается цена посылки для магазина — в статье Тарифы Ozon Доставки для бизнеса.

Хотите так же на своём сайте? Скачайте плагин — первые 50 заказов бесплатно, или закажите подключение под ключ.

Читайте дальше

Ozon Доставка на вашем сайте

Скачайте плагин или доверьте подключение нам

Первые 50 заказов через плагин — бесплатно, дальше лицензия от 19 990 ₽ в год. Под ключ: разбор сайта, помощь с кабинетом Ozon, настройка и приёмка тестовым заказом.

Ozon и Ozon Доставка — товарные знаки их правообладателя. Плагин — независимая разработка: он работает через официальный Ozon Delivery API и не является продуктом Ozon. Тарифы и условия Ozon могут меняться — актуальные смотрите в кабинете Ozon Доставки.