Last updated October 17, 2026
Metal roofing
Architectural shingles
Tile roofing
GAF
Owens Corning
Flat & low-slopeFree roof inspection with deck photos before we talk money - GAF and Owens Corning certified installation
How to Hire a Roofing Contractor in San Diego: A Step-by-Step Guide
California’s Contractors State License Board logged over 20,000 complaints in a recent year, and roofing consistently ranks among the most flagged trades in San Diego County. The contractor who rolls up with a magnetic-sign truck, a clipboard full of vague promises, and a “three-day-only” price probably can’t legally pull a permit here. This guide walks you through exactly how to separate the legitimate operators from the practiced ones, using questions that force a dishonest bidder to disqualify himself in the first ten minutes of a call. For more guides & resources on protecting your home, explore our blog. We’ll cover license verification, the three documents you should demand before signing, how to compare bids fairly, and what a legal payment schedule actually looks like in California.
Quick Answer
To hire a roofing contractor in San Diego, verify the company’s C-39 roofing license on the CSLB website, request three written documents before signing (scope of work, warranty terms, proof of workers’ comp), and never agree to more than 10% down before work begins. A legitimate contractor answers specific questions about San Diego permits and material specs without hesitation. The contractor who can’t produce a license number or written scope of work in the first call should be disqualified immediately.
Styles & brands we work with






