METHODOLOGY
How we measure the 6 metrics
Every Free Growth Local Audit lands on a 6-metric scorecard. This page documents how each number is measured, what tool produces it, what thresholds map to what score, and what we deliberately leave out. Transparency is part of the offer · the audit is yours to keep, regardless of whether you hire us, so the math behind it should be readable.
The six metrics, weights, and tools
| Metric | Weight | Primary tool | Score range |
|---|---|---|---|
| Site speed (mobile) | 20% | Google PageSpeed Insights API v5 | 0-100 |
| Mobile UX | 15% | DOM scrape (cheerio in CF Worker) | 0-100 |
| Local SEO | 25% | Apify Google Maps + SERP actors | 0-100 |
| Review velocity | 15% | Apify Google Maps Reviews actor | 0-100 |
| Lead capture | 15% | DOM scrape | 0-100 |
| Social rhythm | 10% | Apify GBP + Instagram public | 0-100 |
Site speed (mobile)
Pulled live from Google PageSpeed Insights API v5 against the submitted business URL. The API simulates a mid-range Android device on a throttled 3G connection. We score on mobile LCP (Largest Contentful Paint) primarily, with mobile CLS (Cumulative Layout Shift) and INP (Interaction to Next Paint) as supporting signals.
Score bands: LCP under 2.5s scores 90 to 100 (green band, the target). LCP 2.5 to 4 seconds scores 70 to 89 (yellow, fixable). LCP 4 to 6 seconds scores 40 to 69 (red, costing rank). LCP over 6 seconds scores 0 to 39 (the rebuild conversation).
We use lab data for the scorecard score because field data (CrUX) is not available for many small local businesses with low traffic. When field data exists, we cite both numbers in the PDF and flag the gap when lab and field disagree by more than 1 second.
Mobile UX
Five DOM-level checks against the live homepage and service pages. Each missing check subtracts 20 points from a 100 baseline.
- Click-to-call present. A tel: link in the visible DOM, or a phone number in a callable format. Missing on mobile is the most common failure we see.
- Viewport meta tag set. The mobile viewport meta must declare width and initial-scale. A surprising number of legacy WordPress sites omit it.
- Hours on the home page above the fold. Visible without scrolling on a 375px wide device. Hours buried in the footer fail this check.
- Body font size at least 14px on mobile. Text under 14px fails reading-flow heuristics. We measure the computed font size on the home page paragraph elements.
- Tap targets at least 44 by 44 CSS pixels. Buttons and tappable links smaller than this fail Apple HIG and Google mobile UX guidelines. We check the primary CTA, the navigation links, and any form submit button.
Local SEO
Weighted average of two layers. Layer one (50% weight) is Google Business Profile completeness across 12 fields. Layer two (50%) is Map Pack rank for the top 5 most-searched vertical-specific queries in the business's primary city.
GBP completeness fields: primary category, secondary categories, hours of operation, holiday hours, business description (250+ characters), photos (12+ within last 90 days), services list, products list (where applicable), GBP posts (last 30 days), Q and A presence, attributes (wheelchair accessible, free WiFi, etc), and verified status. Each field present scores 8.3 points (100 / 12 fields), partial credit for partially complete fields.
Map Pack rank scoring: top 3 (in the Map Pack) = 100, ranks 4 to 5 = 80, ranks 6 to 10 = 60, ranks 11 to 20 = 40, beyond 20 = 20. We average across the top 5 vertical queries (e.g., for restaurants: "[cuisine] near me", "[cuisine] [city]", "restaurants [city]", "[neighborhood] restaurants", "best [cuisine] [city]").
Review velocity
Apify Google Maps Reviews actor pulls all Google reviews against the business GBP. We sort by date, filter to the last 90 days, count, and divide by 3 for trailing-90 review velocity per month. We also compute the trailing-30-day velocity separately as the leading indicator. The PDF shows both.
Score bands: 6 or more reviews per month = 100 (Map Pack winner zone). 4 to 5 = 80. 2 to 3 = 60. 1 = 40. Less than 1 = 20. The median Tri-state local business lands at 0.7 to 1.2.
We do not include Yelp, Facebook, or BBB reviews in the velocity score because the cross-platform signal is too noisy and Google review velocity is the dominant Map Pack ranking factor. When the operator has heavy non-Google review presence, we note it in the PDF commentary but it does not affect the 0-100 score.
Lead capture
Three DOM checks against the live homepage and service pages.
- Form present. Any form element on the homepage or a service page, with name field and email or phone field. Forms that route to a working endpoint score full points; forms that submit to a default mailto or a known broken endpoint score zero for this layer.
- Click-to-call present. Same check as Mobile UX but counted separately here. The lead capture layer treats this as a unique lead path (a phone call is a different lead source than a web form).
- Chat widget present. Any of the 12 most common chat widget JavaScript signatures: Intercom, Drift, LiveChat, Tawk.to, Crisp, Olark, Zendesk Chat, HubSpot Chat, Tidio, Pure Chat, Front Chat, Smartsupp.
All three present = 100, two of three = 67, one of three = 33, none = 0.
Social rhythm
Google Business Profile post cadence over the last 30 days plus Instagram public-profile post cadence over the same window. We detect the IG handle via the site's social link block; if no handle is detectable, the score uses GBP only.
Score bands: 8 to 12 posts per month combined = 100 (the consistent cadence). 4 to 7 = 70. 1 to 3 = 40. Zero = 0. The median Tri-state operator lands at 1 to 3.
We deliberately exclude Facebook (declining organic reach makes the signal noisy) and LinkedIn (rarely used by small local businesses). We also exclude TikTok unless it is a primary channel for the vertical (some restaurants and salons), in which case we add it as a separate commentary field rather than affecting the score.
What we deliberately leave out
Four things, in order of how often we get asked.
- Paid ad ROAS. Depends on creative, bid strategy, and audience targeting. Not website-level fixable, and we do not run ads on broken sites anyway. We mention ad spend efficiency in the PDF commentary when the audit reveals an obviously broken paid campaign, but it is not a scored metric.
- Financial KPIs. Private to the operator, not measurable from outside, and not a fair benchmark to score on a third-party audit. We use revenue range only as an ICP filter (under $200K means the patchwork stack is fine, audit is less urgent).
- Brand identity and visual design. Subjective, not a ranking factor in any direct way, and out of scope for a performance-oriented audit. We will note glaring brand inconsistencies (logo mismatch across platforms, unprofessional imagery) but they do not move the score.
- Customer service workflow audit. Requires inside access to phone systems, ticketing, and staff training. Worth doing, just not in scope for a 48-hour third-party audit.
How the overall score is computed
Weighted average across the 6 metrics:
overall = 0.20 × site_speed
+ 0.15 × mobile_ux
+ 0.25 × local_seo
+ 0.15 × review_velocity
+ 0.15 × lead_capture
+ 0.10 × social_rhythm Tier labels by overall score: 85 to 100 = "Operating well." 70 to 84 = "Solid foundation, two leaks." 50 to 69 = "Needs work, top opportunities below." 30 to 49 = "Major gaps. Start with the audit." 0 to 29 = "Rebuild conversation."
When we re-run the audit
The free audit is run once per business URL, with a 24-hour cooldown to prevent abuse. Past clients can request a re-audit quarterly to track progress; the re-audit includes a delta against the prior measurement so the movement on each metric is visible. Audit results are stored for 30 days then auto-purged.
Frequently asked questions
How do you measure mobile site speed?
Google PageSpeed Insights API v5 against the live URL on a simulated mid-range Android device with throttled 3G connection. We pull mobile LCP, CLS, INP, and Speed Index. We use the lab data for the scorecard score and compare to the field data (CrUX) when available to flag instability.
What does the local SEO score actually check?
Two layers, weighted equally. Layer one is Google Business Profile completeness across 12 fields (primary category, secondary categories, services, hours, holiday hours, photos, posts, attributes, services list, products, Q&A presence, business description). Layer two is Map Pack rank for the top 5 vertical-specific queries in the business's primary city, pulled via SERP scraping.
How do you measure review velocity?
Apify Google Maps Reviews actor against the business's GBP profile, sorted by date, filtered to the last 90 days. We divide by 3 for the trailing-90-day velocity number. We also flag the trailing-30-day window separately so a recent surge or drop is visible.
What counts as 'lead capture' for the score?
Three checks against the live site DOM. Form presence (any form element on the homepage or service pages, with name and email or phone fields), click-to-call presence (any tel: link or visible phone number that triggers a phone-call action), and chat widget presence (any of the 12 most common chat widget JS signatures). All three present = 100, two of three = 67, one of three = 33.
How do you measure 'social rhythm'?
Google Business Profile post cadence over the last 30 days plus Instagram public-profile post cadence over the same window when an IG handle is detectable from the site. We do not count internal social platforms (Facebook, LinkedIn) because the cross-business signal is too noisy. The score buckets to 100 for 8 to 12 posts per month, 70 for 4 to 7, 40 for 1 to 3, 0 for none.
Why these 6 metrics and not others?
These 6 are the metrics we found, after running 30+ audits, that correlate most directly with revenue outcomes for the local business operator. Backlinks, domain authority, page authority, and traditional SEO metrics matter at the margin but do not move the dial the way these 6 do. Map Pack rank, review velocity, mobile speed, lead capture, mobile UX, and social rhythm are the levers an owner can actually pull.
What do you deliberately leave out of the audit?
Four things. Paid ad ROAS (depends on creative and bid strategy, not website-level fixable). Financial KPIs (private to the operator, irrelevant to a third-party audit). Brand identity / visual design (subjective, not a ranking factor). Customer-service workflow audit (operational, requires inside access). The audit is intentionally scoped to the 6 metrics that move local discovery and conversion.
Is the audit run on every URL submitted?
Yes, every audit form submission gets a real audit. We do not auto-generate scorecards from a template. The PDF arrives in 48 hours and includes the live measurements, the city-and-vertical benchmark, and the prioritized fix list. We sign every audit by hand before it ships.
Can I run the audit myself?
The interactive scorecard tool at /scorecard runs the same 6 measurements you get in the PDF, in under 90 seconds, no commitment. The PDF version adds the prioritized fix list, named local benchmarks, and our written commentary. Both are free.
How do you handle businesses with multiple locations?
Single-location audit by default. For multi-location operators we pull each location's GBP separately and aggregate the local SEO and review velocity layers per location, then average the site-level metrics (speed, mobile UX, lead capture). We document per-location results in the PDF when applicable.
Last updated: 2026-04-27