Интернет-магазин бытовой химии различает города-тезки при доставке. И сохраняет по 20 заказов в месяц

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

Розничная сеть продает товары по уходу за собой и домом

Компания-герой статьи — анонимная розничная сеть в формате дрогери. Это магазины у дома с вещами повседневного спроса: косметикой, бытовой химией, товарами для животных и другими полезными мелочами.

А еще сеть продает товары в интернет-магазине и мобильном приложении. Оттуда получают по 30 000 заказов в месяц. Покупки доставляют курьеры Pony Express — в городах, где работают магазины сети. И Почта России — по всей стране.

Интернет-магазин определяет города покупателей, чтобы рассчитывать цену и способы доставки

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

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

Человека лишний раз не тревожат вопросами и вычисляют местоположение автоматически по IP-адресу или координатам. Вот как все происходит:

  1. Магазин определяет координаты человека. Напрямую с помощью инструментов Google и Apple, если покупатель предоставил доступ к геолокации. Или через IP-адрес.
  2. Ищет координаты на карте. Ее заранее разделили на квадраты и присвоили каждому название города, который расположен внутри. Например, в квадрате с названием «Краснодар» находится город Краснодар.
  3. Считает городом пользователя название квадрата на карте, в который попадают координаты.

Интернет-магазин путал города с одинаковыми названиями, поэтому предлагал неактуальные способы доставки 

Определив населенный пункт, интернет-магазин сверяет его с городами присутствия — теми, где работает розничная сеть. От результата сверки зависят способы доставки. В населенный пункт из перечня заказы доставят курьером, в остальные — только Почтой России.   

Раньше города покупателей сверяли с городами присутствия по названию. Магазин искал, например, текст «Павловск» в списке населенных пунктов, будто слово в Excel ищут через Ctrl+F. Дальше два варианта:

  • если искомый текст совпадает до буквы с вариантом в перечне, значит, розничная сеть работает в городе покупателя. Тогда можно доставлять товары курьером;
  • если не совпадает — курьерская доставка недоступна.
Краснодара нет в списке городов присутствия. Товары доставят только почтой

Процесс ломается, если у нескольких городов названия совпадают. Магазин видел одинаковые наименования и не понимал, что покупатели живут в разных населенных пунктах. Поэтому предлагал доставить заказ курьером в города, куда товары привозят только Почтой России.

Скажем, сайт определял, что человек живет в Павловске. Название «Павловск» есть в списке городов присутствия розничной сети, поэтому покупателю предлагали курьерскую доставку. 

Но магазин не подозревал, что в России аж три Павловска: город в составе Санкт-Петербурга, город в Воронежской области и село в Алтайском крае. В первые два курьер приедет, а в Алтайский край — нет.

Из-за путаницы с названиями городов интернет-магазин терял заказы и деньги. Издержки зависели не только от города, но и от улицы, на которой жил человек.

Представьте, житель Павловска в Алтайском крае заказывал доставку на улицу Полушкина. Павловск есть в списке присутствия розничной сети, поэтому магазин принимал заказ и передавал курьерам. Однако те замечали: в том Павловске, где работает доставка, улицы Полушкина нет. Тогда менеджеры магазина звонили клиенту, объясняли ситуацию, меняли способ доставки и просили доплату. Или отменяли заказ и возвращали деньги. Раздраженный человек вряд ли еще раз покупал в магазине.

Хуже, если курьерскую доставку заказали, например, на улицу Березовую. Такая есть и в Павловске Алтайского края, и в Павловске Воронежской области. Курьер, ничего не подозревая, привозил товары, а его встречали люди, которые ничего не заказывали. Настоящий же покупатель ждал на улице Березовой в другом городе. В результате магазин оплачивал еще и «холостые» разъезды курьеров.

Благодаря «Дадате» интернет-магазин различает города-тезки и сохраняет около 20 заказов в месяц

Разработчики интернет-магазина придумали, как избежать путаницы в городах: можно сверять населенные пункты по КЛАДР-коду. Это один из уникальных идентификаторов города в адресных справочниках налоговой. У каждого населенного пункта свой код: даже если названия совпадут до буквы, коды покажут, что города разные.

Например, у Павловска в составе Санкт-Петербурга КЛАДР-код — 7800000700000; у Павловска в Воронежской области — 3602100100000; у Павловска в Алтайском крае — 2203200000100.

Для сверки по КЛАДР-коду нужно решить две задачи:

1. Вместе с названием города покупателя определять КЛАДР-код. Название города определяли по названию квадрата на карте, в который попадали координаты пользователя. Чтобы получать не только наименование населенного пункта, но и КЛАДР-код, нужно присвоить квадратам идентификаторы. Это можно сделать вручную, но квадратов — сотни, уйдут часы, чтобы найти и прописать код каждому.

2. Проставить КЛАДР-коды городам в списке присутствия розничной сети. Чтобы было, с чем сравнивать код города покупателя.

Разработчики автоматически проставили КЛАДР-коды квадратам на карте и городам в списке присутствия. Помог справочник «Города России» «Дадаты» — перечень городов, дополненный полезными сведениями: КЛАДР- и ФИАС-кодами, ОКАТО, ОКТМО, часовым поясом и координатами. 

Справочник бесплатный и лежит в открытом доступе на GitHub

Заодно список «Дадаты» автоматически объединили с внутренними перечнями: списком городов присутствия розничной сети и списком квадратов на карте с названиями городов. Это пять минут работы с SQL. Так у каждого населенного пункта в перечнях появился уникальный КЛАДР-код. 

Теперь магазин различает города с одинаковыми названиями и понимает, в какой из них доедет курьер. Поэтому предлагает правильные способы доставки и экономит деньги.

Магазин определяет, что человек живет в Павловске с КЛАДР-кодом 2203200000100. Такого КЛАДР-кода нет в списке городов присутствия, а значит, розничная сеть там не работает. Человеку предлагают доставку почтой — как и положено. 

API-методы «Дадаты», чтобы без ошибок определять местоположение покупателей и быстрее получать заказы

Город по IP. Вернет детальную информацию о населенном пункте: название, индекс, регион, КЛАДР-, ФИАС- и ГАР-коды. Пригодится, чтобы автоматически актуализировать ассортимент и считать цену доставки. 

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

Подсказки по адресам. Исправляют и дополняют адреса, которые клиенты вводят при оформлении заказа. Так контакты сразу попадают в базу без ошибок и в едином формате. Не придется перепроверять адреса — можно сразу передавать их службе доставки. А еще с «Подсказками» люди вводят данные на 300% быстрее, поэтому заполняют формы без раздражения и реже бросают.

Не пропускайте важные материалы

Подпишитесь в соцсетях

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

Подпишитесь на рассылку

Раз в месяц присылаем на почту новые статьи из блога и обновления сервисов «Дадаты». Не тревожим без повода и не шлем спам.