Skip to content

How I Diagnosed Four Technical SEO Problems Killing My Search Traffic

• 20 min read • SEO
How I Diagnosed Four Technical SEO Problems Killing My Search Traffic

How I Diagnosed Four Technical SEO Problems Killing My Search Traffic

My video production agency site got 411 impressions in Google Search Console over three months and exactly zero clicks. Average position was 17.2—firmly on page two. When I checked my personal site, krystian.co, I found the same pattern: hundreds of impressions, almost no clicks, positions hovering between 11 and 20. According to published click-through rate research, position 11 on Google gets very few clicks, and it drops from there. Page two is invisible. I knew the content was indexed because Google was showing it; the problem was not that I needed more posts, it was that the ones already ranking were stuck just below the threshold where anyone would ever see them. When I finally audited both sites, I found four fixable technical problems that were holding every page back.

411 Impressions, Zero Clicks: The Pattern That Started the Investigation

I run The Content Agency (thecontentagency.ae), my video and content production agency in Dubai. Over three months, Google Search Console showed 411 impressions, 0 clicks, and an average position of 17.2 for the site’s blog content.

An impression is one occasion when a page from your site appears in Google’s search results, whether the person searching notices it or not. A click is a recorded visit from Google Search. So zero clicks did not mean nobody visited the agency site through referrals, direct links, social media, or word of mouth. It meant those 411 Google appearances produced no recorded search visits.

The average position was the uncomfortable clue. Average position is Search Console’s estimate of where my highest result appeared across relevant searches: position 1 is the top result, position 2 is next, and so on. It is an average, not a fixed rank. The same page can appear differently depending on the query, searcher, device, and location. Still, 17.2 put me roughly into page two territory often enough to explain the silence. Backlinko’s analysis of Google results reported a 39.8% CTR for position 1 in 2023, falling to 18.7% for position 2 and 10.2% for position 3. Backlinko did not make position 17 useless, but it helped me see the practical problem: Google was testing my pages in results people were unlikely to reach or choose.

I had seen the same broad pattern on krystian.co, my personal site: pages were visible in search without meaningful search traffic arriving. This wasn’t simply a one-off bad month or a niche issue.

For a small business owner, freelancer, agency, or solo founder, this is the frustrating middle ground: your posts are indexed and appearing for real searches, yet the phone doesn’t ring and the analytics graph barely moves.**

Why an Average Position of 17.2 Produces Almost No Traffic

In plain language, the site was commonly appearing in the results people informally call page two, not near the top of the first set of results where most searchers make their choice.

An impression tells me Google is showing a page for a search. CTR tells me whether anybody chose it. With 411 impressions and zero clicks, the CTR was extremely low.

This is not necessarily a sign that the page is useless. It is evidence that Google associates the page with relevant searches. But an appearance low down the results is very different from being prominently visible. A person searching for “video production company Dubai” will typically assess the first few options. They might read an AI answer or map listing and stop once they find a satisfactory choice. They may never reach result 17.

The drop off starts well before page two. In July 2026, First Page Sage reported blended Google CTRs of 7.1% for position 1, 3.0% for position 2, and 1.7% for position 3. Positions 8, 9, and 10 registered 0.3%, 0.2%, and 0.2% respectively (firstpagesage.com). Even the bottom of the first set of organic results attracts very few clicks, so a page averaging 17.2 is operating beyond that already thin slice of attention. This doesn’t mean position 17 is a fixed rank for every query, or that reaching page one guarantees a certain number of visits. Search layouts change. Some searches show AI answers, maps, ads, videos, shopping results, or featured snippets. Searcher behaviour also changes with the query. The useful lesson is simpler: visibility is not the same as traffic, and a low position impression is often too far from the searcher’s first choices to earn a click.

I have learned that when pages actually get seen, they work. So I do not treat low ranking impressions as a reason to abandon a topic. I treat them as a clue: Google has already made an initial connection between the page and the query, but the page has not earned enough prominence to be clicked.

The pages I now look at first

I call pages ranking from positions 11 to 20 striking distance pages. They are not winning yet, but they have existing search visibility. In practical terms, I would rather inspect a post sitting around position 17 with impressions than start by polishing a post Google is not showing at all. First, I check whether the page matches what the searcher is trying to accomplish and whether another page on my site is competing for the same search. Then I fix the clearest obstacle. The goal is not a ranking promise; it is to focus effort where Google has already given me a signal that the page may be relevant.

Problem One: Google Indexed Both the WWW and Non-WWW Site

Google had indexed both thecontentagency.ae and www.thecontentagency.ae.

To a person, those URLs look like the same website. To Google, they can be two separate versions:

