Industry Guide

Window Installation Quote Form: Build Window Replacement Calculators

February 2026 · 12 min read

Window replacement is a considered purchase. Homeowners spend weeks researching, getting quotes, comparing materials. By the time they fill out your form, they've already decided to replace windows - they're just deciding who does the work. Show them you understand their project before the sales visit.

The typical window sales process involves a lengthy in-home consultation where you measure every window, explain options, and build a quote on the spot. That works, but it's time-intensive. A quote form that shows real-time pricing qualifies leads and sets expectations before you drive out.

Homeowners want to know: "Am I looking at $5,000 or $25,000?" Give them that answer upfront. The ones who can afford you will schedule the in-home visit. The ones who can't won't waste your afternoon.

Project Type and Property

Start with what they need. Replacement windows (most common) have different considerations than new construction. Adding windows where none exist means cutting into walls - a bigger job with different pricing.

const projectSection = form.addSubform('project', {
    title: 'Project Overview'
});

projectSection.addRow(row => {
    row.addRadioButton('projectType', {
        label: 'What type of window project?',
        options: [
            { id: 'replacement', name: 'Window Replacement' },
            { id: 'new-construction', name: 'New Construction' },
            { id: 'add-windows', name: 'Add New Windows (cut new openings)' },
            { id: 'repair', name: 'Window Repair Only' }
        ],
        orientation: 'vertical',
        isRequired: true
    });
});

projectSection.addRow(row => {
    row.addDropdown('propertyType', {
        label: 'Property Type',
        options: [
            { id: 'single-family', name: 'Single Family Home' },
            { id: 'townhouse', name: 'Townhouse' },
            { id: 'condo', name: 'Condo/Apartment' },
            { id: 'multi-family', name: 'Multi-Family (2-4 units)' },
            { id: 'commercial', name: 'Commercial Building' }
        ]
    });
    row.addDropdown('homeAge', {
        label: 'Home Age (approximate)',
        options: [
            { id: 'new', name: 'Less than 10 years' },
            { id: 'modern', name: '10-30 years' },
            { id: 'older', name: '30-50 years' },
            { id: 'historic', name: 'Over 50 years' }
        ]
    });
});

Home age matters more than you'd think. Older homes often have non-standard window sizes, lead paint concerns, and structural considerations that affect installation complexity. Knowing this upfront helps you price appropriately.

Window Count and Sizes

The two biggest pricing factors: how many windows, and how big. A slider for count works well - it makes changing quantities instant. The size selection covers the typical range from small bathroom windows to oversized picture windows.

const windowsSection = form.addSubform('windows', {
    title: 'Window Details'
});

windowsSection.addRow(row => {
    row.addSlider('windowCount', {
        label: 'How many windows?',
        min: 1,
        max: 30,
        step: 1,
        defaultValue: 5,
        unit: 'windows'
    });
});

windowsSection.addRow(row => {
    row.addCheckboxList('windowSizes', {
        label: 'Window sizes (select all that apply)',
        options: [
            { id: 'small', name: 'Small (bathroom, basement) - up to 4 sq ft' },
            { id: 'standard', name: 'Standard (bedrooms) - 5-12 sq ft' },
            { id: 'large', name: 'Large (living room) - 13-20 sq ft' },
            { id: 'oversized', name: 'Oversized/Picture - over 20 sq ft' },
            { id: 'specialty', name: 'Specialty (arch, circle, custom)' }
        ],
        orientation: 'vertical'
    });
});

windowsSection.addRow(row => {
    row.addDropdown('currentWindowType', {
        label: 'Current Window Type',
        options: [
            { id: 'single-pane', name: 'Single Pane (older homes)' },
            { id: 'double-pane', name: 'Double Pane' },
            { id: 'aluminum', name: 'Aluminum Frame' },
            { id: 'wood', name: 'Wood Frame' },
            { id: 'vinyl', name: 'Vinyl Frame' },
            { id: 'mixed', name: 'Mixed Types' },
            { id: 'unknown', name: 'Not sure' }
        ],
        isVisible: () => projectType.value() === 'replacement'
    });
});

Current window type helps for replacement projects. Single-pane windows are easier to upgrade than poorly installed vinyl from the '90s. Old aluminum frames might have asbestos concerns in certain regions. Capture this context.

Pro tip

The "mixed sizes" scenario is common. A home might have 8 standard bedrooms windows, 2 large living room windows, and 3 small bathroom windows. Let homeowners select multiple sizes and average the pricing across their count.

Window Style and Frame Material

Style affects both price and function. Double-hung windows are the standard. Casement windows cost more but crank open for better ventilation. Picture windows are cheapest but don't open at all.

const styleSection = form.addSubform('style', {
    title: 'Window Style & Features'
});

