How-To Guide

How to Build a Lead Qualification Quiz

January 2026 · 11 min read

Not all leads are equal. Some are ready to buy today. Others are just browsing. A lead qualification quiz sorts them automatically - hot leads go to sales, warm leads get nurtured, cold leads get resources. No manual scoring required.

This guide shows how to build a quiz that scores leads based on their answers and shows different follow-up actions based on their score.

What is Lead Qualification?

Lead qualification is figuring out if someone is likely to buy. The classic framework is BANT:

  • Budget - Can they afford you?
  • Authority - Can they make the decision?
  • Need - Do they have a problem you solve?
  • Timeline - When do they need a solution?

A qualification quiz asks these questions upfront. Based on answers, you categorize leads:

  • Hot (Sales Qualified) - Has budget, authority, need, and urgency. Talk to them now.
  • Warm (Marketing Qualified) - Missing one or two criteria. Nurture them.
  • Cold - Just researching. Give them resources, check back later.

Step 1: Define Your Scoring Criteria

Before writing code, decide what each answer is worth. Here's an example scoring system:

// Define point values for each answer
const budgetScores: Record<string, number> = {
    'under-1k': 0,
    '1k-5k': 10,
    '5k-15k': 20,
    '15k-plus': 30
};

const timelineScores: Record<string, number> = {
    'just-looking': 0,
    '3-6-months': 10,
    '1-3-months': 20,
    'asap': 30
};

const roleScores: Record<string, number> = {
    'researcher': 5,
    'influencer': 15,
    'decision-maker': 25
};

const companySizeScores: Record<string, number> = {
    '1-10': 5,
    '11-50': 10,
    '51-200': 15,
    '200-plus': 20
};

Higher points for answers that indicate buying readiness. A decision-maker with a $15k+ budget who needs something ASAP scores 85 points. A researcher with no budget who's just looking scores 5 points.

Pro tip

Adjust these scores based on your business. If timeline matters more than budget for you, weight it higher. There's no universal formula - it depends on what predicts conversion for your specific product.

Step 2: Create the Quiz Questions

Add questions that map to your scoring criteria:

const questions = form.addSubform('questions', {
    title: () => 'Quick Assessment'
});

questions.addRow(row => {
    row.addRadioButton('budget', {
        label: "What's your budget for this project?",
        options: [
            { id: 'under-1k', name: 'Under $1,000' },
            { id: '1k-5k', name: '$1,000 - $5,000' },
            { id: '5k-15k', name: '$5,000 - $15,000' },
            { id: '15k-plus', name: '$15,000+' }
        ],
        orientation: 'vertical',
        isRequired: true
    });
});

questions.addRow(row => {
    row.addRadioButton('timeline', {
        label: 'When do you need this done?',
        options: [
            { id: 'just-looking', name: 'Just researching' },
            { id: '3-6-months', name: 'In 3-6 months' },
            { id: '1-3-months', name: 'In 1-3 months' },
            { id: 'asap', name: 'ASAP' }
        ],
        orientation: 'vertical',
        isRequired: true
    });
});

Keep it short. 4-5 questions max. Every additional question reduces completion rate. Ask only what you need to qualify them.

Step 3: Calculate the Lead Score

Sum up the points based on answers:

const getLeadScore = () => {
    const budget = questions.radioButton('budget')?.value() || '';
    const timeline = questions.radioButton('timeline')?.value() || '';
    const role = questions.radioButton('role')?.value() || '';
    const companySize = questions.radioButton('companySize')?.value() || '';

    return (budgetScores[budget] || 0) +
           (timelineScores[timeline] || 0) +
           (roleScores[role] || 0) +
           (companySizeScores[companySize] || 0);
};

const getLeadCategory = () => {
    const score = getLeadScore();
    if (score >= 70) return 'hot';
    if (score >= 40) return 'warm';
    return 'cold';
};

The thresholds (70 for hot, 40 for warm) are examples. Adjust based on your data. If too many leads are "hot" but don't convert, raise the threshold.

Step 4: Show Different Results by Category

This is where it gets powerful. Show different content based on their score:

const results = form.addSubform('results', {
    title: () => {
        const category = getLeadCategory();
        if (category === 'hot') return "You're a Great Fit!";
        if (category === 'warm') return "Let's Explore Options";
        return "Here Are Some Resources";
    },
    isVisible: () => allQuestionsAnswered(),
    customStyles: () => {
        const category = getLeadCategory();
        if (category === 'hot') {
            return { backgroundColor: '#dcfce7', border: '2px solid #22c55e' };
        }
        if (category === 'warm') {
            return { backgroundColor: '#fef9c3', border: '2px solid #eab308' };
        }
        return { backgroundColor: '#f3f4f6', border: '2px solid #9ca3af' };
    }
});

The title, message, and styling all change based on category. Hot leads see green, warm sees yellow, cold sees gray.

Step 5: Different CTAs for Each Category

Hot Leads: Book a Call

Hot leads are ready. Give them a direct path to talk to sales:

results.addRow(row => {
    row.addTextPanel('hotMessage', {
        computedValue: () =>
            "Based on your answers, we think we can help. " +
            "Book a call with our team to discuss your project.",
        isVisible: () => getLeadCategory() === 'hot'
    });
});

