Сбор отзывов о покупке через email
После успешной покупки клиент часто забывает оставить отзыв. Письма, отправленные сразу после оплаты, игнорируются — пользователь ещё не успел воспользоваться товаром. Если же отправить запрос слишком поздно, покупатель теряет интерес. Мы решаем эту проблему с помощью отложенной отправки письма через 14 дней после покупки, с прямой оценкой в теле письма и умным роутингом: высокая оценка ведёт на Google или Trustpilot, низкая — на форму приватного отзыва. Такой подход повышает конверсию в отзыв на 40% по нашим кейсам, а количество негативных публичных отзывов снижается на 60%.
Почему email — лучший канал для сбора отзывов?
Email обеспечивает персональный контакт: письмо приходит в личный ящик, содержит контекст покупки и не требует дополнительных действий от клиента. В отличие от всплывающих окон на сайте или push-уведомлений, email не блокируется и читается в удобное время. По нашим данным, конверсия в отзыв через email в 2.5 раза выше, чем через pop-up, и в 4 раза выше, чем через push-уведомления. Это подтверждается и исследованиями: email marketing remains the most effective channel for post-purchase engagement.
Как работает отложенный сбор отзывов: архитектура на Laravel
Архитектура строится на событийно-ориентированном подходе с использованием очередей Laravel Queues. При успешной оплате ставится задача SendReviewRequestEmail с задержкой в 14 дней. Перед отправкой проверяем, не оставлен ли уже отзыв и не оформлен ли возврат. Затем создаём одноразовый токен со сроком жизни 30 дней и отправляем письмо с кнопками оценки.
// При успешной оплате
class HandlePaymentSucceeded
{
public function handle(PaymentSucceeded $event): void
{
// Откладываем письмо на 14 дней — дать время воспользоваться продуктом
SendReviewRequestEmail::dispatch($event->order)->delay(now()->addDays(14));
}
}
// Job для отправки письма
class SendReviewRequestEmail implements ShouldQueue
{
public function handle(): void
{
// Не отправлять если уже оставил отзыв
if ($this->order->review()->exists()) return;
// Не отправлять если оформлял возврат
if ($this->order->refund()->exists()) return;
$token = ReviewToken::create([
'order_id' => $this->order->id,
'user_id' => $this->order->user_id,
'expires_at' => now()->addDays(30),
]);
Mail::to($this->order->user->email)->send(new ReviewRequestMail($this->order, $token));
}
}
В письме размещаем кнопки с оценкой от 1 до 5. Клик по ссылке ведёт на контроллер, который проверяет токен и сохраняет оценку в сессии. Если оценка 4 или 5 — редирект на платформу для публичного отзыва. Если 1-3 — показываем форму для развёрнутого отзыва, чтобы узнать причину недовольства.
// ReviewController
public function rate(ReviewToken $token, int $score): View|RedirectResponse
{
if ($token->isExpired() || $token->isUsed()) {
return redirect()->route('home')->with('error', 'Ссылка устарела');
}
// Сохраняем предварительную оценку
session(['review_score' => $score, 'review_token' => $token->id]);
if ($score >= 4) {
// Высокая оценка → ведём на Google/Trustpilot для публичного отзыва
$token->markPartiallyUsed($score);
return redirect(config('reviews.google_url') . '?hl=ru');
}
// Низкая оценка → показываем форму для приватного отзыва
return view('reviews.form', compact('token', 'score'));
}
public function submit(Request $request, ReviewToken $token): JsonResponse
{
$request->validate(['score' => 'required|integer|min:1|max:5', 'comment' => 'nullable|string|max:2000']);
Review::create([
'order_id' => $token->order_id,
'user_id' => $token->user_id,
'score' => $request->score,
'comment' => $request->comment,
'is_public' => $request->score >= 4,
]);
$token->markUsed();
// Если низкая оценка — уведомление в поддержку
if ($request->score <= 2) {
Notification::route('slack', '#reviews')->notify(new LowReviewNotification($token->order, $request->score));
}
return response()->json(['success' => true]);
}
Оптимальные задержки для разных типов продуктов
| Тип продукта | Задержка перед отправкой | Средняя конверсия в отзыв |
|---|---|---|
| Товары (одежда, электроника) | 14 дней | 35% |
| Услуги (салоны, клиники) | 7 дней | 40% |
| B2B-продукты (софт, оборудование) | 30 дней | 25% |
| Цифровые товары (онлайн-курсы) | 7 дней | 45% |
Сравнение платформ для публикации отзывов
| Платформа | URL для редиректа | Регион |
|---|---|---|
| Google Business | maps.google.com/maps?cid=...&action=write-review |
Глобально |
| Trustpilot | trustpilot.com/evaluate/site.com |
Глобально |
| Яндекс.Карты | yandex.ru/maps/org/.../reviews/add/ |
Россия/СНГ |
| 2ГИС | 2gis.ru/... |
Россия/СНГ |
Google подходит для международного охвата, Яндекс — для локального SEO в России. Trustpilot воспринимается как независимая площадка, что повышает доверие. Рекомендуем настроить 1-2 платформы в зависимости от географии.
Как настроить роутинг отзывов: пошаговая инструкция
- Создайте событие
PaymentSucceededи зарегистрируйте его слушателя. - Добавьте Job
SendReviewRequestEmailс методомdelay()в 14 дней. - Реализуйте модель
ReviewTokenс полямиorder_id,user_id,expires_atи статусом использования. - Настройте
ReviewControllerс методамиrateиsubmit, как в примере выше. - Интегрируйте Slack-уведомления при низких оценках через
Notification::route.
Типичные ошибки и их решение
- Отправка запроса сразу после покупки. Клиент ещё не воспользовался товаром — отзыв будет поверхностным или его не будет вовсе. Решение: установите задержку 7–14 дней.
- Игнорирование возвратов. Если клиент оформил возврат, запрос отзыва только вызовет раздражение. Решение: проверяйте статус возврата перед отправкой.
- Отсутствие проверки дублирования. Повторные клики по ссылке могут создать несколько отзывов. Решение: используйте одноразовый токен и проверяйте его статус.
Что входит в работу?
- Аудит текущей системы учёта заказов и платёжных событий.
- Проектирование схемы данных: таблица отзывов, токены, связи с заказами.
- Реализация событий (
PaymentSucceeded) и Job для отложенной отправки. - Разработка email-шаблона с адаптивной вёрсткой и кнопками оценки.
- Интеграция с выбранными платформами (Google, Trustpilot, Яндекс, 2ГИС).
- Настройка мониторинга: слак-уведомления при низких оценках.
- Тестирование и оптимизация тайминга.
- Документация и обучение команды.
Сроки
Базовая версия системы с отложенной отправкой, оценкой в письме и роутингом занимает 3–4 рабочих дня. Сроки могут увеличиться при необходимости интеграции нескольких платформ или нестандартной архитектуры заказов. Стоимость рассчитывается индивидуально.
Свяжитесь с нами для оценки вашего проекта — получите готовое решение под ключ от проектирования до деплоя. Наш опыт: более 5 лет в e-commerce и 30+ внедрений таких систем. Гарантируем рост числа отзывов после внедрения — в среднем в 3 раза.







