How Roof Check Works
A complete walkthrough of every check, score, tab, and recommendation — so you know exactly what Roof Check is looking at and why each signal matters for your roofing website's visibility.
How the Audit Runs
When you click the Roof Check icon on a roofing website, the extension reads the live, rendered page — everything visible to a visitor and everything in the page's source code — and runs it through 40+ checks in under two seconds.
Step 1 — Page Extraction
Roof Check injects a lightweight script into the current tab that reads the page's DOM — title tag, meta description, headings, body text, links, images, schema markup, tracking scripts, and more. Nothing is sent to an external server. Everything runs locally in your browser.
Step 2 — Scoring
The extracted data is scored against a scoring model that starts each category at 50 points and deducts based on failed checks. Critical failures deduct their full weight; warnings deduct half. The result is two scores — Local SEO and LLM Visibility — each out of 50.
Step 3 — Recommendations
Every failed check maps to a plain-English explanation, a specific fix instruction, and (for Pro/Elite) a "why it matters" context note. Elite users also get a Claude AI prompt pre-filled with data from the page — city, word count, URL, and H2 headings.
How Scores Are Calculated
Every audit produces two scores out of 50 that combine into a total out of 100. Scores start at 50 and decrease as issues are found. Not all issues are equal — critical failures deduct more than warnings.
Severity Levels
| Severity | What it means | Score impact |
|---|---|---|
| × Critical | A fundamental gap that significantly hurts local rankings or AI visibility. Missing phone number, no schema, no H1, noindex set, etc. | Full weight deducted |
| ⚠ Warning | A real issue that reduces performance but won't tank the site. Title too long, no service area pages, thin content, missing warranty mention, etc. | Half weight deducted |
| ○ Info | Informational signal — shown for context but does not affect the score. Favicon status, canonical URL, meta robots value, image title attributes. | No deduction |
Score Color Coding
Green — 75%+
Score is at or above 75% of the maximum for that category. The site is performing well in this area.
Yellow — 50–74%
Score is in the middle range. Meaningful issues are present but the site has a foundation to build on.
Red — Under 50%
Score is below half. Critical gaps are costing this site leads in local search and AI visibility.
Score Tab
The first thing you see when you open Roof Check. Two score circles, a total score, a prioritized issue list, and a one-click copy report. This tab is designed to give you the full picture at a glance — and to be shareable with a client or web team immediately.
What You See
Two score circles — Local SEO out of 50 (green ring) and LLM Visibility out of 50 (indigo ring) — fill proportionally based on the score. The total is displayed below them.
Critical Issues appear first, in red. These are the checks with the highest deductions — fixing them will move the needle the most.
Warnings appear next, in yellow. Real issues, lower urgency than criticals.
Passing Checks are collapsed by default. Click to expand and see what the site is doing right.
Copy Report
The "Copy Report" button generates a plain-text audit summary — URL, date, both scores, critical issue list, and warning list — formatted for pasting into an email, a proposal, or a project management tool. Useful for delivering findings to a client or handing off to a developer.
Tier Upsell Cards
Free users see a Pro upsell card at the bottom of the Score tab. Pro users see an Elite upsell card. Elite users see neither — the tab is fully unlocked.
On-Page Tab
Every on-page SEO element inspected and displayed in context — not just pass/fail flags but the actual content, so you can see exactly what Google and AI platforms are reading.
Title Tag
The actual title tag text is shown with a character count badge (green: 30–60 chars, yellow: outside range). Four checks run against it:
| Check | What it looks for | Severity |
|---|---|---|
| Missing title | No title tag on the page at all | Critical |
| Title length | Under 30 or over 60 characters — Google truncates over 60 | Warning |
| City in title | State abbreviation (TX, FL) or detected city name present | Warning |
| Roofing keyword in title | "roof," "roofer," "roofing," "shingle," "gutter," etc. | Warning |
Meta Description
The full meta description is shown with a character count badge (green: 140–160 chars). Two checks:
| Check | What it looks for | Severity |
|---|---|---|
| Missing meta description | No meta description tag — Google generates one randomly | Critical |
| Meta description too long | Over 160 characters — will be truncated in search results | Warning |
Headings
The detected H1 is displayed. H2 and H3 lists are collapsible (showing up to 10 H2s and 15 H3s). Five checks:
| Check | What it looks for | Severity |
|---|---|---|
| Missing H1 | No H1 heading on the page | Critical |
| Multiple H1s | More than one H1 — dilutes the primary topic signal | Warning |
| H1 missing keyword/city | H1 contains neither a roofing keyword nor a city/state | Warning |
Technical Signals
Four informational items displayed in the Technical section:
| Signal | What is shown | Severity |
|---|---|---|
| Favicon | Detected or not — checks link tags and probes /favicon.ico | Info |
| Canonical URL | The canonical tag value if present, "Not set" if absent | Info |
| Meta Robots | Robots value shown; flagged red if noindex is set | Critical if noindex |
| Word Count | Total word count: green 600+, yellow 400–599, red under 400 | Warning |
| Internal / External Links | Count of internal and external links on the page | Info |
Images
Every image on the page is audited. A summary bar shows the percentage with alt text (green: 80%+) and the count with title attributes. The full image table is collapsible and shows each image filename, alt text status, and title text — making it easy to identify exactly which images need attention.
Local SEO Tab
Local SEO for roofing contractors comes down to three things: proving you're a real local business (NAP), proving Google knows about you (GBP), and proving homeowners trust you (reviews, credentials, trust signals). This tab audits all three.
NAP — Name, Address, Phone
NAP consistency is the foundation of local SEO. The Local SEO tab checks and displays:
| Check | What it looks for | Severity |
|---|---|---|
| Phone number detected | Any US phone number pattern found in visible page text | Critical |
| Phone is clickable (tel: link) | At least one <a href="tel:..."> link — required for mobile users | Critical |
| Street address detected | Address pattern: number + street name + street type (St, Ave, Blvd, etc.) | Critical |
Google Business Profile
| Check | What it looks for | Severity |
|---|---|---|
| GBP link or map present | Links to maps.google.com, google.com/maps, or goo.gl/maps — or a Google Maps iframe embed | Critical |
| Google Map embed | An embedded Google Map iframe on the page — stronger location signal than a link alone | Info |
GBP Optimization Checklist Pro
Pro and Elite users see a collapsible 10-point checklist covering the most impactful GBP optimizations beyond the website itself — primary category, secondary categories, business description length, service areas, services section, photos, Q&A, and review cadence.
Trust Signals
| Check | What it looks for | Severity |
|---|---|---|
| Free estimate CTA | Phrase "free estimate" or "free inspection" anywhere on the page | Critical |
| Licensed & insured | Words "licensed," "insured," or "bonded" in page text | Critical |
| Warranty / guarantee | Words "warranty" or "guarantee" in page text | Warning |
| Manufacturer certifications | GAF, Owens Corning, CertainTeed, Master Elite, Preferred Contractor | Warning |
If a free estimate CTA is detected, Roof Check also checks whether it appears in the H1 — a stronger signal for both visitors and search engines.
Review Platforms
Roof Check checks all page links and iframe sources for the following platforms:
Google Business Profile · BBB · Angi · HomeAdvisor · Houzz · Yelp · Thumbtack · Porch · Trustpilot
Found platforms appear as green tags; missing ones as red. A separate check specifically flags if Google, BBB, and Angi — the three most trusted platforms for roofing contractors — are all linked.
Service Area Cities
Roof Check identifies cities mentioned on the page using two methods: a "City, ST" pattern (e.g., "Houston, TX") and a list of 200+ major US cities matched against body text and headings. Additional cities are found by detecting "we serve" and "service areas include" language and extracting the city names that follow. All detected cities appear as green tags.
Service Area Pages
Roof Check scans all internal links for dedicated city/service area pages — paths like /roofing-houston-tx, /service-areas/dallas, or /roof-repair/cedar-park. At least one detected area page is a pass; zero is a warning.
Individual Service Pages
Separate from service area pages, Roof Check looks for individual pages dedicated to specific services — roof replacement, storm damage repair, metal roofing, gutters, etc. Two or more detected service pages is a pass. One is a warning with a note to consider separate pages per service.
LLM Visibility Tab
This is where Roof Check goes further than any standard SEO audit tool. LLM Visibility checks the structured data, content format, and entity signals that AI platforms — ChatGPT, Perplexity, Google AI Overviews — use to decide which businesses to cite when answering local questions.
Schema Markup
Roof Check reads every <script type="application/ld+json"> tag on the page, parses the JSON, and checks for the following types:
| Schema Type | Why it matters | Severity |
|---|---|---|
| LocalBusiness / RoofingContractor | The machine-readable entity declaration for your business. Required for local pack eligibility and LLM entity resolution. Includes name, address, phone, hours, geo, and service area. | Critical |
| FAQPage | Though Google has deprecated FAQ rich results, LLMs pull from FAQPage schema when generating answers. It's one of the highest-value schema types for AI citation probability. | Critical |
| AggregateRating / Review | Enables gold star ratings in search results and gives AI platforms a structured social proof signal to cite. Requires real review count and rating value. | Warning |
| Speakable | Tells AI assistants and voice search which sections of the page are the most important to cite or read aloud. An emerging but increasingly relevant signal. | Info |
Any schema detected on the page can be viewed in raw JSON — a collapsible raw schema viewer shows the full parsed object for each script tag found.
Content Signals
| Check | What it looks for | Severity |
|---|---|---|
| FAQ section on page | Text "FAQ," "frequently asked questions," a <dl> element, <details> tags, or elements with class/id containing "faq" or "accordion" | Critical |
| Word count | Under 400 words = thin content; 400–599 = needs more; 600+ = passing. Thin pages are almost never cited by AI systems. | Critical / Warning |
| H2/H3 include local keywords | Any H2 or H3 containing a roofing keyword or detected city name | Warning |
| Heading city conflict | H1 targets one city; H2/H3 tags mention a different city — dilutes local ranking signals and confuses LLMs about the primary service area | Warning |
Entity Signals
Three informational checks that build LLM confidence in the business as a real, named entity:
| Signal | What it looks for |
|---|---|
| Owner / founder name | Pattern: "owner is [Name]," "[Name], owner," "founded by [Name]," CEO, President, or Principal followed by a full name in visible text |
| Years in business | Phrases: "X years in business," "X years of experience," "since 20XX," "founded in 20XX" |
| City / region mentions | Detected city names from body text — same detection used for the Local SEO score. Shown as a list of found city tags. |
Schema Templates Pro
Pro and Elite users see copy buttons for two pre-built schema templates — FAQPage and LocalBusiness (RoofingContractor type). Each template has all required fields marked with [BRACKETS] for easy substitution. Each also includes an implementation note explaining exactly where to paste the code and how to do it in RankMath vs. a manual paste.
Otherwise: Paste into each page's <head> using the Insert Headers and Footers plugin (Settings menu in WordPress) or your theme's header.php. Add it to every service page, not just the homepage.
Convert Tab
Search visibility gets people to the page. Conversion elements are what turn them into a phone call or a form submission. This tab audits every element that affects whether a visitor becomes a lead — none of these checks affect the score, but every one affects your bottom line.
Conversion Elements
| Check | What it looks for | Severity |
|---|---|---|
| Contact form | Any form with email or phone input fields, or known form plugins: WPForms, Gravity Forms, Contact Form 7, Elementor forms, Ninja Forms | Critical |
| Live chat widget | Tidio, Intercom, LiveChat, Drift, HubSpot Conversations, Tawk.to, Crisp — detected from script tags | Warning |
| Clickable phone | At least one tel: link — same as Local SEO check, surfaced here for conversion context | Critical |
| CTA buttons | All button and button-like elements are inventoried with their text and count — shown as tags so you can see what CTAs are present and how many times each appears | Info |
Analytics & Tracking
| Signal | What it detects | Severity |
|---|---|---|
| Google Analytics 4 | G-XXXXXXXX measurement ID in page source | Critical |
| Universal Analytics (UA) | UA-XXXXXX-X ID detected — shown as a warning since UA has been sunset; prompts GA4 migration | Warning |
| Google Tag Manager | googletagmanager.com/gtm.js script detected — if GA4 is missing but GTM is present, the note explains GA4 may be firing through GTM | Info |
| Google Search Console | google-site-verification meta tag or text in source — if GTM is present but no GSC tag, notes that verification may be through GTM | Warning |
| Facebook / Meta Pixel | fbq() function or connect.facebook.net script | Info |
| CallRail | callrail or calltrk in page source — for paid ad call tracking | Info |
Social Proof
The Convert tab surfaces review platform links a second time in a social proof context — because even if they're good enough for the Local SEO score, seeing them near conversion elements is a reminder that review links belong above the fold, not buried in the footer.
Off-Site Action Plan Elite
Elite users see two collapsible sections at the bottom of the Convert tab:
Core Citation Sources
Priority-ordered list of citation platforms for roofing contractors: Google Business Profile → BBB → Angi → HomeAdvisor → Houzz → Yelp → Thumbtack → Facebook Business → Nextdoor → Porch.com → NRCA → GAF Contractor Directory → Owens Corning Locator.
Review Generation Strategy
A 4-step system: text within 24 hours of job completion → a word-for-word review request script → one email follow-up at 5 days → personal outreach for past customers. Includes the exact message to send with a GBP review link.
What Each Tier Unlocks
Every tier runs the same 40+ checks. The difference is what you can do with the results.
| Feature | Free | Pro — $9/mo | Elite — $29/mo |
|---|---|---|---|
| Scores & Results | |||
| Local SEO score (out of 50) | ✓ | ✓ | ✓ |
| LLM Visibility score (out of 50) | ✓ | ✓ | ✓ |
| Issue labels (critical, warning, passing) | ✓ | ✓ | ✓ |
| All five audit tabs | ✓ | ✓ | ✓ |
| Schema detection + raw JSON viewer | ✓ | ✓ | ✓ |
| Image alt text audit | ✓ | ✓ | ✓ |
| Analytics / tracking detection | ✓ | ✓ | ✓ |
| Copy report (plain text) | ✓ | ✓ | ✓ |
| Fixes & Guidance | |||
| Fix recommendation for every failed check | — | ✓ | ✓ |
| "Why it matters" explanation | — | ✓ | ✓ |
| NAP consistency guidance | — | ✓ | ✓ |
| GBP optimization checklist (10-point) | — | ✓ | ✓ |
| Schema & Templates | |||
| Copy-ready FAQ schema template | — | ✓ | ✓ |
| Copy-ready LocalBusiness schema template | — | ✓ | ✓ |
| Schema implementation instructions (RankMath path) | — | ✓ | ✓ |
| Elite — AI & Off-Site | |||
| ✦ Claude AI prompt for every failed check | — | — | ✓ |
| City, URL, headings auto-filled in prompts | — | — | ✓ |
| Off-site action plan + citation priority list | — | — | ✓ |
| Review generation strategy + word-for-word scripts | — | — | ✓ |
Claude AI Prompts
Every failed check on an Elite audit has a "✦ Generate with Claude" button. Click it to reveal a copy-ready prompt that's already been filled with data from the page being audited. Paste it into Claude and get production-ready content in seconds.
How the Auto-Fill Works
When Roof Check runs an audit, it captures several page-specific values. When you open a Claude prompt, these are substituted into the template automatically:
| Variable | Source | Example |
|---|---|---|
| [SERVICE_AREA] | First city detected in body text or headings | Houston, TX |
| [WORD_COUNT] | Total word count from body text | 347 |
| [URL] | Current page URL | https://acme-roofing.com |
| [H2_LIST] | First 6 H2 headings from the page | • "Roof Replacement" • "Storm Damage"... |
Variables you fill in yourself: [COMPANY NAME], [SERVICE TYPE], and (if the city wasn't auto-detected) [SERVICE AREA]. The extension shows a note in the prompt panel indicating which values were auto-filled and which you need to add.
What Each Prompt Produces
Every prompt is written for one specific check — not a generic "write SEO content" request. Here's what the key prompts generate:
| Check | Prompt output |
|---|---|
| Missing title tag | 5 title tag options with character counts, angles labeled, and a recommended pick |
| Missing meta description | 4 meta description options (145–160 chars each) with different angles: service+city, trust signal, pain point, short version |
| H1 missing keyword | 5 H1 rewrites with character counts and angle labels; one recommended |
| Thin content | 5-section page expansion: service overview, local angle, process walkthrough, FAQ block, CTA paragraph — totaling 550–650 words |
| No FAQ schema | 5 FAQ pairs targeting: cost, timeline, materials, warranty, hiring criteria — ready for both visible content and FAQPage schema |
| Missing LocalBusiness schema | Complete, valid RoofingContractor JSON-LD block with all required fields, brackets for values to fill in, ready to paste into <head> |
| No entity signals | About section paragraph, two subheading options, and a trust bar founder line — all with [BRACKETS] for the owner name and founding year |
| Missing free estimate CTA | Hero button copy (3 options), section subheadings (2 options), and a CTA paragraph opener |
| No review schema | Two JSON-LD blocks: AggregateRating embedded in RoofingContractor, plus two realistic Review entries |
Sample Prompt
Write 5 FAQ pairs for a [SERVICE TYPE] page. These will be used for both visible on-page content and FAQPage schema markup, so answers must be complete sentences — no bullet fragments.
Target these question angles (one each):
1. Cost or price range
2. Timeline / how long it takes
3. Materials or product options
4. Warranty (labor + manufacturer)
5. What to look for when hiring a local roofer
Rules:
— Each answer is 2–3 sentences max
— Mention Houston, TX in at least 2 answers naturally
— Zero filler phrases: no "great question," "it depends," "we pride ourselves," or "as a homeowner"
— Answers should reflect a contractor who actually does this work — specific, not generic
— Write at the 7th grade reading level
— Active voice only
Output format (repeat x5):
Q: [question]
A: [answer]
Schema Templates
When LocalBusiness or FAQ schema is missing, Pro and Elite users see copy buttons in the LLM Visibility tab for pre-built JSON-LD templates. Each template is ready to paste — with all required fields marked in brackets and implementation instructions included.
FAQ Schema Template
The FAQPage template includes 5 pre-written question/answer pairs covering the most commonly searched roofing topics — cost, inspection, licensing, job duration, and materials. Replace the bracketed values with your real data.
Otherwise: Paste into each page's <head> using the Insert Headers and Footers plugin or your theme's header.php. Add it to every service page, not just the homepage.
LocalBusiness Schema Template
The RoofingContractor template includes name, URL, phone, address, geo coordinates, opening hours, area served, price range, and a sameAs array for GBP and social profiles. All placeholder values are marked in brackets.
Otherwise: Paste into your homepage's <head> only — using Insert Headers and Footers or your theme editor. Do not add to every page.
Off-Site Action Plan
LLM visibility and local rankings don't come from the website alone. Elite users get an off-site action plan in the Convert tab with two components: a citation source priority list and a review generation system.
Citation Source Priority List
The 13 most impactful citation sources for roofing contractors, listed in priority order — starting with Google Business Profile and ending with manufacturer-specific contractor directories (GAF, Owens Corning). The priority order reflects both domain authority and how heavily each platform is weighted by LLMs when citing local contractors.
Google Business Profile → BBB → Angi → HomeAdvisor → Houzz → Yelp → Thumbtack → Facebook Business → Nextdoor → Porch.com → NRCA Contractor Finder → GAF Contractor Directory → Owens Corning Contractor Locator
Review Generation System
A 4-step outreach system with word-for-word scripts:
Step 1 — Text within 24 hours
Send a text message within 24 hours of job completion with your direct GBP review link. The window is shortest here — response rates drop sharply after 48 hours.
Step 2 — Word-for-word script
"Hi [Name], thanks for choosing [Company]! If you're happy with the work, would you mind leaving us a quick Google review? It helps a lot: [link]" — short, zero pressure, direct link.
Step 3 — Email follow-up at 5 days
If no review appears within 5 days, follow up once by email. One follow-up only — repeat requests damage the relationship and can violate review platform policies.
Step 4 — Past customers
For past customers, reach out personally — never mass blast. Individual outreach to a past customer who had a good experience converts far better than a bulk email to a contact list.
Ready to Audit Your First Roofing Website?
Sign up for Roof Check and run your first audit in under 60 seconds. Free to start — upgrade when you're ready to fix what you find.
Sign Up for Roof Check Today →A tool by Roofer Rocket Marketing