A roof is one of the biggest investments you'll make in your home, and the roofing industry has its share of bad actors — storm-chasers, unlicensed crews, and high-pressure salespeople. Here's how to choose a roofer you can actually trust.
Key takeaways
- Confirm licensing (a C-39 roofing or Class B general building license), insurance, local presence, documentation, and written warranties.
- Walk away from high-pressure tactics, big upfront deposits, and 'skip the permit' suggestions.
- The cheapest bid usually hides skipped underlayment, ventilation, or permits.
- Compare full scope, not just the headline price.
The non-negotiables
Before anything else, confirm these. A 'no' on any of them is a reason to walk away:
- Licensed — a valid California contractor's license (roofing falls under a C-39 roofing specialty or a Class B general building license)
- Insured & bonded — so you're protected if something goes wrong on your property
- Local & established — a real address and history, not an out-of-area truck after a storm
- Documentation — they photograph the problem and the work, and give written estimates
- Written warranty — both manufacturer material and their own workmanship warranty
Red flags to walk away from
These are the classic warning signs of a bad roofing experience:
- Pressure to sign today or a 'today only' price
- A large deposit demanded up front before any work
- Suggesting you skip the permit 'to save money'
- A bid dramatically lower than everyone else (corners are being cut)
- No physical address, no license number, or vague answers about insurance
- Door-knocking right after a storm claiming they 'noticed damage'
Compare scope, not just price
The cheapest quote is often the most expensive roof. A low bid usually means skipped underlayment, missing ventilation, no permit, or no real warranty — corners that don't show until the roof leaks. When you compare quotes, compare what's actually included: tear-off, decking, underlayment, flashing, ventilation, warranty, and permit. Line-item estimates make this easy; vague 'starting at' numbers hide it.
Related services