If both addresses load substantially the same page, I have created two routes to the same content. Links, indexing signals and performance reporting can be unnecessarily divided instead of reinforcing one clear page.

The simple model: pick one front door

A canonical is a page level instruction that identifies the preferred URL, the version a search engine should treat as the main copy when duplicate or very similar pages exist.

A redirect is a server or platform rule that automatically sends visitors and search engines from an unwanted URL to the preferred URL. Someone who enters the nonpreferred address should land on the equivalent page at the chosen address without having to do anything.

The distinction matters. A canonical says, “this is the version I prefer.” A redirect removes the duplicate route for visitors. Google describes redirects and rel="canonical" annotations as strong signals for choosing the canonical URL, and notes that combining methods makes the preferred version clearer to its systems, according to Google Search Central.

Changing only the canonical tag is not the full fix if both domain versions still load. Equally, a redirect is less convincing if your navigation, sitemap and canonical tags keep pointing to the other version. Mixed signals are exactly what I was trying to remove.

How I would consolidate it safely

First, choose one format: either www.thecontentagency.ae or thecontentagency.ae. There is no useful win in keeping both live as separate versions. The important decision is consistency.

Then make that chosen format the one used everywhere:

  1. Update navigation links so they use the preferred domain.
  2. Put only preferred URLs in the XML sitemap, the file that lists pages you want search engines to discover.
  3. Set each page’s canonical tag to its preferred URL.
  4. Add permanent redirects from the other domain version to the matching preferred page. Do not redirect every old URL to the homepage. If www.thecontentagency.ae/video-production is the duplicate, it should redirect to thecontentagency.ae/video-production, not to the homepage. Matching page to matching page preserves relevance for the visitor and gives search engines a clear equivalent destination.

This was not an exciting content fix. I did not publish another blog post or rewrite a headline. I fixed a basic contradiction: my site had two front doors, and I needed Google to see one.

Keyword cannibalisation is when multiple pages on the same site compete to satisfy the same, or very similar, search intent, the thing the searcher is actually trying to achieve. It makes it unclear which page Google should rank as your best answer.ae. I had a pillar guide about Dubai video permits that earned 120 impressions, plus a separate article about Dubai filming permit costs for drones, locations and venues that earned 76 impressions. Google was showing two articles from my own site for the same target search, rather than establishing one clear page as the strongest answer. Neither reached page one.

The mistake is to diagnose this purely by wording. Two articles can use similar phrases without being a problem if they solve different jobs. A guide for someone asking, “How do I get a Dubai filming permit?” can be distinct from a cost breakdown for a producer who already knows they need one and wants to budget. But if both pages ultimately answer “What does a Dubai filming permit cost and how do I arrange it?”, they are competing, even if their titles and headings are different. Search intent, not repeated keywords alone, is the test. Nightwatch makes the same distinction: pages can cannibalise each other even when the content or wording differs.

Why two decent articles can both underperform

Search engines can struggle to identify the most relevant result and may alternate between URLs instead of allowing one to build stable visibility. SE Ranking notes that split links leave each page weaker than a single consolidated destination.

For a small site, that split matters. I do not have unlimited articles or links to waste. If two URLs are each a partial answer, neither becomes the obvious resource.

How I decide what to do

Start in Search Console. Open each article, review the queries, the searches that triggered it, and compare what people appear to want with what the page actually delivers. Do not assume competition because both pages mention “Dubai filming permits.”

Then use this decision rule:

Do not simply delete the weaker article. Before removing anything, check its existing visibility, internal and external links, and sections worth preserving. Otherwise, you can throw away useful material and links rather than concentrating their value on one better result.

Problem Three: A Quote Calculator URL Entered Google’s Index

I found a contact form address showing up in Google with every setting from my quote calculator embedded in the URL. It was a working form, but it was never meant to be a useful search landing page. Someone arriving from Google would not find an article, service page, or clear answer to a question. They would land on a version of a form carrying old calculator choices.

This is easy to create without noticing. A URL parameter is extra information added to a web address, often after a ?, that tells a page which settings to load. A quote calculator might use parameters for service type, budget, location, or other selections. Saved form settings can then produce several addresses for essentially the same tool.

For example, these may all load the same contact form in slightly different states:

Those variations are not separate pieces of content worth finding in search. But if they are linked internally or included in an XML sitemap, search engines can discover them. Crawling means a search engine bot discovers and fetches a URL. Each low value variation can compete for that crawling and indexing attention rather than making the important pages on your site easier to understand.

The right fix depends on what the URL is for.

