WordPress · 6 мин чтения

Интернет магазин с личным кабинетом: заказы, повтор покупки и адреса доставки

Когда покупатель возвращается за вторым заказом, форма оформления с нуля - лишний барьер, из-за которого часть клиентов просто уходит туда, где корзина заполняется быстрее. Интернет магазин с личным кабинетом снимает эту проблему: покупатель видит историю заказов, сохранённые адреса доставки и может повторить покупку за пару кликов вместо повторного ввода ФИО, телефона и адреса. Ниже - что реально должно быть в разделе «Мои заказы», как хранить адреса и куда встраивать кнопку повтора заказа, без лишних абстракций.

Зачем покупателю личный кабинет с историей заказов

Без кабинета покупатель либо ищет письмо с подтверждением заказа в почте, либо пишет в поддержку с вопросом «а где мой заказ». Это лишняя нагрузка на менеджера и потерянное доверие клиента, если ответ приходит не сразу. С кабинетом статус заказа виден сразу: оплачен, передан в доставку, приехал в пункт выдачи.

Для повторных покупок это ещё важнее. Если у магазина подключена оплата через Т‑Банк с сохранением карты, повторная оплата занимает один клик без ввода реквизитов заново - но это работает только вместе с кабинетом, где покупатель видит, что именно он заказывает повторно, а не просто платит вслепую.

По моей практике доля повторных покупок у клиентов с расходным товаром (косметика, зоотовары, БАДы) заметно выше именно у тех магазинов, где есть история заказов и кнопка «Повторить» - людям проще нажать кнопку, чем вспоминать, что они брали в прошлый раз.

Раздел «Мои заказы»: что должно быть внутри

Минимальный набор полей на странице списка заказов:

  • номер заказа и дата оформления
  • статус: в обработке, оплачен, передан в доставку, доставлен, отменён
  • состав заказа - фото товара, название, количество, цена на момент покупки
  • итоговая сумма и способ оплаты
  • трек-номер и ссылка на отслеживание, если доставка через СДЭК или другую службу с API статусов
  • кнопка «Повторить заказ»

Цену фиксирую именно на момент покупки, а не подтягиваю текущую - иначе покупатель откроет старый заказ и увидит другую сумму, что выглядит как ошибка. Статусы синхронизирую двумя источниками: вебхуком от эквайринга при оплате и опросом API службы доставки при смене статуса посылки.

Историю заказов храню минимум за 12 месяцев в основной таблице, к которой обращается интерфейс кабинета. Более старые заказы можно переносить в архивную таблицу и не показывать в интерфейсе по умолчанию, чтобы список не разрастался и не тормозил у клиентов с большим количеством покупок.

Адреса доставки: сохранение и повторное использование

Один адрес в профиле - это минимум, а не решение. У покупателя обычно есть дом, работа и иногда адрес родителей, куда он тоже заказывает подарки. В базе это отдельная таблица адресов, привязанная к пользователю, с флагом адреса по умолчанию, а не одно текстовое поле в профиле.

Обязательные поля адреса для доставки:

  • ФИО получателя и телефон - не обязательно совпадают с владельцем аккаунта
  • город и индекс
  • адрес или пункт выдачи (ПВЗ)
  • комментарий курьеру

Если проект собран на Tilda, для расчёта стоимости по зонам не нужно городить отдельный скрипт - в настройках доставки есть встроенный калькулятор СДЭК, который считает тариф по индексу получателя прямо из интерфейса конструктора. Отдельная доработка там нужна не для самого расчёта, а для сохранения адреса в личном кабинете покупателя между заказами, потому что это уже не доставка, а профиль пользователя.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

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

Повтор покупки в один клик: механика и подводные камни

Кнопка «Повторить заказ» на странице истории копирует позиции из старого заказа в корзину. На этом этапе есть два момента, которые ломают доверие, если их пропустить:

  • остаток товара - если позиции нет в наличии, её нельзя молча добавить в корзину, нужно предупредить и либо убрать, либо предложить замену
  • изменение цены - если цена выросла или снизилась с момента прошлого заказа, показываю разницу явно, а не списываю по старой цене без объяснения

По моей практике постоянный клиент оформляет повторный заказ за 20-30 секунд вместо пары минут, которые уходят на повторный подбор товаров и ввод адреса заново - и это разница, которая напрямую влияет на то, вернётся ли человек в третий раз.

Для магазинов с регулярными расходниками полезно не просто ждать, пока клиент сам зайдёт в кабинет, а напоминать о повторной покупке. Это уже не про сам кабинет, а про автоматизацию вокруг него: сценарий в n8n может раз в сутки выбирать заказы, по которым прошло, скажем, 25-30 дней с момента покупки расходного товара, и отправлять клиенту напоминание в Telegram или на почту со ссылкой на повтор заказа.

Личный кабинет в WooCommerce, на Tilda и в самописном магазине

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

Платформа Где хранится история заказов и адреса Как устроен повтор покупки
WooCommerce штатная страница «Мой аккаунт»: заказы, адреса, данные аккаунта из коробки через хук на странице заказа или отдельный плагин повторного заказа
Tilda + внешняя CRM Tilda ориентирована на приём заказов и синхронизацию с 1С через CommerceML, поэтому историю по конкретному покупателю обычно веду во внешней CRM или в отдельном личном кабинете, который подключаю к формам Tilda через API кастомная кнопка в личном кабинете, которая обращается к API магазина
Самописный магазин своя база данных, таблицы заказов и адресов проектируются под задачу серверный обработчик копирует позиции заказа в корзину с проверкой остатков

Если нужен интернет-магазин под ключ с личным кабинетом сразу под задачу, а не поверх готового конструктора, обычно беру такой проект целиком: интернет-магазин под ключ закрывает и корзину, и кабинет, и интеграции с оплатой и доставкой в одном бэкенде, без склейки разных сервисов между собой.

Безопасность данных клиентов и где их хранить

Адреса и телефоны покупателей - персональные данные, и по 152-ФЗ их нужно хранить на серверах на территории России. Это значит, что список клиентов с адресами не стоит держать в Google Таблицах или Airtable, даже для внутренней аналитики - эти сервисы физически хранят данные за рубежом.

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

Частые вопросы

Нужен ли личный кабинет маленькому интернет-магазину на старте?

Если бюджет и сроки поджимают, можно запуститься без полноценного кабинета - только с поиском заказа по номеру телефона и номеру заказа, без регистрации. Полноценную историю и сохранённые адреса добавляю уже вторым этапом, когда видно, что доля повторных покупок растёт и клиентам реально нужно быстрее оформлять заказ.

Как хранить несколько адресов доставки одного покупателя?

Отдельной таблицей, привязанной к пользователю по id, с флагом адреса по умолчанию. Одно текстовое поле в профиле для этого не подходит - как только у клиента появляется второй адрес, начинаются костыли с разделителями внутри строки.

Что делать, если товара из прошлого заказа больше нет в наличии, а клиент нажал «Повторить заказ»?

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

Можно ли сделать личный кабинет без регистрации, по номеру телефона?

Да, вход по номеру телефона и коду из смс вместо email и пароля - рабочий вариант, особенно для мобильной аудитории. На структуру хранения истории заказов и адресов это не влияет, меняется только способ входа в аккаунт.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно