Збір відгуків про покупку через email
Після успішної покупки клієнт часто забуває залишити відгук. Листи, надіслані одразу після оплати, ігноруються — користувач ще не встиг скористатися товаром. Якщо ж надіслати запит занадто пізно, покупець втрачає інтерес. Ми вирішуємо цю проблему за допомогою відкладеної відправки листа через 14 днів після покупки, з прямою оцінкою в тілі листа та розумним маршрутизацією: висока оцінка веде на Google або Trustpilot, низька — на форму приватного відгуку. Такий підхід підвищує конверсію в відгук на 40% за нашими кейсами, а кількість негативних публічних відгуків знижується на 60%.
Чому email — найкращий канал для збору відгуків?
Email забезпечує персональний контакт: лист приходить в особисту скриньку, містить контекст покупки і не вимагає додаткових дій від клієнта. На відміну від спливаючих вікон на сайті або push-повідомлень, email не блокується і читається в зручний час. За нашими даними, конверсія в відгук через email у 2.5 рази вища, ніж через pop-up, і в 4 рази вища, ніж через push-сповіщення. Це підтверджується і дослідженнями: email marketing залишається найефективнішим каналом для залучення після покупки.
Як працює відкладений збір відгуків: архітектура на 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=uk');
}
// Низька оцінка → показуємо форму для приватного відгуку
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 рази.







