Магазин продуктов: зоны доставки и временные слоты
Продуктовый магазин ломается не на каталоге, а на обещании времени. Клиент выбирает не только что купить, но и когда это привезут, и именно связка «зона плюс слот плюс остаток» определяет, состоится заказ или превратится в звонок с извинениями. Ниже — порядок настройки, шаг за шагом.
Шаг 1. Нарисуйте зоны полигонами, а не словами
Возьмите карту и обведите районы, куда вы реально возите. Формулировка «в пределах города» не работает: она включает промзоны, куда курьер едет сорок минут в одну сторону.
Каждая зона хранит четыре числа: минимальная сумма заказа, стоимость доставки, бесплатный порог и время в пути. Дальний район с минимальной суммой 3 000 ₽ — нормальное решение, а отказ от него после оформления — нет.
Проверка: введите пять адресов ваших знакомых и посмотрите, в какую зону они попадают. Если хотя бы один попал не туда, полигон нарисован неаккуратно.
Шаг 2. Проверяйте адрес до кнопки оплаты, а не после
Адрес при вводе проходит геокодирование и проверяется на попадание в полигон. Если точка вне зон, клиент видит это на этапе ввода — вместе с предложением самовывоза.
Оплаченный заказ, который вы потом отменяете, стоит дороже несостоявшегося: возврат, объяснения и человек, который больше не вернётся.
Проверка: попробуйте оформить у себя заказ на заведомо далёкий адрес. Если дошли до оплаты — проверка стоит не там, где надо.
Шаг 3. Задайте слоты как ёмкость, а не как расписание
Слот — это не просто интервал в выпадающем списке. У слота есть вместимость: сколько заказов курьеры физически успевают развезти за это окно в этой зоне.
Когда вместимость исчерпана, слот гаснет. Это самая полезная строчка кода во всей продуктовой доставке, потому что она превращает обещание в обязательство, которое можно выполнить.
Проверка: посчитайте, сколько адресов курьер объезжает за три часа в вашем районе. Это и есть вместимость слота, а не число, которое хочется поставить.
Шаг 4. Закройте окно сборки перед выездом
Между последним изменением заказа и выездом курьера должен быть зазор: сборщику нужно время. Для слота 18:00–21:00 приём заказов закрывается, допустим, в 16:00.
Отдельно предусмотрите правило для текущих суток: если сейчас 15:50, ближайший слот не должен быть 16:00. Список слотов пересчитывается от текущего времени, а не берётся статичным.
Проверка: откройте корзину за десять минут до отсечки и посмотрите, какие слоты предлагаются. Если предлагается ближайший — правило не работает.
Шаг 5. Решите заранее, что делать с отсутствующим товаром
В продуктах позиция пропадает между оформлением и сборкой чаще, чем в любой другой нише. Нужны три варианта поведения, и клиент выбирает их в корзине: заменить похожим, позвонить, исключить и вернуть деньги.
Замена без спроса — самая частая причина плохих отзывов в этой нише. Замена по заранее заданному правилу — наоборот, признак того, что магазин работает.
Проверка: возьмите последние двадцать заказов и посмотрите, в скольких что-то пришлось менять. Это доля, ради которой стоит делать механику.
Шаг 6. Разведите роли до первого наёмного сборщика
Сборщику нужен один экран: список позиций, количество, место на полке и кнопка «нет в наличии». Больше ничего.
Это тот же принцип, что и в других наших проектах: сборщик видит заказы, но не деньги; менеджер — клиентов, но не настройки. В продуктах он работает буквально — сборщик ходит по залу с телефоном, и лишние поля мешают.
Проверка: откройте экран сборки на телефоне и попробуйте собрать заказ из пятнадцати позиций одной рукой. Если приходится листать вбок, экран не готов.
Шаг 7. Свяжите остатки с витриной хотя бы раз в час
Продуктовый каталог без остатков продаёт воздух. Минимально рабочая схема — выгрузка из учётной системы с обновлением по расписанию и мгновенное скрытие позиции, когда сборщик отметил её отсутствие.
Полная синхронизация в реальном времени нужна не всем. Часовой интервал плюс ручная кнопка «убрать из продажи» закрывает большую часть случаев и стоит заметно дешевле.
Проверка: отметьте позицию отсутствующей и засеките, через сколько она пропадёт с витрины. Всё, что дольше пяти минут, — источник отмен.
Шаг 8. Решите, что делать с весовым товаром
Мясо, сыр, овощи продаются с допуском: клиент заказал 500 граммов, сборщик положил 540. Сумма заказа должна пересчитаться, и клиент должен знать об этом до оплаты, а не после списания.
Практично закладывать допуск в процентах у категории и показывать в корзине формулировку вида «вес может отличаться до 10 процентов, итоговая сумма пересчитается при сборке». Разницу удобнее возвращать, чем доудерживать: возврат части суммы проходит без повторного согласия плательщика, доудержание — нет.
Отдельно предусмотрите поведение, когда фактический вес вышел за допуск. Тогда позиция превращается в тот же вопрос, что и отсутствующий товар, и решается заданным заранее правилом.
Проверка: возьмите десять весовых позиций из последних заказов и посчитайте среднее отклонение факта от заказа. Это число и будет вашим допуском.
Шаг 9. Настройте уведомления по трём событиям
Продуктовый заказ живёт несколько часов, и клиент за это время должен получить ровно три сообщения: заказ принят со слотом, сборка началась с перечнем замен, курьер выехал.
Сообщение о заменах — самое важное из трёх. Именно в нём клиент подтверждает или отклоняет решение сборщика, пока курьер ещё не выехал.
Всё остальное — рекламные рассылки, опросы, напоминания — к операционным уведомлениям не относится и не должно приходить в том же канале в тот же день.
Проверка: оформите заказ у себя и посчитайте, сколько сообщений придёт. Больше четырёх — канал превращается в шум, и важное перестанут читать.
Кому это не нужно
Если вы возите по одному району и принимаете заказы в мессенджере, слоты и полигоны — избыточная машинерия. Сайт-витрина с формой и телефоном закроет задачу.
Если ассортимент меньше сотни позиций и всё в наличии всегда, механика остатков не окупится. Лендинг с каталогом от 40 000 ₽ и 3–5 дней будет разумнее магазина от 100 000 ₽.
И если некому вести остатки ежедневно, автоматика только ускорит поступление заказов, которые вы не сможете выполнить.
Коротко
Продуктовая доставка держится на трёх настройках: полигоны зон с проверкой адреса до оплаты, слоты с реальной вместимостью и окном сборки, и правило замены отсутствующего товара, выбранное клиентом заранее. Каждый пункт проверяется вручную за десять минут. Ошибки здесь дороже, чем в любой другой нише, потому что человек ждал продукты к ужину, а не посылку в течение недели.
Первый разговор — разбор задачи: нужна ли вам система или хватит одной страницы. Без обязательств и без счёта.
Частые вопросы
Сколько слотов в день оптимально?
Начинайте с трёх широких окон по три-четыре часа и смотрите, какие заполняются. Узкие часовые слоты имеют смысл только тогда, когда курьеров хватает на плотный график. Пустой слот в интерфейсе выглядит нормально, а переполненный оборачивается опозданиями.
Что делать с товаром на развес?
Фиксируйте в заказе вес с допуском и пересчитывайте сумму при сборке. Клиент должен видеть эту логику до оплаты, иначе списание другой суммы читается как ошибка. Разницу удобнее возвращать, чем доудерживать.
Нужна ли своя доставка или можно отдать курьерской службе?
На старте почти всегда дешевле отдать. Своя доставка окупается, когда плотность заказов в районе позволяет курьеру везти четыре-пять адресов за выезд. До этого фиксированная ставка службы предсказуемее.
Те, что не помогают, мы переписываем — по этой кнопке и решаем, какие именно.
Ещё по теме
Справка о составе чека, разграничении зон ответственности между сайтом, кассой и бухгалтерией и порядке проверки перед запуском.
тем, кто заказывает «Жук и Плут»: детский бренд ушёл с маркетплейсов на свой сайтИстория магазина детских товаров — что мы построили, что пошло не так и почему бренд встал первым в Яндексе на третий день.
тем, кто заказывает «С этим покупают»: где ставить блоки допродажКарта мест на сайте, где допродажа работает, и что показывать в каждом — от карточки товара до письма после доставки.
тем, кто заказывает