Table of Contents
- How to Verify a California Roofing License in Under Two Minutes
- The Three Documents to Request Before Signing Anything
- Red Flags Specific to San Diego’s Post-Storm and Post-Fire Contractor Surge
- How to Compare San Diego Roofing Bids Fairly: A Line-by-Line Framework
- What a Legal Payment Schedule Looks Like on a San Diego Roofing Job
- The Exact Questions to Ask in the First Ten Minutes of a Quote Call
- Warranty Questions That Expose Vague Contractors Fast
- What Makes San Diego Roofing Different: Climate, Code, and Material Reality
How to Verify a California Roofing License in Under Two Minutes
Roofing work in California legally requires a C-39 roofing contractor’s license. Not a general contractor’s license, not a handyman registration. C-39 specifically. This is the first filter, and it eliminates a surprising number of San Diego bidders before you’ve spent a dime. Verifying takes less time than brewing coffee.
- Go to the CSLB website at cslb.ca.gov and click “Check a License.”
- Enter the license number the contractor gave you. If they haven’t given you one yet, ask for it on the spot. A real contractor recites this number from memory.
- Confirm the license classification says C-39 Roofing. A license in a different classification does not authorize roofing work.
- Check the status is “Active,” not “Suspended,” “Revoked,” or “Expired.”
- Look at the workers’ comp insurance field. It should show “Yes” or list a valid policy. If it says “None” or is blank, that’s a disqualifier for any crew larger than the owner himself.
San Diego County issues its own permits through the County’s Planning & Development Services, and a licensed contractor pulls those permits under their own license number. If a contractor suggests you pull the permit as the homeowner to “save money,” that’s a signal something is off. In our experience across San Diego neighborhoods from Clairemont to Chula Vista, this request usually means the crew is unlicensed and borrowing someone else’s name on the paperwork. We tell every homeowner the same thing: a legitimate roofing company in San Diego pulls its own permits, full stop.
The Three Documents to Request Before Signing Anything
Before you sign a contract, there are three written documents you should have in hand. Not verbal assurances. Not “I’ll get that to you later.” Written, on paper or PDF, before your signature touches anything. The contractor who hesitates on any of these three is telling you something with the hesitation itself. Listen to it.
- Written scope of work. This describes exactly what will be done: how many squares of roofing, what underlayment, what shingle brand and line, whether decking is included, whether drip edge and ridge cap are included, how the flashing will be handled. Every sentence reduces your exposure to surprise change orders later.
- Written warranty terms. This states what’s covered, for how long, and what happens if the repair or installation fails. Tilehurst Roofing San Diego puts a written guarantee on every repair before the crew leaves the property. You should never have to ask a contractor to mail you warranty paperwork after the fact.
- Proof of workers’ compensation insurance. If a worker falls off your roof and the contractor lacks workers’ comp, the claim can land on your homeowners insurance. In California, any contractor with employees must carry workers’ comp. The CSLB license page you verified earlier shows this. Request a current certificate as well.
These three documents are the floor, not an upgrade. A contractor who “doesn’t really do written scopes” or whose warranty is “oh, we stand behind everything we do” has just told you their promises aren’t documented. In San Diego’s competitive roofing market, there are too many companies that do put everything in writing to settle for one that won’t. When you’re comparing contractors, you can also check their roof repair process in San Diego to see how they handle documentation before a job begins.
Red Flags Specific to San Diego’s Post-Storm and Post-Fire Contractor Surge
San Diego County has a climate pattern that invites trouble. Dry summers, Santa Ana winds in the fall, occasional heavy winter rain. After a storm season or a wildfire, out-of-town crews descend on neighborhoods from Rancho Bernardo to Spring Valley, knocking doors and offering “free inspections.” Some are legitimate. Many are not. Here’s what the questionable ones look like in San Diego specifically.
- Storm chasers with no local footprint. They appear after a big storm, work for a month, then leave the state before problems surface. Ask for a local San Diego address, not just a PO box. Ask how long they’ve worked in the area and which neighborhoods they’ve roofed recently.
- Unlicensed crews working under a licensed name. This is the most common scheme we see. A licensed contractor “sells” his license number to an unlicensed crew that does the actual work. The crew’s workers are paid cash, likely lack insurance, and the contractor whose name is on the permit may never visit the job. Ask directly: “Will the person whose name is on this license be on-site during the job?” A legitimate contractor says yes without blinking.
- “Insurance specialists” who haven’t pulled a San Diego permit before. These are contractors who promise to “handle the whole insurance claim” but have never navigated San Diego County’s specific permit process. Insurance work is real, but the permit process is local. Ask for the address of the last three San Diego jobs they permitted. If they can’t name them quickly, they haven’t done them.
The common thread is accountability. Every one of these red flags leads back to someone who can’t be found when the roof leaks. We built the Tilehurst Roofing San Diego home process around making accountability boring: written price, written guarantee, local phone number, real address. The contractor who can’t produce those things in the first call isn’t going to produce better answers after the job.
How to Compare San Diego Roofing Bids Fairly: A Line-by-Line Framework
Most San Diego homeowners compare roofing bids by looking at the bottom-line number and picking the middle one. That’s how you end up with a roof that costs $40,000 but should have been $28,000, or a $19,000 bid that actually covers half the work of a $24,000 bid. The number at the bottom of the page is the least informative line on the estimate. The line items above it tell the real story.
The fix is a comparison framework that forces every bid onto the same sheet. When you request estimates from three contractors, give each one the same written scope so the bids are comparable from the start. Then build a line-by-line table. Here’s what a legitimate San Diego roofing bid should itemize, and what each line should specify:
- Tear-off and disposal. Is the old roof removed down to decking, or is a second layer being installed over the existing shingles? San Diego allows a second layer in some cases, but a proper comparison doesn’t treat “tear-off included” and “second layer added” as the same price. Tear-off should include dumpster rental and haul-away.
- Underlayment. What product, what thickness? Synthetic underlayment outperforms basic felt in San Diego’s coastal moisture, and the bid should name the product, not just say “underlayment.”
- Shingle brand and line. This is where bid comparison fails most often. “30-year architectural shingle” means little without a manufacturer and product line. A GAF Timberline is a different product from an Owens Corning Duration, which differs from a CertainTeed Landmark. If the bid doesn’t name the shingle, the contractor can install whatever is cheapest that week. Tilehurst Roofing San Diego gives you genuine choice across seven manufacturers including GAF, CertainTeed, Owens Corning, IKO, Atlas, Tamko, and Boral, so the product fits your home rather than whatever happens to be in the truck.
- Flashing and drip edge. Flashing is the metal that prevents water intrusion at joints, chimneys, and valleys. Drip edge is the metal strip along the roof’s edge that directs water into the gutter. Both should be line items, not bundled into “miscellaneous.” A contractor who doesn’t list flashing separately is either not installing it or planning to charge for it later.
- Decking replacement. How many sheets of plywood or OSB decking are priced in? If the bid includes two sheets and the rotted deck takes six, the “change order” arrives after the roof is open. A legitimate bid prices decking per sheet up front and tells you that any additional sheets cost X and no more.
The goal isn’t to make every bid identical. It’s to make every bid readable. When you can say, “Bid A uses GAF Timberline with synthetic underlayment and 4 sheets of decking, while Bid B uses a no-name shingle with felt and no decking,” the comparison becomes useful. And the contractor who already itemizes this way is signaling that they aren’t building a change-order machine.
What a Legal Payment Schedule Looks Like on a San Diego Roofing Job
California law is clear on this point: a contractor may not request or accept a down payment exceeding 10% of the total contract price or $1,000, whichever is less, before work begins. Not 30%. Not half. Ten percent. If a roofing contractor in San Diego asks for 20% or 50% “to reserve your materials” or “to lock in the price,” that’s a legal red flag under California Business and Professions Code section 7159. You should not sign that contract.
Beyond the initial down payment, the remaining schedule should track the visible completion of work, not a calendar. The legitimate pattern looks like this:
- 10% down or $1,000 maximum, whichever is less, at contract signing.
- Progress payments tied to milestones: after tear-off and decking inspection, after underlayment and shingle installation, after final cleanup and walkthrough.
- Final payment only after the job passes inspection (if a permit was pulled) and you’ve walked the roof area with the contractor.
Any contractor who demands large upfront cash, asks for payment to a personal Venmo rather than a company account, or requests a check made out to an individual’s name is telling you something about how they run their business. For a full roof replacement in San Diego, a legitimate estimate includes a payment schedule in writing, and the schedule follows this structure. If the schedule doesn’t exist in writing, ask for it. If the contractor won’t put it in writing, move on.
The Exact Questions to Ask in the First Ten Minutes of a Quote Call
Most homeowners spend the first ten minutes of a quote call talking about shingle color. That’s backwards. The first ten minutes are when you separate the actually-licensed, actually-local, actually-insured contractor from the practiced salesman. These are the questions that force a dishonest bidder to disqualify himself. Ask them in roughly this order. A legitimate contractor answers all six without flinching.
- “What’s your CSLB license number?” As discussed, this should come from memory. If the person on the phone can’t produce it, or says “I’ll get that to you,” you’ve just spent ten minutes saving yourself a headache.
- “Will the person whose name is on the license be on-site during the job?” This catches the license-selling scheme described earlier. A legitimate operator answers yes. A shell operator starts explaining how “my crews are all experienced.”
- “Can you put the scope of work in writing before I sign?” The answer should be “yes, that’s standard.” The wrong answer is “we can discuss that later” or “our guys know what to do.”
- “What’s your workers’ comp policy number?” If they balk, check the CSLB listing you already pulled. If it shows “None,” the conversation should end.
- “How do you handle decking that’s rotted once the roof is open?” The right answer includes a per-sheet price in writing. The wrong answer is “we’ll figure it out when we see it.” That’s how a $22,000 roof becomes a $31,000 roof after the decking is exposed.
- “How long have you been working in San Diego, and where are your recent jobs?” A local contractor can name neighborhoods immediately: “We just finished a replacement in North Park and repairs in La Mesa last month.” A storm chaser gives you vague answers: “Oh, we’ve done work all over Southern California.”
These six questions aren’t a personality test. They’re a documentation test. The contractor who has the answers documented is the contractor who will document the job. In our experience, the homeowners who ask these questions upfront are the ones who don’t call us a year later asking why their repair failed. They’re also the ones who tell us the same thing we tell everyone: the company that answers the phone and answers the questions is the company that answers when the roof leaks. Tilehurst Roofing San Diego answers every call with a live person, 24 hours a day, including evenings and weekends. Not a voicemail queue. Not a callback request. The same documentation standard applies to every estimate we write.
Warranty Questions That Expose Vague Contractors Fast
The word “warranty” gets used in roofing the way “organic” gets used at a farmers market: everyone claims it, few define it. A vague warranty is a marketing phrase. A real warranty is a written document with specific terms. The difference is exposed by three questions. These are the warranty questions that make vague contractors visibly uncomfortable.
- “What exactly does the warranty cover?” Workmanship only? Materials only? Both, and for how long? Who covers materials, the manufacturer or the contractor? If the answer is “we guarantee everything,” that’s not an answer, that’s a slogan. A real warranty specifies what’s covered and what isn’t: leaks at joints, flashing failures, shingle defects, installation errors.
- “How long is the workmanship warranty?” One year is common for repairs in the roofing trade, but many contractors won’t say even that. Here’s the baseline to expect: a written guarantee on every repair, delivered before the crew leaves, not mailed later. That’s what Tilehurst Roofing San Diego provides under our 365-Day Done Right Promise. If it’s not done right, we make it right, for a full year after the job. And if a repair fails inside that guarantee period, the crew returns to correct it at no charge. Free. That’s the standard a legitimate contractor should meet in writing.
- “What happens if the repair fails during the warranty period?” The wrong answer is “that never happens.” The right answer is a process: the contractor returns, inspects, and corrects at no charge within the stated period. If the contractor hesitates on this question, you’re looking at a warranty that exists in the sales pitch but not in the contract.
Warranty clarity matters more in San Diego than in many markets because of the climate. Coastal moisture in Point Loma and Ocean Beach accelerates corrosion on flashing. The sun in East County bakes shingles to their maximum temperature range. Inland temperature swings in Ramona and Alpine stress sealants. A warranty that covers materials but not the installation is exactly the warranty that fails you when a roof leak appears at a flashing joint nine months later. The contractor’s written workmanship warranty is the part that protects you.
What Makes San Diego Roofing Different: Climate, Code, and Material Reality
San Diego doesn’t have a single climate. It has at least four, and they change what a roof needs depending on which neighborhood you’re in. The same shingle that performs fine in Carlsbad may degrade twice as fast in El Cajon. A contractor who prices every roof in San Diego the same way doesn’t understand San Diego roofs.
The coastal zone, from La Jolla through Pacific Beach to Imperial Beach, sees persistent marine moisture. Salt air accelerates corrosion on flashing, fasteners, and any metal component. Coastal roofs benefit from corrosion-resistant flashing and higher-grade underlayment because the moisture exposure is constant year-round. The inland valleys, including Escondido, Poway, and Santee, see wider temperature swings: hot dry summers, cool nights, and the occasional frost in winter. These swings stress sealant joints and cause expansion and contraction cycles that a coastal roof never experiences. The East County areas, including Alpine, Lakeside, and Jamul, add wildfire-adjacent exposure to the mix. Ember-resistant materials and proper ventilation become factors beyond simple water-tightness.
Material choice follows from climate reality. Boral’s tile roofing performs differently in coastal moisture than an asphalt shingle from CertainTeed. A GAF system with the right underlayment spec is a different animal in El Cajon than the cheapest architectural shingle from a supply yard. This is why we give San Diego homeowners a genuine choice across seven manufacturers, including GAF, CertainTeed, Owens Corning, and Boral. The product should fit the home’s climate exposure, not just the truck’s inventory. A contractor who installs the same shingle on every San Diego roof is telling you they’ve optimized for their own convenience, not your roof’s performance.
San Diego County’s building code also factors into replacement work. Roofing needs a permit through the County, and the inspection process verifies that underlayment, decking condition, and fastening meet current requirements. See our guide to Roofing Permits, Codes & Inspections in CA: What You Need to Know for the full picture. A contractor who charges for permits and says “we’ll handle all the paperwork” but never pulls one is a contractor who will disappear if the roof fails. The permit isn’t bureaucracy. It’s the verification that the roof was installed to code by a licensed contractor. Tilehurst Roofing San Diego pulls permits and passes inspections on every job where permits are required. The Kingswell Way, the values we operate under, is simple: say the price before the work, show up in the window we gave, leave the place cleaner than we found it, put the guarantee in writing, and come back if it fails. Those aren’t marketing phrases. They’re the minimum standard in plain language.
Common Mistakes to Avoid
- Comparing only the bottom-line number. A $19,000 bid and a $26,000 bid aren’t two prices for the same roof if one includes tear-off, synthetic underlayment, and six sheets of decking while the other does a second layer over old shingles with no decking allowance. You’re not comparing prices at that point, you’re comparing two different roofs.
- Paying more than 10% down. California law caps the initial down payment at 10% or $1,000, whichever is less. Any contractor asking for more before work begins is either unaware of the law or counting on you being unaware of it. Neither is acceptable.
- Believing the warranty without reading it. “Fully guaranteed” is not a warranty. A written document stating coverage terms, duration, and the process for claims is a warranty. If the contractor can’t produce it before you sign, they can’t produce it after you pay.
- Skipping the workers’ comp check. If an uninsured worker is injured on your property, the financial consequences can fall to you. The five-minute check on the CSLB website is the cheapest insurance you’ll ever buy.
- Trusting a door knocker after a storm. Post-storm and post-fire contractor surges bring out crews that work a few neighborhoods, take deposits, and move on. Verify their San Diego job history and local address before you give them anything.
- Accepting verbal promises instead of written scope. “We’ll include the flashing” means nothing if flashing isn’t a line item in the written scope. If it’s not on paper, it doesn’t exist.
- Choosing the cheapest bid as a reflex. The cheapest bid often carries the most expensive change orders. Contractors who lose money on a low bid make it back when the roof is open and decking needs “unexpected” replacement at triple the per-sheet rate.
See the difference
Before
After
Before
After
Before
AfterWhen to Call a Professional
You should call a licensed roofing contractor the moment you see water staining on a ceiling, missing shingles after a Santa Ana event, granules piling up in your gutters, or any daylight visible through your roof from the attic. These are not “keep an eye on it” situations. Roof leaks in San Diego don’t self-heal, and the coastal moisture that gets into your decking stays there, compromising the structure even after the visible leak stops. Torn flashing, cracked ridge cap, and sealant failures around vents and chimneys are also jobs for a trained professional, not a ladder and a caulk gun. High-roof work and electrical-adjacent repairs carry real safety risk. Tilehurst Roofing San Diego offers free estimates in San Diego. Call (619) 393-3877 and you’ll speak with a live person, any hour, any day. We’ll give you a written price and a written scope before any work begins, and we’ll put the guarantee in writing before the crew leaves your property.
Frequently Asked Questions
A full asphalt-shingle roof replacement in San Diego typically runs $18,000 to $35,000 for an average-sized home, depending on roof complexity, shingle grade, underlayment spec, and decking condition. Entry-level architectural shingles from manufacturers like IKO or Tamko sit at the lower end, while premium systems from GAF, CertainTeed, or Owens Corning run higher. Tile roofing from Boral or comparable manufacturers costs substantially more, often $40,000 to $70,000. The only way to get an exact number is a written estimate after an inspection. Call (619) 393-3877 to schedule your free estimate with Tilehurst Roofing San Diego. We give you the written price before any work starts, and that price doesn’t change once the roof is open.
Go to cslb.ca.gov, click “Check a License,” and enter the contractor’s license number, then confirm the classification reads C-39 Roofing and the status is Active. Also check the workers’ comp field shows a valid policy. The entire process takes under two minutes and should be completed before you sign anything.
California law limits the initial down payment to 10% of the total contract price or $1,000, whichever is less. Any San Diego roofing contractor requesting more than that before work begins is out of compliance with state law. Call (619) 393-3877 for a written estimate that follows a legal payment schedule from contract to completion.
No, the contractor should pull the permit under their own license number as part of the job. If a contractor suggests you pull the permit as the homeowner, it usually means they or their crew aren’t properly licensed to do the work. A legitimate San Diego roofing contractor handles permits through the County, passes inspection, and includes the cost in the written scope of work.
A legitimate contractor offers a written workmanship guarantee of at least one year on repairs, and longer on full replacements. Manufacturer warranties on shingles often run 30 to 50 years, but those cover material defects only, not installation errors. The workmanship warranty is the part that protects you against leaks at flashing joints or installation failures. Tilehurst Roofing San Diego provides a written guarantee on every repair before the crew leaves, and a full year of documented accountability under the 365-Day Done Right Promise. If a repair fails inside that period, we return and correct it at no charge.
Bids vary because contractors are often pricing different scopes: one includes tear-off, another installs a second layer; one prices synthetic underlayment, another uses basic felt; one includes six sheets of decking, another prices none. The way to compare fairly is to give each contractor the same written scope, then review line items for shingle brand, underlayment type, flashing, drip edge, and decking allowance. Call (619) 393-3877 and we’ll walk you through a line-by-line estimate so you know exactly what you’re paying for before you sign.
The Bottom Line
Hiring a roofing contractor in San Diego isn’t about choosing the right shingle color. It’s about the first ten minutes of a quote call, the three written documents you demand, and the legal payment structure you refuse to violate. Verify the C-39 license. Request the written scope, written warranty, and proof of workers’ comp. Walk away from any contractor who asks for more than 10% down. Compare bids line by line, not bottom line to bottom line. The contractor who documents everything before the job is the contractor who stands behind everything after it. Tilehurst Roofing San Diego is built on that standard: a live person answers every call, the price is written before work begins, and every repair carries a written guarantee. That’s the floor, not the ceiling, and it’s what a legitimate hire looks like in San Diego County.
Written by Greg Holloway, Owner at Tilehurst Roofing San Diego, serving San Diego since 2000.