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.

Works on any roofing website. Roof Check reads the publicly accessible version of whatever page is open in your Chrome tab — your own site, a competitor's site, or a prospect's site. It works on WordPress, Wix, Squarespace, Webflow, and any custom-built site.

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.

Local SEO
31/50
LLM Visibility
19/50
Overall Score
50/100

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.

Conversion checks don't affect the score. Tab 5 (Convert) surfaces important conversion gaps — missing contact forms, no analytics, no call tracking — but these are not factored into either score. They are shown because they directly affect lead volume, independent of search visibility.
Tab 01

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.

Tab 02

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:

CheckWhat it looks forSeverity
Missing titleNo title tag on the page at allCritical
Title lengthUnder 30 or over 60 characters — Google truncates over 60Warning
City in titleState abbreviation (TX, FL) or detected city name presentWarning
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:

CheckWhat it looks forSeverity
Missing meta descriptionNo meta description tag — Google generates one randomlyCritical
Meta description too longOver 160 characters — will be truncated in search resultsWarning

Headings

The detected H1 is displayed. H2 and H3 lists are collapsible (showing up to 10 H2s and 15 H3s). Five checks:

CheckWhat it looks forSeverity
Missing H1No H1 heading on the pageCritical
Multiple H1sMore than one H1 — dilutes the primary topic signalWarning
H1 missing keyword/cityH1 contains neither a roofing keyword nor a city/stateWarning

Technical Signals

Four informational items displayed in the Technical section:

SignalWhat is shownSeverity
FaviconDetected or not — checks link tags and probes /favicon.icoInfo
Canonical URLThe canonical tag value if present, "Not set" if absentInfo
Meta RobotsRobots value shown; flagged red if noindex is setCritical if noindex
Word CountTotal word count: green 600+, yellow 400–599, red under 400Warning
Internal / External LinksCount of internal and external links on the pageInfo

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.

Why alt text matters for roofing sites. Alt text is read by search engines and screen readers. For roofing sites specifically, image alt text is free keyword coverage — adding your service and city to roofing photo alt text (e.g., "metal roof installation Houston TX by Apex Roofing") creates additional local keyword signals without changing any visible content.
Tab 03

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:

CheckWhat it looks forSeverity
Phone number detectedAny US phone number pattern found in visible page textCritical
Phone is clickable (tel: link)At least one <a href="tel:..."> link — required for mobile usersCritical
Street address detectedAddress pattern: number + street name + street type (St, Ave, Blvd, etc.)Critical
Pro tip (shown to Pro+ users): Your NAP must match your Google Business Profile exactly — even small differences like "St." vs "Street" can hurt local rankings. Google uses NAP consistency across your website, GBP, and directory listings as an entity verification signal.

Google Business Profile

CheckWhat it looks forSeverity
GBP link or map presentLinks to maps.google.com, google.com/maps, or goo.gl/maps — or a Google Maps iframe embedCritical
Google Map embedAn embedded Google Map iframe on the page — stronger location signal than a link aloneInfo

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

CheckWhat it looks forSeverity
Free estimate CTAPhrase "free estimate" or "free inspection" anywhere on the pageCritical
Licensed & insuredWords "licensed," "insured," or "bonded" in page textCritical
Warranty / guaranteeWords "warranty" or "guarantee" in page textWarning
Manufacturer certificationsGAF, Owens Corning, CertainTeed, Master Elite, Preferred ContractorWarning

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.

Tab 04

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.

Why LLM Visibility is now a lead generation factor. When a homeowner asks ChatGPT "who are the best roofers in [city]," the answer comes from pages with schema markup, FAQ content, named entities, and verifiable facts — not from traditional ranking signals. A site can rank #1 on Google and still be invisible to AI.

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 TypeWhy it mattersSeverity
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