A noindex instruction asks search engines not to include a page in their searchable index, while allowing the page to keep working for visitors who arrive directly. Google says that, after Googlebot crawls a page and reads a noindex meta tag or HTTP header, it can drop the page from Google Search results. The standard page level meta tag is <meta name="robots" content="noindex"> in the page’s <head> section, as documented by Google Search Central.

For my situation, noindex made sense if the form still needed to work with those saved calculator settings. The page could remain available to someone using the tool, without becoming a search result. Use a canonical when duplicate or very similar URLs should be consolidated into one searchable version. If /contact?service=video-production is simply another version of /contact, the canonical can identify /contact as the version that should represent the set. If the parameter URL serves no purpose at all, redirect it to the clean contact page instead.

My practical checklist is:

  1. Remove parameter based form URLs from internal links and the XML sitemap.
  2. Apply noindex if the specific form state must continue to exist but should stay out of search.
  3. Apply a canonical if several URLs are duplicates and one clean version should remain searchable.
  4. Apply a redirect if the parameter URL no longer needs to exist.

Do not confuse blocking access with removing a page from Google. A robots.txt disallow tells bots not to crawl a URL; it does not guarantee that the URL will stay out of search results. A search engine may need to access the page to see its noindex instruction in the first place, as Matthew Edgar explains.

After changing this, inspect the affected URL and monitor Search Console over time. Indexing changes are not instant, and assuming the fix worked without checking is how these quiet technical problems linger.

Problem Four: The Highest-Impression Topic Deserved Attention First

My fourth mistake was treating every low ranking page as equally urgent. They were not. I should have started with the topic Google was already showing most often, even though it sat just outside the results most people see.

As explained earlier, impressions show how often Google displays your page. Google has already found some relevance; the question is whether the page fully answers the search.

On thecontentagency.ae, the permit topic generated 196 impressions across the two competing pages, more than any page except the homepage. Repeated impressions showed that people were searching and Google saw some connection between those pages and the query. Their lower positions showed that the result still needed work.

Find your own striking distance opportunities

Open Google Search Console and go to Performance → Search results. Choose a recent date range that is long enough to show a meaningful pattern; I would use the last three months as a practical starting point. Enable clicks, impressions and average position so you can judge visibility, traffic and ranking together.

Then:

  1. Open the Pages tab first, rather than jumping straight into individual keywords.
  2. Filter for pages with an average position from 11 through 20.
  3. Sort the remaining pages by impressions, highest to lowest.
  4. Open each promising page and review its associated queries—the actual searches creating those impressions.
  5. Repeat the position filter for queries where useful, then sort by impressions again.

Digital Dot’s suggested Search Console workflow uses a position filter above 10 and below 31, sorted by impressions; I narrow the first pass to 11–20 because those pages are closer to the visible results and usually give me a clearer place to start. Digital Dot describes these terms as searches Google already associates with your content.

Do not automatically promote every row on that list. Exclude irrelevant searches, branded searches with a different purpose, and one off impressions. A query can be visible without being worth winning. Impressions are a prioritisation signal, not proof that a topic will bring the clients, customers or readers you actually want.

Review the page before rewriting it

For each candidate, I work through the same sequence:

For example, a page can earn plenty of impressions for a permit related query but still fail the intent test if it gives a broad overview while the searcher needs a practical explanation of the permit process. The fix is not automatically “add more words.” It may be a sharper title, a direct opening answer, missing steps, better internal links, or resolving the competing page first.

I also avoid chasing a huge topic where my page sits far down the results just because the topic sounds attractive. A smaller query at position 14 with consistent impressions is evidence that I am already close. It may need fewer, more precise changes than a broad topic at position 67.

Start with what Google is already testing, then decide whether that visibility matches the business you are building.

What I Changed and What the Results Show So Far

The honest answer is that this is still a diagnosis, not a recovery story.

Average position means the typical place my result appeared in Google’s results; 17.2 usually puts it on page two. Those impressions showed Google was testing the pages, but the zero clicks showed that visibility alone was not enough.

I found four issues worth fixing: both the www and nonwww versions were indexed, two permit articles overlapped, a quote calculator form URL was searchable, and I had not prioritised the permit topic despite its 196 impressions across the competing pages.

What is completed

I am not going to present recommendations as work that has already been done. I have not recorded a completed implementation date or a comparable postfix Search Console window for any of those four issues.

These are the changes I would complete before treating this as a recovery case study:

What the data shows so far

The only measured result I can report is the prefix three month snapshot: 411 impressions, 0 clicks, average position 17.2. There is no comparable after period yet, so there is no evidence of movement, positive or negative, and no valid basis for assigning a result to one particular fix. Search traffic can vary with seasonality, changing search demand, Google’s result layouts, and a small number of impressions. Google also needs time to recrawl and reassess changed pages. Technical cleanup and better content do not guarantee rankings, clicks, or a particular timeline.

