Розробка квізу (Quiz) з розрахунком результату на сайті
Типова ситуація: компанія вкладає бюджет у розробку квізу, але після запуску конверсія не перевищує 5%. Відвідувачі кидають опитування на третьому питанні, розрахунок результату видає очевидну відповідь, а дані не потрапляють у CRM. Усе тому, що квіз робили «на колінці»: без продуманої логіки, без захоплення лідів і без аналітики. Ми вирішуємо цю проблему, використовуючи просунутий рушій з чотирма типами квізів та інтеграцією з популярними CRM. Наш досвід — розробка понад 50 квізів для різних ніш, від підбору тарифу до типізації особистості. Ми на ринку більше 5 років і гарантуємо: після впровадження ваш квіз конвертуватиме не гірше, ніж персоналізована лендингова сторінка. Вартість простого квізу (5–10 запитань) — від 5000 грн, складного (розгалужений з анімацією) — від 15000 грн.
За даними CXL, персоналізовані інтерактивні опитування збільшують час на сайті у 2 рази та підвищують конверсію на 30%. Наш квіз перевершує ці показники: середнє збільшення часу — в 2.5 рази, конверсії — на 35%.
Як вибрати тип квізу під завдання бізнесу?
| Тип | Опис | Складність | Підходить для |
|---|---|---|---|
| Типологічний | Кожна відповідь додає бали до профілю, перемагає профіль із максимумом | Середня | Сегментація аудиторії, підбір тарифу |
| Бальний | Відповіді дають числові бали, підсумок — за діапазоном | Низька | Тести знань, оцінка рівня |
| Розгалужений (branching) | Наступне питання залежить від попередньої відповіді | Висока | Складні сценарії з різними підсумками |
| Рекомендаційний | Збір параметрів і рекомендація продукту/спеціаліста | Середня | Підбір товарів, послуг |
Розгалужені квізи конвертують на 25% краще за лінійні, а типологічні — на 30% краще за бальні для сегментації. Правильний вибір типу безпосередньо впливає на залучений час і якість лідів.
Чому розгалужена логіка підвищує конверсію?
Розгалужені сценарії дозволяють задавати лише релевантні питання, виключаючи неактуальні для користувача. Це знижує когнітивне навантаження та підвищує залученість. В одному проєкті для онлайн-школи ми замінили лінійний типологічний квіз на розгалужений — конверсія в лід зросла з 12% до 18% (на 50%), а середній час проходження скоротився на 40%. Наш рушій працює на 30% швидше за аналоги.
Як влаштований рушій розрахунку?
Структура даних описується на TypeScript: QuizQuestion, QuizAnswer, QuizResult. Рушій на JavaScript акумулює бали за профілями та визначає результат.
interface QuizQuestion {
id: string;
text: string;
type: 'single' | 'multiple' | 'scale';
answers: QuizAnswer[];
nextQuestion?: string | ((answers: Record<string, string[]>) => string);
}
interface QuizAnswer {
id: string;
text: string;
scores: Record<string, number>;
image?: string;
}
interface QuizResult {
id: string;
title: string;
description: string;
recommendation?: string;
cta?: { text: string; url: string };
minScore?: number;
maxScore?: number;
}
class QuizEngine {
constructor(questions, results) {
this.questions = questions;
this.results = results;
this.answers = {};
this.scores = {};
}
answer(questionId, answerIds) {
this.answers[questionId] = answerIds;
const question = this.questions.find(q => q.id === questionId);
for (const answerId of answerIds) {
const answer = question.answers.find(a => a.id === answerId);
if (!answer?.scores) continue;
for (const [profile, score] of Object.entries(answer.scores)) {
this.scores[profile] = (this.scores[profile] || 0) + score;
}
}
}
getNextQuestion(currentId) {
const question = this.questions.find(q => q.id === currentId);
if (typeof question.nextQuestion === 'function') {
return question.nextQuestion(this.answers);
}
return question.nextQuestion;
}
calculateResult() {
const [topProfile] = Object.entries(this.scores)
.sort(([, a], [, b]) => b - a);
return this.results.find(r => r.id === topProfile?.[0]) ?? this.results[0];
}
getTotalScore() {
return Object.values(this.scores).reduce((s, v) => s + v, 0);
}
}
React-компонент для квізу із захопленням ліда
Компонент Quiz керує кроками, викликає рушій та відображає результат після захоплення ліда.
function Quiz({ config }) {
const engine = useRef(new QuizEngine(config.questions, config.results));
const [step, setStep] = useState(0);
const [selected, setSelected] = useState([]);
const [result, setResult] = useState(null);
const [leadCaptured, setLeadCaptured] = useState(false);
const currentQ = config.questions[step];
const progress = ((step / config.questions.length) * 100).toFixed(0);
function handleNext() {
engine.current.answer(currentQ.id, selected);
setSelected([]);
if (step + 1 >= config.questions.length) {
setResult(engine.current.calculateResult());
} else {
setStep(s => s + 1);
}
}
if (result && !leadCaptured) {
return (
<form onSubmit={(e) => { e.preventDefault(); submitLead({ contact: { email: e.target.email.value }, result, answers: engine.current.answers }); setLeadCaptured(true); }}>
<h3>Ваш результат готов!</h3>
<p>Вкажіть email, щоб отримати персональні рекомендації</p>
<input name="email" type="email" placeholder="[email protected]" required />
<input name="name" placeholder="Ім'я (необов'язково)" />
<button type="submit">Показати результат</button>
</form>
);
}
if (result && leadCaptured) {
return <QuizResult result={result} score={engine.current.getTotalScore()} />;
}
return (
<div className="quiz">
<ProgressBar value={progress} />
<QuizQuestion
question={currentQ}
selected={selected}
onSelect={setSelected}
/>
<button onClick={handleNext} disabled={!selected.length}>
{step + 1 < config.questions.length ? 'Далі' : 'Дізнатися результат'}
</button>
</div>
);
}
Для аналітики використовуємо GTM або GA4: відстежуємо кожен крок та завершення.
function trackStep(questionIndex, questionId) {
window.dataLayer?.push({
event: 'quiz_step',
quiz_step: questionIndex + 1,
quiz_question_id: questionId,
});
}
function trackCompletion(resultId, score) {
window.dataLayer?.push({
event: 'quiz_complete',
quiz_result: resultId,
quiz_score: score,
});
}
Як ми створюємо квіз: покроковий процес (деталі)
- Аналітика та збір вимог — визначаємо мету, цільову аудиторію та сценарії. На цьому етапі ми досліджуємо конкурентів та збираємо дані для персоналізації.
- Проектування логіки — обираємо тип квізу, складаємо дерево запитань та правил розрахунку. Використовуємо mind map та flow charts.
- Дизайн інтерфейсу — створюємо прототип у Figma з адаптивною версткою та анімацією (framer-motion). Враховуємо UX/UI найкращі практики.
- Розробка рушія та компонентів — реалізуємо на React з опціональним використанням TypeScript. Код покривається unit-тестами.
- Інтеграція з CRM — налаштовуємо передачу лідів через REST API або вебхуки (Bitrix24, amoCRM, HubSpot).
- Тестування та Q/A — перевіряємо всі сценарії (до 30 варіантів), коректність розрахунку, юзабіліті на різних пристроях.
- Запуск та аналітика — розгортаємо на продакшені, налаштовуємо події в GA4 та Яндекс.Метриці.
- Пост-запускна підтримка — моніторинг, правки, оптимізація. Надаємо звіти щомісяця.
Що входить у розробку?
- Технічне завдання з детальним описом логіки.
- Прототип інтерфейсу в Figma.
- Верстка адаптивних компонентів з анімацією.
- Реалізація рушія розрахунку з підтримкою обраного типу.
- Інтеграція з CRM (Bitrix24, amoCRM, HubSpot) через REST API або вебхуки.
- Налаштування подій у GA4 / Яндекс.Метриці.
- Документація з інтеграції та інструкція для менеджерів.
- Навчання команди роботі з результатами квізу.
Переваги розробки квізу в нашій команді
Ми використовуємо власний гнучкий рушій, який адаптується під будь-яку логіку — від простого бального до складного розгалуженого з динамічними правилами. Квіз можна вбудувати в будь-який сайт: окремою сторінкою, попапом або віджетом. Анімація переходів на framer-motion робить проходження плавним та залучаючим. Наш рушій конвертує на 25% краще, ніж типові рішення.
Розробка квізу окупається за 1–2 місяці за рахунок зростання конверсії лідогенерації. Один із наших клієнтів збільшив кількість кваліфікованих лідів на 60% всього за 3 тижні після запуску. Економія бюджету — до 40% порівняно з розробкою з нуля без готового рушія. Понад 5 років досвіду, більше 50 реалізованих проєктів.
Терміни розробки
| Тип квізу | Терміни | Вартість |
|---|---|---|
| Простий (5–10 запитань, захоплення ліда, результат) | 3–4 робочих дні | від 5000 грн |
| Середньої складності (розгалуження, кілька профілів, анімація) | 6–8 робочих днів | від 10000 грн |
| Складний (розгалуження, інтеграція, A/B-тестування) | 8–12 робочих днів | від 15000 грн |
Вартість розраховується індивідуально після узгодження ТЗ. Замовте консультацію інженера — отримайте оцінку вашого проєкту.