styleSection.addRow(row => {
    row.addRadioButton('windowStyle', {
        label: 'Preferred Window Style',
        options: [
            { id: 'double-hung', name: 'Double Hung (both sashes move)' },
            { id: 'single-hung', name: 'Single Hung (bottom moves only)' },
            { id: 'casement', name: 'Casement (crank out)' },
            { id: 'sliding', name: 'Sliding' },
            { id: 'picture', name: 'Picture (fixed)' },
            { id: 'mixed', name: 'Mixed styles throughout' },
            { id: 'match', name: 'Match existing style' }
        ],
        orientation: 'vertical'
    });
});

styleSection.addRow(row => {
    row.addRadioButton('frameMaterial', {
        label: 'Frame Material',
        options: [
            { id: 'vinyl', name: 'Vinyl (most popular, low maintenance)' },
            { id: 'fiberglass', name: 'Fiberglass (premium durability)' },
            { id: 'wood', name: 'Wood (classic look, requires maintenance)' },
            { id: 'composite', name: 'Composite (wood look, low maintenance)' },
            { id: 'aluminum', name: 'Aluminum (commercial/modern)' }
        ],
        orientation: 'vertical',
        defaultValue: 'vinyl'
    });
});

Frame material is where the real price differences appear. Vinyl is the value play - affordable, durable, minimal maintenance. Fiberglass costs more but handles temperature extremes better. Wood looks great but needs regular upkeep.

Glass and Efficiency Options

This is where window quotes get complicated - and where online forms help. Rather than explaining Low-E coating and argon gas fills in person, let homeowners read the descriptions and check what matters to them.

const glassSection = form.addSubform('glass', {
    title: 'Glass & Efficiency Options'
});

glassSection.addRow(row => {
    row.addRadioButton('glassType', {
        label: 'Glass Type',
        options: [
            { id: 'double', name: 'Double Pane (standard)' },
            { id: 'triple', name: 'Triple Pane (best insulation)' }
        ],
        defaultValue: 'double'
    });
});

glassSection.addRow(row => {
    row.addCheckboxList('glassFeatures', {
        label: 'Glass Features (select all desired)',
        options: [
            { id: 'low-e', name: 'Low-E Coating (blocks UV, improves efficiency)' },
            { id: 'argon', name: 'Argon Gas Fill (better insulation)' },
            { id: 'tempered', name: 'Tempered Glass (safety, required some areas)' },
            { id: 'tinted', name: 'Tinted Glass (reduces glare)' },
            { id: 'obscure', name: 'Obscure/Privacy Glass' },
            { id: 'noise', name: 'Noise Reduction' }
        ],
        orientation: 'vertical'
    });
});

glassSection.addRow(row => {
    row.addCheckboxList('additionalFeatures', {
        label: 'Additional Features',
        options: [
            { id: 'grids', name: 'Grids/Grilles (decorative patterns)' },
            { id: 'screens', name: 'New Screens' },
            { id: 'hardware', name: 'Upgraded Hardware' },
            { id: 'blinds', name: 'Built-in Blinds' }
        ]
    });
});

The glass options affect both price and energy savings. Low-E coating plus argon gas can reduce energy bills by 10-15%. Triple pane makes sense in extreme climates. Present these as options, let homeowners decide what they value.

Pricing Calculation

Window pricing compounds. Frame material sets the base price. Style applies a multiplier. Sizes adjust the average. Features add fixed amounts. Volume discounts reward larger projects.

// Pricing calculation
const basePricePerWindow: Record<string, number> = {
    'vinyl': 450,
    'fiberglass': 750,
    'wood': 900,
    'composite': 700,
    'aluminum': 550
};

const styleMultipliers: Record<string, number> = {
    'double-hung': 1.0,
    'single-hung': 0.9,
    'casement': 1.15,
    'sliding': 0.95,
    'picture': 0.85,
    'mixed': 1.0,
    'match': 1.0
};

const sizeMultipliers: Record<string, number> = {
    'small': 0.7,
    'standard': 1.0,
    'large': 1.4,
    'oversized': 2.0,
    'specialty': 2.5
};

