If your roofing website is not producing calls, the cause is almost never "the site needs a refresh". It is one of five things, and you can check all five in about twenty minutes with a phone and a laptop.
Work them in this order. There is no point rewriting your homepage copy if you are not in the map pack, and no point buying traffic if your form has been failing silently since the last plugin update.
The twenty-minute check, in order
- Map pack (5 min). Search "roof repair near me" on a phone with location on, standing in the area you want work from. Are you in the three-result map block? Note who is.
- Tappable number (2 min). On the same phone, open your site. Can you dial from the header without pinching, scrolling or copying digits by hand?
- Load time (3 min). Run the homepage and one service page through PageSpeed Insights on mobile. Read Largest Contentful Paint, not the score.
- Form (5 min). Submit a test enquiry from cellular data, not office wi-fi. Check whether the entry was stored but the email never arrived.
- Lead source (5 min). Open your last ten leads. How many came from a marketplace that sold the same homeowner to three other roofers?
Whichever step fails first is the one to fix. The rest is wasted effort until then.
1. You are not in the map pack
Most roofing calls that start on Google start in the three-result map block, not the blue links underneath. If you are not there, an attractive website changes very little.
Three things decide it: proximity to the searcher, relevance of your Google Business Profile, and prominence. Proximity is the one nobody wants to hear about. If your yard sits in an industrial park eleven miles from the suburb you want, you will struggle there. That is geometry, not SEO, and blog posting does not fix it.
What is genuinely fixable in an afternoon:
- Primary category. "Roofing contractor" is the one that matters. If someone set you to "Construction company", you are in the wrong pool. Add secondary categories for what you actually do: gutters, siding, metal roofing.
- Service area versus address. If you have a real yard or office where staff work, keep the address visible. Hiding it to look like a service-area business throws away your strongest proximity signal.
- Spam competitors. If the profile above you is called "Dallas Roof Repair Pros Best Rated" and its pin lands in a residential cul-de-sac, that is a keyword-stuffed name and a questionable address. Both are reportable through Google's Business Redressal Complaint Form, which works more often than people expect.
Reviews are the part you cannot shortcut, and a steady trickle of recent ones behaves better than a burst from two years ago. Ask on the day the crew clears the drive, with a direct link, from the person who did the work. The mechanics sit on our local SEO and reputation management pages, and the trade version on our roofing marketing page.
2. The number is not clickable on a phone
Roofing traffic is overwhelmingly mobile, and much of it arrives during or just after weather. Nobody fills in a form with a bin lid in the yard. They tap to call.
On a real phone, look for these:
- The number sits inside a header image. Common on older sites and on templates where the designer put the whole top bar into one graphic. It cannot be tapped and Google cannot read it.
- The number is text but not wrapped in a tel: link, so tapping does nothing.
- The only things in the mobile header are a hamburger menu and a "Get a Quote" button that opens a form. Add a sticky call bar. It is one of the highest-return changes on a trade site.
- You use call tracking such as CallRail, and dynamic number insertion fails when scripts are blocked, leaving a blank space or a stale number. Keep a real fallback number in the HTML.
Check the call button on your Google profile too. If it rings an old cell an estimator took with him, you have been losing calls that never reached the website.
3. The site is too slow on a real connection
Roofers upload big photos, because the work is visual and drone shots look good. Forty 4MB images on a shared $6-a-month host make a page that takes many seconds to become usable on cellular data. People leave.
Run it through PageSpeed Insights or our website speed test and read Largest Contentful Paint on mobile. Under 2.5 seconds is the target; the score out of 100 is a distraction. The usual culprits:
- Unoptimised images. Resize to about 1600px on the long edge and serve WebP. This single change often does more than everything else put together.
- Page builder bloat. Heavy Elementor or Divi layouts load a lot of CSS and JavaScript for a page that is mostly a photo and a number.
- Cheap hosting. Managed hosting at $25 to $40 a month is a small bill against one re-roof.
If the site is a tidy WordPress build, caching, image work and better hosting will usually rescue it. If it is a decade-old template nobody can edit, a rebuild is the cheaper path in the end, which is what web design and development is for.
4. The form is broken and nobody told you
The form submits, the thank-you page appears, and the email never lands. Everything looks fine from the outside, which is why this one quietly costs the most.
The sharpest diagnostic takes two minutes: compare stored entries against emails received. Gravity Forms, WPForms and Fluent Forms all keep a database record of every submission. If there are entries you never saw in your inbox, the form is fine and mail delivery is broken.
- PHP mail with no SMTP. Microsoft 365 and Gmail increasingly reject mail sent that way because it fails SPF and DKIM. Install WP Mail SMTP or similar and authenticate the sending domain.
- Notifications going to somebody who left, or reCAPTCHA v3 set so hard it bins real homeowners with the bots. Both fail silently.
- Required fields that ask too much. Name, phone, ZIP and "what is happening" is enough. Demanding a full address, an appointment window and a budget range before you have earned trust moves people to the competitor whose form is shorter.
Once the plumbing works, add routing so leads land somewhere they get answered: a CRM, an SMS alert, missed-call text-back. Tools like GoHighLevel do this, and tightening what happens after the submit is nearly always cheaper than buying more traffic. That is the argument for conversion rate optimisation.
5. You are buying leads that four roofers already have
Angi, Modernize, Networx and Thumbtack do not sell you a customer. They sell a phone number that three or four other contractors bought at the same moment. The homeowner's phone rings four times in ten minutes and they are annoyed by the second call.
Run the arithmetic on your own figures, not anyone's averages. If a shared lead costs $80, you reach one in two, quote one in three of those, and win one in four quotes, you are paying about $1,920 in lead fees per job. On a $14,000 replacement that can work. On a $600 repair it never does. Our ROI calculator runs the sum with your numbers.
The same arithmetic applies to search ads, which is why they often compare well. If a click costs $45 and one in twenty-five clicks becomes a booked estimate, that is about $1,125 per estimate, and the lead is exclusive and does not ring three competitors on the way in. Costs per click swing hard by metro and by storm season, so measure yours rather than assume. That measurement is most of the work in PPC management.
When shared leads are the right answer
You are new, you have no reviews and no ranking history, and crews need work. Rented pipeline beats an idle crew. Treat it as a floor to stand on while you build the assets you own, not as the foundation. Our lead generation page covers running both without paying twice for the same homeowner.
What each fix tends to cost
Ranges, because the honest answer depends on what you have.
| Fix | Typical range | What moves it |
|---|---|---|
| Profile clean-up and citations | $300 to $1,200 one-off | Wrong or duplicate listings to unpick |
| Call bar and form repair | $200 to $800 one-off | Whether the theme edits cleanly or fights back |
| Speed work on an existing site | $400 to $1,500 | Image volume, page builder, host |
| New roofing website | $2,500 to $12,000 | Page count, quoting tools, content written from scratch |
| Local SEO retainer | $800 to $3,500 a month | Metro competition, suburbs targeted |
| Paid search management | 10% to 20% of spend | Campaign count, storm-season volatility |
Work with Star Force Solutions starts from $200, a minimum rather than a fixed price. A form repair sits near the bottom of that; a full build with written content does not. Our pricing page sets out the bands.
When the cheap option is the right one
Plenty of roofing companies do not need an agency. If your profile is verified and correctly categorised, your reviews are recent, your number is tappable and your form delivers, you have covered most of what produces calls. Keep asking for reviews and posting photos.
Spend real money when one of these is true: the top three profiles in your metro hold hundreds of reviews each, you run ads and cannot tell which campaign produced the estimate, or nobody in the office can edit the site.
If you want a second pair of eyes first, run our free SEO audit, or tell us what is happening and we will tell you which of the five it is. Sometimes the answer is a $200 fix, and we would rather say so than sell you a rebuild you do not need.

