SEO · 8 min read
Local SEO Reporting: Which Metrics Actually Prove ROI
Summary
Most local SEO reports are theatre. The four metrics that tie to booked jobs, plus the UTM plumbing that stops Maps traffic hiding inside direct.
By Hyder Shah, Founder & CEO · Published July 13, 2026 · Updated July 13, 2026
You have been getting a 40-page PDF every month for a year. It has charts. It has a visibility score that goes up. And you still cannot answer the only question that matters: did this make me money?
That is not your fault. Most local SEO reports are built to be impressive, not readable. Here is what to cut, what to keep, and the exact plumbing that makes the keepers trustworthy.
Which numbers in your local SEO report are pure theatre?
Four staples predict nothing about revenue: total impressions, a proprietary visibility score, keyword counts, and domain rating. None of them can be traced to a job on your calendar, and none of them are numbers Google itself reports as an outcome.
Profile views are the sneakiest one. Google's own documentation says the views metric counts unique visitors, that a person is counted only once a day no matter how often they come back, and that the number can be lower than what your profile shows you. It is not a headcount of humans who considered hiring you.
There is a second trap most agencies never mention. Google states that Business Profile performance data includes views, searches and actions from both organic search results and Google Ads (Google Business Profile Help). If you run Local Services Ads or a Google Ads campaign, your so-called organic profile numbers quietly contain paid interactions.
| Metric | What the report implies | What it actually is |
| Impressions / profile views | Demand is growing | Unique viewers, capped at one per person per day, blended with ad-driven views |
| Visibility score | Rankings are improving | A vendor's proprietary index — no two tools agree, and none of them is Google |
| Keywords ranking | Coverage is expanding | A count of strings, mostly long-tail junk nobody searches with money in hand |
| Domain rating / authority | The site is getting stronger | A third-party link metric that Google does not use and does not see |
None of these is a lie. They are just inputs dressed up as outcomes. An input belongs in the appendix, not on page one.
What are the only four local metrics that tie to revenue?
Four: calls from your Google Business Profile, direction requests, website conversions attributed to a UTM-tagged profile link, and revenue per closed job from local search. Everything else is diagnostic — useful to the person doing the work, not to the person paying for it.
| Metric | Where the number lives | Why it survives the cut |
| Calls from GBP | Business Profile performance report | Google counts every tap of the call button on your profile — a human with a phone in their hand |
| Direction requests | Business Profile performance report | Google says it now de-duplicates multiple taps, cancelled requests and spam, so the number is defensible |
| Conversions from the GBP link | GA4, filtered to your UTM campaign | The only way to see which form fills and bookings came from Maps rather than direct |
| Revenue per closed job from local | Your CRM or job-management software | The number your bank account agrees with |
The fourth one is the whole point. If a plumber closes 30% of local calls at an average ticket of $480, then 40 profile calls a month is roughly $5,760 of booked work — and you can now divide by what you spend to get cost per booked job. We walk through that arithmetic in full in how to measure SEO ROI for a service business, so we will not repeat it here.
Two of the four require plumbing you probably do not have yet. Calls need a tracking setup (call tracking software compared covers the tooling), and the profile link needs UTM tags. That is the next section.
How do you UTM-tag your Google Business Profile so Maps traffic stops hiding in direct?
Add three parameters to the website URL inside your Business Profile — utm_source, utm_medium and utm_campaign — and GA4 will split those sessions out into the Traffic acquisition report instead of dumping them in direct or organic.
Google's own guidance is blunt about the minimum: when you add parameters to a URL, you should always use utm_source, utm_medium and utm_campaign (Analytics Help). Values are case-sensitive, so google and Google become two different rows in your report. Pick lowercase and never deviate.
| Profile field | URL to paste |
| Website | https://example.com/?utm_source=google&utm_medium=organic_maps&utm_campaign=gbp |
| Appointment / booking link | https://example.com/book/?utm_source=google&utm_medium=organic_maps&utm_campaign=gbp&utm_content=booking_button |
| Menu / services link | https://example.com/services/?utm_source=google&utm_medium=organic_maps&utm_campaign=gbp&utm_content=services_link |
Three rules that will save you a suspension and a week of confusion. First, the tagged URL must still point at your own site: Google's guidelines for representing your business prohibit URLs that redirect or refer users to landing pages other than those of the actual business. A UTM string on your own homepage is fine; a bit.ly hop to a third-party landing page is not.
Second, do not use utm_medium=organic. GA4 will fold it back into organic search and you will have gained nothing. Use a value you invented — organic_maps — so it lands in its own channel bucket. Third, Google notes that UTM parameters are omitted from the Landing page and Page path dimensions, so build your GA4 report on session source, medium and campaign, not on the landing-page URL.
One profile edit. Ten minutes. It is the single highest-leverage measurement change most service businesses have never made.
Why is a single local rank number a fiction — and what is a geo-grid?
Because your local rank is a different number at every street corner. Google states that local results are ranked primarily on relevance, distance — how far each business is from the customer who is searching — and prominence (Google Business Profile Help). Distance is an input, so you can be number 1 at your office, 4 a mile out and 12 across town, all at the same instant.
That is why any report line that says emergency plumber: position 3 is meaningless. Position 3 from where? A geo-grid answers that. It runs the same keyword from a grid of simulated coordinates across your service area and returns a rank at each pin, so you get a map of where you actually show up instead of one made-up average.
Local Falcon prices this literally: one credit equals one map pin, grid sizes run from 3x3 up to 21x21, and a 5x5 scan therefore costs 25 credits (Local Falcon pricing). The grid is a diagnostic — it tells your SEO where the ranking falls off a cliff. It does not belong on the owner's one-page report.
Do you need a paid rank tracker, or will free spot checks do?
If you run one location, no. Local Falcon gives 100 free credits when you create an account, and pay-as-you-go credits cost $0.05 each and never expire — so a 5x5 grid on three keywords is 75 credits, roughly $3.75, run once a quarter.
| Setup | What to run | Cost | Verdict |
| Single location, stable | One 5x5 grid on 3 core keywords, quarterly | ~75 credits (~$3.75 pay-as-you-go) | Do this — a subscription is money you do not need to spend |
| Single location, actively fixing rankings | 5x5 on 5-10 keywords, monthly | Starter: $24.99/mo, 7,500 credits | Worth it while you are working the profile; cancel when you are done |
| Multi-location or agency-managed | 7x7+ grids, scheduled, plus competitor scans | Pro: $99.99/mo, 31,250 credits | Worth it — you cannot eyeball 6 service areas |
Two catches on the subscription tiers. Monthly credits expire at the end of each billing cycle, so an unused allotment is money burned. And Local Falcon notes the average user starts by scanning about 10 keywords — pick your 3 highest-value ones instead and the cheapest plan goes a long way.
The honest verdict: a single-location plumber, dentist or roofer does not need a rank-tracking subscription. Buy credits when you have a question, not every month. The money is better spent on the profile itself — see Google Business Profile optimization.
What does Google Business Profile performance data show that Search Console does not?
Everything that happens on the profile itself: calls, direction requests, website clicks, messages and bookings across Search and Maps. Search Console's Performance report covers web, image, video and news results on Google Search only (Search Console Help) — Maps is not one of its search types, so map-pack behaviour never appears there.
They answer different questions. Search Console tells you which queries brought clicks to your website, with impressions, CTR and average position. Business Profile performance tells you what people did once they found your listing. An agency showing you only one of the two is showing you half the picture.
| Question | Where the answer lives |
| Which queries brought clicks to my website? | Search Console, Performance report (queries dimension) |
| How many people tapped call on my listing? | Business Profile performance report (calls) |
| How many asked for directions to my shop? | Business Profile performance report (directions) |
| Which Maps visitors filled in a form? | GA4, filtered to your gbp UTM campaign |
| How many jobs did all of that close? | Your CRM — no Google product knows this |
Timing gotchas worth knowing before you argue with a chart. Google says the Business Profile searches metric updates at the start of each month and can take up to 5 days to appear, and that performance data only exists for verified profiles. You can export it: in Business Profile Manager, tick your profiles, then Actions, then Insights, and download the report as a spreadsheet.
What does a one-page monthly local report actually look like?
Six numbers and one paragraph, on one page, readable in 90 seconds. Anything longer is the agency protecting itself, not informing you.
| Line | Where the number comes from |
| Calls from Google Business Profile | GBP performance report, calls metric, month over month |
| Direction requests | GBP performance report, directions metric |
| Website conversions from the GBP link | GA4, session campaign = gbp |
| Total local leads (calls + forms + messages) | Sum of the three above |
| Booked jobs from local | Your CRM, tagged at intake |
| Cost per booked job | Retainer + ad spend, divided by booked jobs |
Then one paragraph, in plain English: what moved, what we changed, what we are doing next month, and what we need from you. That is the report. No visibility index. No 40 pages of screenshots.
This is also how you hold anyone accountable, us included. We run a 90-day kill switch — a channel with no qualified leads in 90 days gets cut, not defended with a prettier chart. If your current report cannot produce those six lines, the problem is not the numbers. It is that nobody built the plumbing to capture them. Our local SEO work for plumbing and HVAC companies starts with exactly this: tag the profile, wire the CRM, then earn rankings.
If you want an outside read on what your current agency is actually reporting — and what it is quietly leaving out — get my free audit. We will tell you which of your six lines are missing and what it takes to capture them.
Where does this fit in your stack?
If you're running a US service business, the playbook in this post pairs with our full services lineup and applies cleanly across our supported industries and US locations. If you want help implementing it, book a free strategy call — we'll review your current setup and prioritize the next three moves.
For the deeper engagement details, see our SEO service. New to the terminology here? Our SEO & marketing glossary defines every acronym in this post.
Want this built for your vertical? See SEO for Plumbing Companies, SEO for HVAC Companies, SEO for Roofing Contractors, SEO for Dental Practices, SEO for Pest Control Companies.
What are the most common questions about this topic?
Common questions readers send us about this topic.
What is share of local voice and should I track it?
Share of local voice is a geo-grid tool's summary of how visible you are across a grid of map pins compared with competitors. Every vendor calculates it differently, and Google publishes nothing like it, so treat it as a vendor index and not a fact. It is a fine diagnostic for the person tuning your profile. It should never appear on the owner's report, because no share-of-voice number has ever paid a payroll.
How do I add UTM parameters to my Google Business Profile website link?
Edit the website field in your profile and paste your normal URL with three parameters appended: ?utm_source=google&utm_medium=organic_maps&utm_campaign=gbp. Google Analytics guidance says you should always set utm_source, utm_medium and utm_campaign together, and values are case-sensitive. Keep the destination on your own domain — Google's guidelines forbid URLs that redirect users to landing pages other than the business's own. Tag the booking link separately with utm_content so you can tell the two apart.
Why do GBP calls and GA4 sessions never match?
They measure different events on different surfaces. A Business Profile call is a tap of the call button on your listing — that person never touches your website, so GA4 never sees them. GA4 only records the visitors who clicked through to your site. Google also counts profile views once per person per day, which is not how sessions work. Expect the two numbers to disagree permanently, and report them as separate lines rather than trying to reconcile them.
Is Local Falcon worth it for a single-location business?
Usually not as a subscription. You get 100 free credits at signup, and pay-as-you-go credits cost $0.05 each and never expire, so a quarterly 5x5 grid on three keywords costs about $3.75. Monthly plans start at $24.99 for 7,500 credits, but those credits expire at the end of each billing cycle. Buy a subscription only while you are actively working the profile, and cancel once rankings stabilise.
What is the difference between discovery and direct searches in GBP?
That split belonged to the old Google My Business Insights, which classified searches as direct, discovery or branded. The current Business Profile performance report does not show it. It shows the actual search terms people used to find you, updated at the start of each month, and Google says the data can take up to 5 days to appear. If your agency's report still shows discovery versus direct percentages, ask where the number came from.
Are map pack impressions a useful metric?
As a headline, no. Impressions and profile views tell you how often Google showed your listing, not whether anyone wanted to hire you, and Google's own documentation notes that views count unique visitors capped at once per day and blend organic with Google Ads activity. Track them in the appendix as a demand check. Judge the month on calls, direction requests, form fills from the tagged profile link, and booked jobs.
How do I attribute a booked job back to local search?
At intake, not in a dashboard. Every call and form gets a source field in your CRM, populated automatically from the tracking number or the UTM campaign carried through the form. Then when the job closes, the revenue is already tagged. No analytics tool can do this for you — Google never sees your invoices. This is why a CRM field takes 20 minutes to add and settles every ROI argument you will ever have.
About the author
Hyder Shah
Founder & CEO, Foundgrove
Hyder Shah is the founder of Foundgrove, an SEO and GEO agency for US service businesses. See our editorial policy for how these guides are researched and reviewed.
Related reading
Other tactical pieces from the Foundgrove blog.
- SEO · 9 min read
How to Measure SEO ROI for a Service Business (2026)
Your agency's ranking report says up and to the right. Your bank account disagrees. The exact math to know if a $2,500/mo retainer paid off.
Read the seo playbook → - SEO · 13 min read
Local SEO for Service Businesses: The 2026 Operator Guide
Local SEO puts your service business in the Google map pack and 'near me' results. Here's how proximity, prominence, and relevance decide who wins in 2026.
Read the seo playbook → - SEO · 12 min read
Google Business Profile Optimization for Service Firms (2026)
Optimize your Google Business Profile to win the map pack as a service area business: category, hidden address, service areas, reviews.
Read the seo playbook → - Paid Ads · 12 min read
CallRail vs WhatConverts vs Invoca: Call Tracking 2026
Compare CallRail, WhatConverts, and Invoca to find the platform that ties calls to job bookings and ROI attribution for your service business.
Read the paid ads playbook → - SEO · 9 min read
Why Your Business Isn't Showing Up on Google Maps
Not showing up on Google Maps is four different failures wearing the same coat. Run this triage first so you fix the right one instead of losing a month.
Read the seo playbook → - SEO · 9 min read
Multi-Location Local SEO Without Cannibalizing Yourself
Two locations, one metro, one map pack — and your own pages fighting each other. The profile, URL, and review architecture that stops the bleeding.
Read the seo playbook →
Want help applying this to your business?
Book a free 30-minute call. We'll review your current acquisition stack and show you the three highest-leverage moves for your industry and state. Or read how our SEO service works.