A new roof in the Twin Cities is a $12,000–$40,000 decision for most homeowners. The contractor you pick matters more than the shingle brand on the box. This guide walks through what to actually check before you sign anything — written for someone who's never bought a roof before.
1. Verify they're a real Minnesota contractor
In Minnesota, residential roofing contractors must hold a license issued by the Department of Labor and Industry (DLI). It's not optional, and it's free to verify.
Search the contractor's name at the DLI license lookup. You're checking three things: the license is active, it's in their legal business name (not a doing-business-as nickname), and there are no recent disciplinary actions.
- Active state license number
- Current general liability insurance certificate (ask for a copy emailed directly from the insurer)
- Current workers' compensation coverage — this protects you if a crew member is hurt on your property
2. Be skeptical of door knockers after a storm
After every major hail event in the metro, out-of-state crews show up door-to-door. Some are legitimate; many are not. The pattern is consistent: aggressive sales pressure, offers to 'waive your deductible,' a contract that quietly assigns your insurance proceeds to them, then a fast, cheap install and no one to call when the roof leaks two years later.
Local matters here. A contractor that's been working in Edina, Bloomington, and Eagan for years has a reputation to protect and crews you can actually reach. Ask how long they've been licensed in Minnesota specifically.
3. Understand the insurance claim process before you start it
If your roof has hail or wind damage, your homeowners insurance usually covers replacement minus your deductible. The process roughly goes: contractor inspects and documents damage with photos, you file a claim, the insurance adjuster meets the contractor on your roof, the adjuster writes an estimate, the contractor and adjuster reconcile any differences, you pay your deductible, the contractor does the work, insurance issues the final payment.
A few things to know: it is illegal in Minnesota for a contractor to offer to pay or waive your deductible. If someone offers, walk away. You also don't have to use the contractor your insurance company recommends — the choice is yours.
4. Get a real written estimate — not just a number
A complete roofing estimate should specify: shingle manufacturer and exact product line, underlayment type, ice and water shield coverage (Minnesota code requires it at least 24 inches inside the warm wall), drip edge, ridge venting, starter strip, all flashing details, deck repair allowance, and cleanup terms.
If an estimate is one line that says 'replace roof — $18,500,' you don't actually know what you're buying. Ask for the spec.
5. Ask about the warranty in plain English
There are two warranties: the manufacturer's product warranty (covers the shingle itself) and the contractor's workmanship warranty (covers installation errors like nail pops, flashing leaks, and bad valley work).
A 25-year manufacturer warranty sounds great until you read the fine print — most prorate quickly and exclude wind, hail, and improper ventilation. The workmanship warranty is what matters in years one through five, which is when installation issues actually show up. Ask how long it is, what it covers, and how to file a claim.
6. Local references beat online reviews
Ask for three references in your own city or a neighboring one, with addresses you can drive past. Drive past them. A contractor who does good work in Eagan should be willing to point you at three Eagan homes from the last two years.
Quick checklist
Before you sign anything, you should have:
- Verified Minnesota DLI license number
- Liability and workers' comp certificates emailed from the insurer
- Written estimate that specifies materials, underlayment, ice and water shield, ventilation, and flashing
- Clear workmanship warranty terms in writing
- At least three local references from the past two years
- A written start window and a cleanup commitment