results.addRow(row => {
    row.addEmail('email', {
        label: 'Your Email',
        isRequired: () => getLeadCategory() === 'hot',
        placeholder: 'we@ll-reach-out.com'
    });
});

results.addRow(row => {
    row.addTextPanel('calendlyEmbed', {
        computedValue: () => 'Book a 15-min call: calendly.com/your-link',
        isVisible: () => getLeadCategory() === 'hot'
    });
});

Email is required for hot leads. You want to follow up even if they don't book immediately.

Warm Leads: Download a Resource

Warm leads need more information before they're ready. Offer something valuable in exchange for their email:

results.addRow(row => {
    row.addTextPanel('warmMessage', {
        computedValue: () =>
            "Looks like you're in the early stages. " +
            "Download our guide to help you prepare.",
        isVisible: () => getLeadCategory() === 'warm'
    });
});

results.addRow(row => {
    row.addEmail('email', {
        label: 'Email to receive the guide',
        isRequired: () => getLeadCategory() === 'warm'
    });
});

A guide, case study, or comparison sheet works well. Something that moves them closer to a decision.

Cold Leads: Self-Service Resources

Cold leads aren't ready for sales contact. Point them to resources they can explore on their own:

results.addRow(row => {
    row.addTextPanel('coldMessage', {
        computedValue: () =>
            "Here are some free resources to help you " +
            "learn more about what we do.",
        isVisible: () => getLeadCategory() === 'cold'
    });
});

results.addRow(row => {
    row.addTextPanel('resourceLinks', {
        computedValue: () => '• Blog: /blog\n• FAQ: /faq\n• Pricing: /pricing',
        isVisible: () => getLeadCategory() === 'cold'
    });
});

No email required. They're not ready to engage. Let them learn at their own pace.

Want to see more quiz examples? Check our template library.

Routing Leads After Submission

The quiz categorizes leads. Now you need to act on it. Use webhooks to route leads to the right place:

// In your webhook handler, route leads differently:
//
// Hot leads (score >= 70):
//   → Notify sales immediately (Slack, email)
//   → Add to CRM as "Sales Qualified Lead"
//   → Trigger calendar booking sequence
//
// Warm leads (score 40-69):
//   → Add to email nurture sequence
//   → Add to CRM as "Marketing Qualified Lead"
//
// Cold leads (score < 40):
//   → Add to newsletter list
//   → No immediate sales follow-up

The submission data includes all answers plus the calculated score. Your webhook handler can route based on that.

Question Best Practices

Make Questions Easy to Answer

Don't ask "What's your budget?" with a text input. People won't answer honestly or at all. Use ranges instead:

  • Bad: "What's your budget?" (text input)
  • Good: "What's your budget range?" (multiple choice with ranges)

Ask About Behavior, Not Intent

People overestimate their own buying intent. Ask about what they've already done:

  • Bad: "Are you ready to buy?"
  • Good: "Have you already evaluated other solutions?"

Put the Easiest Question First

Start with something simple (company size, industry). Save sensitive questions (budget, timeline) for later when they're already invested.

Tracking Quiz Performance

Monitor these metrics:

  • Completion rate - How many people finish the quiz? Below 50% means it's too long or questions are too personal too early.
  • Distribution by category - Are 80% of leads cold? Your traffic might be wrong, or your thresholds are off.
  • Conversion by category - Do hot leads actually convert better than warm? If not, your scoring is broken.

Review monthly and adjust scoring weights based on actual conversion data.

Common Mistakes

Too Many Questions

Every question you add drops completion rate. Start with 4 questions. Add more only if you have data showing it improves lead quality.

Asking for Email Too Early

Don't start with "Enter your email." Ask qualification questions first, show their result, then ask for email. They're more likely to share it after seeing value.

Same Follow-Up for Everyone

If every lead gets the same "thanks, we'll be in touch" message, you're wasting the quiz. The whole point is different paths for different lead types.

Not Testing Your Thresholds

The scores you pick initially are guesses. Track which leads convert and adjust. If "warm" leads convert as well as "hot" leads, your threshold is too high.

Common Questions

How many questions should a qualification quiz have?

4-5 questions is ideal. Enough to qualify without killing completion rate. Every additional question can drop completion by 5-10%. Start minimal and add only if needed.

Should I show the lead their score?

Generally no. Showing 'You scored 35/100' feels like a test they failed. Instead, show a helpful message based on their category. 'Here are some resources to help you get started' is better than 'You're a cold lead.'

Can I change the scoring after launch?

Yes, and you should. Your initial scoring is a hypothesis. Track which leads convert and adjust weights based on real data. Just don't change thresholds so often that you can't measure impact.

What if someone lies to get the 'hot lead' treatment?

Some will. It's fine. Your sales team will figure it out on the call. The goal isn't perfect accuracy - it's better prioritization. Even if 20% of hot leads are inflated, you're still focusing on the right people.

Should I require email for all categories?

Require it for hot and warm leads - you want to follow up. Make it optional for cold leads. Forcing email from cold leads just gets you fake addresses and unsubscribes.

Ready to Qualify Your Leads Automatically?

Build a quiz that scores leads and routes them to the right follow-up.