Facebook Icon X Twitter Icon LinkedIn Icon YouTube Icon
Go & Local SEO: Stop Measuring the Wrong Metrics

Go & Local SEO: Stop Measuring the Wrong Metrics

TL;DR - Key Takeaways at a Glance

📖 10min read

This article demystifies performance and local SEO metrics, showing how seemingly positive numbers can mask business stagnation. It guides companies to focus on the indicators that actually impact their revenue, in Go as in SEO.

Key Points to Remember

  • Generic Go benchmarks and SEO rankings on non-strategic keywords are often cosmetic metrics that don't reflect the real health of the business.
  • For Go applications, real performance is measured by memory allocation under real conditions, not solely by isolated microbenchmarks that can be misleading.
  • In local SEO, prioritize conversion indicators like calls, quote requests or in-store visits, rather than position alone on low-relevance keywords.
  • Measuring the wrong things can lead to months of wasted work and a false impression of progress, directly impacting revenue.
  • Use tools like `go test -bench=. -benchmem` and profilers to understand the impact of memory allocations on the real performance of your Go application in production.

Reassuring numbers aren’t always the ones that matter

A client called us a few months ago, satisfied. His site was on the first page of Google for 12 keywords. His developer had shown him impressive benchmarks for his application. Everything was fine, on paper.

Problem: his online revenue had been stagnating for eight months.

This is the classic trap of cosmetic optimisation. We measure what is easy to measure, not what actually impacts the business. It is exactly the same bias that pushes some companies to neglect their Google Business Profile listing, which is often worth more than a website for finding local clients. In Go development as in local SEO, the difference between a flattering metric and a useful metric can cost months of wasted work — or worse, give a false impression of progress.

Here is what we have learned to distinguish after 15 years of field projects in Normandy.


Go benchmarks: why your “fast” code might be slow where it counts

Go is renowned for its performance. Rightly so. But this reputation sometimes leads to a classic mistake: trusting generic benchmarks rather than contextual measurements.

The problem with decontextualised microbenchmarks

The go test -bench=. command is your friend. Until it gives you false confidence.

A microbenchmark measures an isolated function under ideal conditions: fresh memory, no contention, predictable data. That is not your production environment. In production, you have the garbage collector running, concurrent goroutines, database access with network latency, hot or cold caches depending on traffic.

What we concretely see with our clients developing Go applications: a function that benchmarks at 200ns can take 2ms under real conditions due to execution context. Factor of 10,000. The benchmark was not wrong — it was just measuring the wrong thing.

The real Go performance indicators

Memory allocation first. Not raw speed. Use go test -bench=. -benchmem to see allocations per operation. A function that allocates 0 bytes/op will almost always be faster in production than a function that is twice as fast on paper but allocates massively — because you reduce pressure on the GC.

Profiling under real conditions. pprof integrated into Go is an underused tool. Run a CPU and memory profile on your staging environment with representative traffic. You will often discover that the bottleneck is not where you thought it was.

Latency at the 99th percentile, not the average. If your API responds on average in 50ms but 1% of requests take 2 seconds, your most active users — often your best clients — experience a degraded service. The average hides the real problems.

Dashboard comparing theoretical Go benchmarks and real production profiling, revealing hidden bottlenecks

The optimisation that truly pays off

On the Go projects we have led, three patterns come up systematically as sources of real gains:

Connection reuse. A poorly configured http.Client that creates a TCP connection per request can multiply your latency by 5 to 10 on external APIs. A well-placed sync.Pool on frequently allocated objects can divide your memory consumption by 3.

Serialisation. The stdlib’s encoding/json is correct but not optimal. On hot paths with large volumes, alternatives such as sonic or easyjson can bring 30 to 60% real gain — measurable in production, not just in benchmarks.

N+1 queries. This is not a Go problem, it is an architectural problem. But Go, with its goroutines, gives a false impression that concurrency solves the problem. It masks it. Identifying and eliminating N+1 queries with proper batching or JOINs remains the first optimisation to make, before any runtime tuning.

“Premature optimization is the root of all evil.” — Donald Knuth. What is often forgotten: the rest of the quote specifies that 97% of the time, we should ignore efficiency. Measure first. Optimise then, where it counts.


Local SEO: the difference between being visible and being chosen

Now let’s talk about the other side of the same problem. On the local search front, the most watched metric remains keyword ranking. “We’re first for ‘plumber Caen’.” Good. But does it generate calls?

Here is where it gets interesting: ranking is an intermediate metric. What counts is conversion — the click, the call, the appointment booking. And between ranking and conversion, there is a chain of optimisations that most agencies never touch.

What your competitors are not doing (and probably neither are you)