const estimatedCost = form.computedValue(() => {
    const count = windowCount.value() ?? 5;
    const material = frameMaterial.value() ?? 'vinyl';
    const style = windowStyle.value() ?? 'double-hung';
    const sizes = windowSizes.value() ?? ['standard'];
    const features = glassFeatures.value() ?? [];

    // Base price per window
    let pricePerWindow = basePricePerWindow[material] ?? 450;

    // Style multiplier
    pricePerWindow *= styleMultipliers[style] ?? 1.0;

    // Average size multiplier
    const avgSizeMultiplier = sizes.length > 0
        ? sizes.reduce((sum, size) =>
            sum + (sizeMultipliers[size] ?? 1.0), 0) / sizes.length
        : 1.0;
    pricePerWindow *= avgSizeMultiplier;

    // Glass upgrades
    if (features.includes('low-e')) pricePerWindow += 50;
    if (features.includes('argon')) pricePerWindow += 40;
    if (features.includes('tempered')) pricePerWindow += 75;
    if (features.includes('noise')) pricePerWindow += 100;

    // Triple pane upgrade
    const glassType = glassType.value();
    if (glassType === 'triple') pricePerWindow += 150;

    // Installation included in base price
    // Total estimate
    return pricePerWindow * count;
});

// Volume discount
const volumeDiscount = form.computedValue(() => {
    const count = windowCount.value() ?? 5;
    if (count >= 15) return 0.12;
    if (count >= 10) return 0.08;
    if (count >= 5) return 0.05;
    return 0;
});

const finalEstimate = form.computedValue(() => {
    const base = estimatedCost() ?? 0;
    const discount = volumeDiscount() ?? 0;
    return base * (1 - discount);
});

The volume discount is real business logic - it costs you less per window to do 15 at once than 5. Showing the discount encourages homeowners to do the whole house rather than phasing. Better for them, better for you.

Displaying the Estimate

Show both per-window price and project total. Some homeowners think in terms of "how much per window" while others just want the bottom line. Give them both.

const pricingSection = form.addSubform('pricing', {
    title: 'Estimated Cost'
});

pricingSection.addRow(row => {
    row.addPriceDisplay('perWindowPrice', {
        label: 'Average Per Window',
        computedValue: () => {
            const total = estimatedCost() ?? 0;
            const count = windowCount.value() ?? 1;
            return total / count;
        },
        currency: '$',
        decimals: 0
    });
});

pricingSection.addRow(row => {
    row.addPriceDisplay('lowEstimate', {
        label: 'Project Estimate',
        computedValue: () => finalEstimate() * 0.9,
        currency: '$',
        decimals: 0,
        prefix: 'From'
    });
    row.addPriceDisplay('highEstimate', {
        computedValue: () => finalEstimate() * 1.1,
        currency: '$',
        decimals: 0,
        prefix: 'To'
    });
});

pricingSection.addRow(row => {
    row.addTextDisplay('discountNote', {
        computedValue: () => {
            const discount = volumeDiscount();
            if (discount >= 0.12) return 'Includes 12% volume discount (15+ windows)';
            if (discount >= 0.08) return 'Includes 8% volume discount (10+ windows)';
            if (discount >= 0.05) return 'Includes 5% volume discount (5+ windows)';
            return 'Add more windows to unlock volume discounts';
        },
        className: 'text-success'
    });
});

pricingSection.addRow(row => {
    row.addTextDisplay('financing', {
        computedValue: () => {
            const monthly = (finalEstimate() ?? 0) / 60;
            return `As low as $${Math.round(monthly)}/month with financing`;
        },
        isVisible: () => (finalEstimate() ?? 0) > 3000
    });
});

The financing message appears for larger projects. Window replacement is often a $10-20k investment. Monthly payment framing makes it digestible: "$167/month" is easier to process than "$10,000 today."

See more contractor quote form examples in our gallery.

Current Window Issues

Understanding why they want new windows helps you sell the right solution. Someone experiencing drafts needs energy-efficient windows. Someone bothered by noise needs acoustic features. Someone with foggy glass just needs seals that work.

const issuesSection = form.addSubform('issues', {
    title: 'Current Window Issues',
    isVisible: () => projectType.value() === 'replacement'
});

issuesSection.addRow(row => {
    row.addCheckboxList('currentIssues', {
        label: 'What issues are you experiencing?',
        options: [
            { id: 'drafts', name: 'Drafts/Air leaks' },
            { id: 'condensation', name: 'Condensation between panes' },
            { id: 'hard-to-open', name: 'Windows hard to open/close' },
            { id: 'noise', name: 'Outside noise' },
            { id: 'energy-bills', name: 'High energy bills' },
            { id: 'rotting', name: 'Rotting frames' },
            { id: 'broken-seals', name: 'Broken seals/foggy glass' },
            { id: 'outdated', name: 'Just outdated/want to upgrade' }
        ],
        orientation: 'vertical'
    });
});

issuesSection.addRow(row => {
    row.addTextarea('additionalNotes', {
        label: 'Any other details about your windows?',
        placeholder: 'Specific windows with problems, accessibility concerns, HOA requirements...',
        rows: 3
    });
});

This doubles as qualification. Rotting frames might mean structural work beyond just windows. Multiple issues signal urgency. "Just outdated" is a style buyer, not a problem solver - different sales conversation.