I have learned not to mistake invisible traffic for a need to publish endlessly. Many people producing AI content assume they have a content volume problem; in my experience, the first problem is often ranking, including basic technical issues nobody has checked. The practical value here is not a promised uplift. It is seeing the diagnosis clearly enough to make one measurable change at a time.

Connect your Search Console to SwiftSEO and see your own striking distance pages.

How Visibility on krystian.co Led to Boxing PT Clients

The same pattern showed up beyond Google Search. Blog posts on krystian.co were picked up by ChatGPT and brought me boxing PT clients.

For me, the path looked like this:

  1. I published a useful page that answered a real boxing or training question.
  2. The page became discoverable through a platform or search experience.
  3. A prospective client encountered the page while looking for relevant help.
  4. The content showed enough relevance and trust for that person to consider me.
  5. They made contact and, in some cases, became a paying client.

I also started publishing blogs with SwiftSEO on dubaiboxingcoach.com to attract more PT clients. Some of those posts were picked up by ChatGPT, and I gained 3 new clients from that activity. One client told me directly that she had found me through ChatGPT.

I am careful not to turn that into a promise. It is my observed outcome, not evidence that every blog, business or AI platform will produce clients. I also cannot tell you why ChatGPT selected a particular page, how often it will do so, or whether another business would see the same result.

What I can say is that a strong page has no commercial value if the right person never encounters it. Agencies, freelancers, solo founders and small business owners often have genuinely helpful work sitting quietly on their sites. The problem may not be that the service is weak or the writing is useless. It may simply be that the page has not reached a person with a reason to enquire.

Keep your measurement honest, too. Google Search Console measures how your pages perform in Google Search: impressions, clicks and average position. It does not prove that an enquiry came from ChatGPT, a recommendation, a direct visit or a second visit days later. Treat search visibility and conversion tracking as related but separate things.

A referrer is information a browser can pass to show where a visitor came from. ChatGPT visits can sometimes be identified when referrer data or URL parameters survive the click; OpenAI links from ChatGPT Search may include utm_source=chatgpt.com. In GA4, recognised visits can appear under the AI Assistant channel group with the ai-assistant medium, as Usermaven explains. But missing referral data is not proof that a visit came from ChatGPT, so I would not label unknown traffic as AI driven.

For a small service business, that distinction is practical. Record where you can: the landing page, referral data, contact form submissions and what clients say when you ask how they found you. Then keep improving the pages already showing signs of visibility. A useful page that is seen can start a conversation; a useful page that stays invisible cannot.

How SwiftSEO Automates the Same Striking-Distance Review

I built SwiftSEO because doing this manually every month was tedious. I would open Google Search Console, filter for pages on page two, sort rows by visibility, then work through URLs one at a time.

SwiftSEO connects to that Search Console data and brings forward striking distance pages: pages sitting roughly in positions 11 to 20. They are not guaranteed opportunities, but Google is already showing them often enough to collect data. Instead of repeatedly sorting reports by hand, I use impressions to put the most visible candidates near the top of the review list. It deserved attention before lower visibility ideas, because it was the clearest sign that Google was already testing the site for a relevant search.

What the checks are looking for

SwiftSEO helps organise a few patterns that are easy to miss when you are staring at spreadsheets:

For a freelancer, solo founder, small business owner, or agency with blog posts getting impressions but almost no clicks, that workflow is the point. SwiftSEO does not know your customer, your service margins, or whether a page supports the business you want to build. It helps me identify and organise opportunities; it cannot promise rankings, traffic, or clients.

Connect your Search Console to SwiftSEO and see your own striking distance pages

Sources

  1. We Analyzed 4 Million Google Search Results. Here’s What We Learned About Organic Click Through Rate (backlinko.com)
  2. Google Click-Through Rates (CTRs) by Ranking Position in 2026 (firstpagesage.com)
  3. How to specify a canonical URL with rel=”canonical” and other methods (developers.google.com)
  4. Keyword cannibalization vs content cannibalization: what’s the real difference? (nightwatch.io)
  5. Keyword Cannibalization: What it is and How to Fix it (moz.com)
  6. Block Search indexing with noindex (developers.google.com)
  7. Noindex vs. Nofollow vs. Disallow: When to Use Each One (matthewedgar.net)
  8. How to Target Striking Distance Keywords (digitaldot.com)
  9. How to track ChatGPT traffic and conversions (usermaven.com)

Related reading