Реалізація Post-Purchase Survey (опитування після покупки) на сайті

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Реалізація Post-Purchase Survey (опитування після покупки) на сайті
Середня
від 1 робочого дня до 3 робочих днів
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Реалізація Post-Purchase Survey (опрос після покупки) на сайті

Post-purchase survey — один з небагатьох інструментів, що дає пряму обратну зв'язок від покупця в момент найвищої лояльності. Правильно реалізований опрос дає дані для оптимізації воронки, виявляє джерела трафіку, які Analytics не видить (сарафанне радіо, подкасти, офлайн-реклама), та знижує кількість повернень за рахунок проактивної роботи з очікуваннями.

Де та коли показувати

Три точки розміщення з різною ефективністю:

1. Success page (одразу після оплати). Найвища конверсія — 30–50%. Користувач ще «в моменті», не закрив вкладку. Показуємо 1–2 питання, не більше.

2. Email через 3–7 днів. Нижча конверсія (5–15%), зато можна задати більше питань про реальний досвід використання товара. Актуально для фізичних товарів.

3. Inline в особистому кабінеті. Ненав'язливе нагадування при наступному візиті. Працює для SaaS та підписочних продуктів.

Питання: що запитувати

Класичний набір для e-commerce:

1. Як вы дізналися про нас? (одиночний вибір)
   □ Google / Яндекс
   □ Соцсеті (Instagram, TikTok, VK)
   □ Порекомендував друг/колега
   □ YouTube
   □ Подкаст
   □ Вже купував раніше
   □ Інше: [поле]

2. Що повплинула на рішення купити? (мультивибір)
   □ Ціна
   □ Відгуки
   □ Репутація бренду
   □ Конкретна функція/характеристика
   □ Порівняння з конкурентами

3. Наскільки вероятно, що порекомендуєте нас? (NPS, 0–10)

Питання про джерело трафіку — найцінніше. Google Analytics, Meta Pixel та UTM-метки втрачають до 40% атрибуцій (iOS 14.5+, Safari ITP, VPN, прямі переходи). Опрос заповнює пробіл.

Технічна реалізація

Модель даних:

CREATE TABLE surveys (
    id          BIGSERIAL PRIMARY KEY,
    order_id    BIGINT REFERENCES orders(id),
    user_id     BIGINT REFERENCES users(id),
    answers     JSONB,
    nps_score   SMALLINT CHECK (nps_score BETWEEN 0 AND 10),
    source      VARCHAR(100),
    completed   BOOLEAN DEFAULT false,
    token       UUID DEFAULT gen_random_uuid(), -- для email-посилання без логіну
    created_at  TIMESTAMP DEFAULT NOW(),
    completed_at TIMESTAMP
);

answers в JSONB дозволяє зберігати довільну структуру ответів без міграцій при зміні опитувальника.

API ендпоінти:

POST /api/surveys          — створити опрос при створенні замовлення
GET  /api/surveys/{token}  — отримати питання (публічний, по токену)
POST /api/surveys/{token}  — зберегти ответи

Компонент на success page (React):

const PostPurchaseSurvey: React.FC<{ orderId: number }> = ({ orderId }) => {
  const [step, setStep] = useState(0);
  const [answers, setAnswers] = useState<Record<string, unknown>>({});
  const [dismissed, setDismissed] = useState(false);

  const questions = [
    { id: 'source', type: 'single', label: 'Як вы дізналися про нас?', options: [...] },
    { id: 'nps',    type: 'nps',    label: 'Наскільки вероятно порекомендуєте?' },
  ];

  const handleAnswer = (questionId: string, value: unknown) => {
    setAnswers(prev => ({ ...prev, [questionId]: value }));
    if (step < questions.length - 1) {
      setStep(s => s + 1);
    } else {
      submitSurvey({ ...answers, [questionId]: value });
    }
  };

  if (dismissed) return null;

  return (
    <div className="survey-card">
      <button className="dismiss" onClick={() => setDismissed(true)}>×</button>
      <QuestionRenderer
        question={questions[step]}
        onAnswer={handleAnswer}
      />
      <ProgressDots total={questions.length} current={step} />
    </div>
  );
};

Прогрес по крокам замість довгої форми піднімає completion rate на 20–35%.

Email-опрос

Survey token вбудовується в transactional email. Посилання вида /survey/{token} відкриває сторінку без необхідності логіну:

// Laravel Mailable
public function build() {
    return $this->markdown('emails.survey')
        ->with([
            'survey_url' => route('survey.show', $this->survey->token),
            'order'      => $this->order,
        ]);
}

На сторінці /survey/{token} — той же React-компонент, але з розширеним набором питань (5–7 замість 2).

Дашборд та аналітика

Мінімальний дашборд:

  • Розподіл джерел — pie chart за answers->>'source'
  • NPS trend — лінійний графік NPS по тижнях
  • Completion rateCOUNT(*) WHERE completed / COUNT(*) * 100

SQL для розподіл джерел:

SELECT
    answers->>'source' AS source,
    COUNT(*) AS cnt,
    ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER (), 1) AS pct
FROM surveys
WHERE completed = true
  AND created_at >= NOW() - INTERVAL '30 days'
GROUP BY 1
ORDER BY 2 DESC;

NPS сегментація та follow-up

Оцінка Сегмент Дія
9–10 Promoter Просити відгук / реферальна програма
7–8 Passive Нічого або листа з пропозицією
0–6 Detractor Автоматичний тикет в підтримку

Триггер на Detractor:

// В observer після збереження опросу
if ($survey->nps_score <= 6) {
    SupportTicket::create([
        'user_id'  => $survey->user_id,
        'subject'  => 'Low NPS follow-up',
        'priority' => 'high',
        'meta'     => ['order_id' => $survey->order_id, 'nps' => $survey->nps_score],
    ]);
}

Строки

Завдання Час
Модель даних + API 0,5 дня
Компонент success page 1 день
Email-інтеграція з токеном 0,5 дня
Дашборд аналітики 1 день

Разом: 2,5–3 робочих дні.