Timeline and Purchase Intent

When they want to start and who else they're talking to. This helps you prioritize leads and tailor your follow-up.

const timelineSection = form.addSubform('timeline', {
    title: 'Project Timeline'
});

timelineSection.addRow(row => {
    row.addDropdown('urgency', {
        label: 'When are you looking to start?',
        options: [
            { id: 'asap', name: 'As soon as possible' },
            { id: '1-month', name: 'Within 1 month' },
            { id: '3-months', name: 'Within 3 months' },
            { id: '6-months', name: 'Within 6 months' },
            { id: 'researching', name: 'Just researching for now' }
        ],
        isRequired: true
    });
});

timelineSection.addRow(row => {
    row.addRadioButton('quoteComparison', {
        label: 'Are you getting other quotes?',
        options: [
            { id: 'yes', name: 'Yes, comparing multiple companies' },
            { id: 'no', name: 'No, looking for the right company' },
            { id: 'have-quotes', name: 'Already have quotes, want another opinion' }
        ]
    });
});

Someone who's "researching" with no timeline is different from someone who needs windows before winter. The quote comparison question tells you if you're competing on price or trying to earn the business from scratch.

Contact Information

Standard contact info plus address. The address is essential for windows - you might be able to see the house on Street View and get a sense of the project before calling.

const contactSection = form.addSubform('contact', {
    title: 'Contact Information'
});

contactSection.addRow(row => {
    row.addTextbox('fullName', {
        label: 'Full Name',
        isRequired: true
    });
    row.addTextbox('phone', {
        label: 'Phone Number',
        isRequired: true
    });
});

contactSection.addRow(row => {
    row.addEmail('email', {
        label: 'Email',
        isRequired: true
    });
});

contactSection.addRow(row => {
    row.addAddress('propertyAddress', {
        label: 'Property Address',
        isRequired: true,
        restrictToCountries: ['us'],
        showMap: true
    });
});

contactSection.addRow(row => {
    row.addDropdown('bestTimeToCall', {
        label: 'Best Time to Contact',
        options: [
            { id: 'morning', name: 'Morning (9am-12pm)' },
            { id: 'afternoon', name: 'Afternoon (12pm-5pm)' },
            { id: 'evening', name: 'Evening (5pm-7pm)' },
            { id: 'anytime', name: 'Anytime' }
        ]
    });
    row.addDropdown('preferredContact', {
        label: 'Preferred Contact Method',
        options: [
            { id: 'phone', name: 'Phone Call' },
            { id: 'text', name: 'Text Message' },
            { id: 'email', name: 'Email' }
        ],
        defaultValue: 'phone'
    });
});

Contact preference matters for window sales. Many homeowners research during work hours but can't take sales calls. Respect their preferences and you're already ahead of competitors who call whenever.

What Happens After Submission

The form provides an instant estimate, but window replacement really needs an in-home consultation. Your follow-up should:

  • Confirm the estimate range and what's included
  • Schedule a free in-home measurement and consultation
  • Explain what happens during the visit (no high-pressure tactics)
  • Offer energy savings calculations based on their current windows

The homeowner gets immediate pricing context. You get a qualified lead with clear expectations. The in-home visit becomes about finalizing details, not starting from scratch.

Putting It Together

A window quote form turns tire-kickers into serious buyers. By showing real pricing based on their actual project - count, style, material, features - you filter for homeowners who can afford your service and set expectations before you invest time in a site visit.

The volume discount encourages whole-house projects. The financing message makes large projects accessible. The issue checklist reveals urgency and buying motivations. Every section does work.

Common Questions

How accurate are window quotes without measuring?

Within 10-15% for replacement windows, assuming homeowners select sizes correctly. New openings have more variables. Frame your estimate as 'budgetary' and confirm exact pricing after measurement. Most homeowners understand online quotes are approximate.

Should I include installation in the quote?

Always. Window pricing without installation is misleading - homeowners compare your installed price to competitors' window-only prices and think you're expensive. Include installation, disposal of old windows, and basic interior trim. Itemize if needed but quote installed.

What about manufacturer rebates and energy credits?

Mention them but don't include in the estimate. Rebates change, credits have requirements, and claiming incentives that don't apply damages trust. Instead, add a note: 'Additional savings may be available through manufacturer rebates and energy efficiency tax credits.'

How do I compete with big box store pricing?

You probably can't on window cost - they buy in massive volume. Compete on installation quality, warranty coverage, and local accountability. Your quote form can emphasize: 'Expert installation by our own certified team' vs. their subcontractor model. Service is the differentiator.

Ready to Build Your Window Quote Form?

Create estimate calculators that qualify leads and set expectations.