Local SEO in 2025 is no longer just a well-filled Google Business Profile and a few local backlinks. These basics are necessary, but they no longer differentiate.

What agencies never tell you: Google now evaluates the consistency of your local presence across all signals. This includes mentions of your NAP (Name, Address, Phone) on sector directories, customer reviews and their frequency, the freshness of your local content, and real engagement on your listing (questions/answers, posts, recent photos).

In the audits we carry out for SMEs in Normandy, we almost systematically find the same gaps:

  • A Google Business Profile created 3 years ago, never updated
  • Incorrect opening hours after the latest changes
  • Zero responses to negative reviews (catastrophic signal for Google and prospects)
  • No post published for at least 6 months

This is not advanced SEO. It is basic hygiene. Yet fixing these points generates measurable results in 4 to 8 weeks.

Normandy business owner managing their Google Business Profile with reviews and recent publications

The local signals that truly convert

Reviews, their volume and velocity. Not just the overall rating. Google looks at the regularity of new reviews. A business that receives 2 reviews per month is perceived as more active than one that received 50 reviews two years ago and nothing since. Set up a simple process: an automated post-service email with a direct link to your listing. Cost: a few hours of setup once. Impact: ongoing.

Hyper-local content. “Joinery craftsman in Normandy” is too broad. “Carpenter in Caen for half-timbered house renovation” targets a precise intent and geography. This is precisely where the most costly mistakes in a keyword audit occur: targeting flattering terms but with no purchase intent. Geolocated service pages — one per main intervention area — consistently outperform generic pages. This is not keyword stuffing, it is relevance.

The link between your website and your Google listing. Your service pages should point to your Google Business listing. Your listing should point to the right landing pages, not your generic homepage. If someone searches for “electrician Bayeux” and clicks on your listing, they should land on a page that talks about electrical work in Bayeux — not on your homepage that talks about everything.

LocalBusiness structured data. The LocalBusiness schema markup with areaServed, openingHours, and geo is still underused by the majority of SMEs. Yet it helps Google understand precisely who you are, where you operate, and when. According to our audit data, fewer than 20% of SME websites in Normandy implement it correctly.

The question you should ask your agency

“What is my click-through rate on my Google Business listing, and how is it evolving?” If your agency cannot answer with a number and a trend, you are measuring the wrong things.

Google Search Console and Google Business Profile Insights provide this data for free. The metrics to track: calls generated, direction requests, clicks to the website, and queries that trigger the display of your listing. These four indicators tell you whether your local presence generates real activity — not just whether you are visible.

“What is not measured cannot be improved.” — Lord Kelvin. In local SEO, the mistake is to measure visibility rather than the action it generates.


The common thread between Go performance and local SEO

You saw it coming. The connecting thread is the same in both domains: the flattering metric vs the useful metric.

In Go, it is speed in nanoseconds vs P99 latency in production. In local SEO, it is ranking on a keyword vs the number of calls generated. In both cases, optimising the wrong thing gives an impression of progress without real business impact.

Let’s flip the situation: before launching any optimisation, ask yourself two questions. What is the final metric that impacts my revenue? And is what I am measuring today directly correlated with that metric?

If the answer to the second question is no — or “I don’t know” — you are optimising in the dark.

Analytics dashboard comparing technical performance metrics and local SEO conversions

Three concrete actions to implement this week

For your Go code: Run pprof on your staging environment with a representative profile. Identify the top 3 functions that consume the most CPU or memory. Measure their impact in P99, not the average. Optimise only those three functions.

For your local SEO: Open Google Business Profile Insights and look at your call and direction request metrics over the last 90 days. If the full picture seems unclear, that is exactly the scope covered by our natural search engine optimisation service. Respond to all your unanswered reviews — positive and negative — before the end of the week. Publish a post on your listing with a concrete update from your business.

For both: Define a clear final conversion metric. Not a proxy, not an intermediate metric. The real one: revenue generated, incoming qualified leads, signed contracts. Everything else is a tool to reach that target — not an end in itself.


Conclusion: measure what matters, optimise where it pays

After 15 years of supporting companies in their digital development, the observation is always the same. Projects that fail do not lack effort. They lack accurate measurement.

A well-ranked website that does not convert is a cost, not an investment. A Go application fast in benchmarks but slow in production is a disguised technical debt.

At GDM-Pixel, we always start by defining the final metric before touching anything. Because optimising without a clear target means going fast in the wrong direction.

Do you want us to audit your local presence or your technical stack to identify where you are genuinely losing performance? Contact us — we’ll tell you what works, what doesn’t, and why. No bullshit.

Charles Annoni

Charles Annoni

Front-End Developer and Trainer

Charles Annoni has been helping companies with their web development since 2008. He is also a trainer in higher education.