CheckWhat it looks forSeverity
FAQ section on pageText "FAQ," "frequently asked questions," a <dl> element, <details> tags, or elements with class/id containing "faq" or "accordion"Critical
Word countUnder 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 keywordsAny H2 or H3 containing a roofing keyword or detected city nameWarning
Heading city conflictH1 targets one city; H2/H3 tags mention a different city — dilutes local ranking signals and confuses LLMs about the primary service areaWarning

Entity Signals

Three informational checks that build LLM confidence in the business as a real, named entity:

SignalWhat it looks for
Owner / founder namePattern: "owner is [Name]," "[Name], owner," "founded by [Name]," CEO, President, or Principal followed by a full name in visible text
Years in businessPhrases: "X years in business," "X years of experience," "since 20XX," "founded in 20XX"
City / region mentionsDetected 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.

For FAQPage schema, WordPress + RankMath: Use the RankMath FAQ Block in your page editor — it adds visible Q&As and FAQPage schema in one step, no code required.

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.
Tab 05

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

CheckWhat it looks forSeverity
Contact formAny form with email or phone input fields, or known form plugins: WPForms, Gravity Forms, Contact Form 7, Elementor forms, Ninja FormsCritical
Live chat widgetTidio, Intercom, LiveChat, Drift, HubSpot Conversations, Tawk.to, Crisp — detected from script tagsWarning
Clickable phoneAt least one tel: link — same as Local SEO check, surfaced here for conversion contextCritical
CTA buttonsAll 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 appearsInfo

Analytics & Tracking

SignalWhat it detectsSeverity
Google Analytics 4G-XXXXXXXX measurement ID in page sourceCritical
Universal Analytics (UA)UA-XXXXXX-X ID detected — shown as a warning since UA has been sunset; prompts GA4 migrationWarning
Google Tag Managergoogletagmanager.com/gtm.js script detected — if GA4 is missing but GTM is present, the note explains GA4 may be firing through GTMInfo
Google Search Consolegoogle-site-verification meta tag or text in source — if GTM is present but no GSC tag, notes that verification may be through GTMWarning
Facebook / Meta Pixelfbq() function or connect.facebook.net scriptInfo
CallRailcallrail or calltrk in page source — for paid ad call trackingInfo

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:

VariableSourceExample
[SERVICE_AREA]First city detected in body text or headingsHouston, TX
[WORD_COUNT]Total word count from body text347
[URL]Current page URLhttps://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:

CheckPrompt output
Missing title tag5 title tag options with character counts, angles labeled, and a recommended pick
Missing meta description4 meta description options (145–160 chars each) with different angles: service+city, trust signal, pain point, short version
H1 missing keyword5 H1 rewrites with character counts and angle labels; one recommended
Thin content5-section page expansion: service overview, local angle, process walkthrough, FAQ block, CTA paragraph — totaling 550–650 words
No FAQ schema5 FAQ pairs targeting: cost, timeline, materials, warranty, hiring criteria — ready for both visible content and FAQPage schema
Missing LocalBusiness schemaComplete, valid RoofingContractor JSON-LD block with all required fields, brackets for values to fill in, ready to paste into <head>
No entity signalsAbout section paragraph, two subheading options, and a trust bar founder line — all with [BRACKETS] for the owner name and founding year
Missing free estimate CTAHero button copy (3 options), section subheadings (2 options), and a CTA paragraph opener
No review schemaTwo JSON-LD blocks: AggregateRating embedded in RoofingContractor, plus two realistic Review entries

Sample Prompt

✦ Claude Prompt — FAQ Schema (Elite)
You are a copywriter and local SEO specialist for [COMPANY NAME], a roofing contractor serving Houston, TX.

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]
You need a Claude account to use the prompts — a free account at claude.ai is sufficient for most prompts. The prompts are copy-pasted into Claude manually; Roof Check does not call the Claude API or require an API key.

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.

WordPress + RankMath: Use the RankMath FAQ Block in your page editor — it adds visible Q&As and FAQPage schema in one step, no code required.

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.

WordPress + RankMath: Go to RankMath → Schema → Custom Schema, choose Custom (code), and paste the JSON-LD there.

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