<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Erick Magnuson]]></title><description><![CDATA[Search is turning into recommendation. I write about how AI decides who gets named, why most businesses are invisible to it, and what to build instead. Nearly thirty years in tech, CTO to agency owner.]]></description><link>https://erickmagnuson.com</link><image><url>https://substackcdn.com/image/fetch/$s_!oTFT!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90895f3-066c-4d55-8c6d-a495c5255a43_1024x1024.png</url><title>Erick Magnuson</title><link>https://erickmagnuson.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 13 Oct 2026 21:40:20 GMT</lastBuildDate><atom:link href="https://erickmagnuson.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Erick Magnuson]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[erickmagnuson@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[erickmagnuson@substack.com]]></itunes:email><itunes:name><![CDATA[Erick Magnuson]]></itunes:name></itunes:owner><itunes:author><![CDATA[Erick Magnuson]]></itunes:author><googleplay:owner><![CDATA[erickmagnuson@substack.com]]></googleplay:owner><googleplay:email><![CDATA[erickmagnuson@substack.com]]></googleplay:email><googleplay:author><![CDATA[Erick Magnuson]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[You Are Not Losing Traffic to ChatGPT. You Are Losing It on Google.]]></title><description><![CDATA[An entire tooling category is being built on a channel that currently delivers one third of one percent of traffic. The actual damage is somewhere else, and I have a client's numbers that show where.]]></description><link>https://erickmagnuson.com/p/you-are-not-losing-traffic-to-chatgpt</link><guid isPermaLink="false">https://erickmagnuson.com/p/you-are-not-losing-traffic-to-chatgpt</guid><dc:creator><![CDATA[Erick Magnuson]]></dc:creator><pubDate>Wed, 16 Sep 2026 15:26:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!oTFT!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90895f3-066c-4d55-8c6d-a495c5255a43_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ryan Law at Ahrefs published their 2026 AI marketing trends this morning. Eight trends, backed by Keywords Explorer and an analytics cohort of roughly 75,000 sites. It is the best-sourced read on this I have seen this year and you should go read it.</p><p>I want to take two of his numbers and put a client&#8217;s Search Console underneath them, because I have been living inside that account for a month and it says the same thing from the other side.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://erickmagnuson.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Here is the first. Search demand for AI visibility tooling, year over year:</p><ul><li><p>Generative engine optimization: 7,200 a month, up 84%</p></li><li><p>AI visibility: 4,400 a month, up 145%</p></li><li><p>AI visibility tracker: 2,400 a month, up 156%</p></li><li><p>AI visibility tools: 2,100 a month, up 266%</p></li><li><p>LLM visibility: 1,200 a month, up 126%</p></li></ul><p>And here is the second, from the same publication on the same day. ChatGPT&#8217;s referral share across those 75,000 sites: <strong>0.32% of all traffic.</strong></p><p>An entire category of tooling, pricing, and agency service lines is being built on a channel delivering one third of one percent.</p><p>I sell AI visibility work. Weigh that accordingly, and keep weighing it, because what follows argues against the version of my own service that most people are currently buying.</p><h2>The category is smaller than it feels</h2><p>Law is right that this is a real emerging channel and the growth is genuine. Here is what I would add from sitting on the sell side of it.</p><p>Add up that whole keyword cluster and you get roughly 17,000 monthly searches. All of it. Every term in the category. &#8220;AI image generator&#8221; is 361,000 a month by itself.</p><p>The growth rates are real. The absolute numbers are small, and percentage growth off a base of near zero always looks like a revolution. &#8220;AI visibility tools&#8221; going up 266% means it went from very small to slightly less small.</p><p>The part I would push on is who those searches belong to. Ask yourself who types &#8220;AI visibility tracker&#8221; into Google. It is rarely a business owner wondering whether customers can find them. It is a marketer or an agency shopping for something to resell. I know because I am in those buying conversations, on both sides of them. That cluster is measuring supply as much as demand, and the industry is reading all of it as a market.</p><h2>The damage is real. It is just not where the tools are pointed.</h2><p>Further down in the same piece is the number I think about most:</p><p><strong>AI Overviews cut clicks to the top-ranking result by 58%.</strong> Google&#8217;s referral share across their cohort fell from 35% to 24% in about a year.</p><p>So the loss is not happening because buyers left Google for ChatGPT. It is happening on Google, on results pages you already rank on, where the answer now sits above your listing and the click never happens.</p><p>You did not lose the position. You lost what the position used to be worth.</p><h2>What that looks like on a real site</h2><p>I have been inside a client&#8217;s Search Console for the last few weeks, an ecommerce catalog doing real volume. The numbers say the same thing from the other direction.</p><p>Over 28 days: 144,153 impressions, 843 clicks. A 0.58% click rate.</p><p>The top 24 non-brand queries produced 61,718 impressions and 92 clicks. That is a 0.15% click rate, at average positions between four and ten. Forty-three percent of the site&#8217;s impressions returning eleven percent of its clicks.</p><p>One term is worth sitting with. 28,238 impressions, 18 clicks, average position 6.9. That is 0.06%, roughly an order of magnitude below any published benchmark for that position.</p><p>And the one that ends the argument: a commercial-intent query at <strong>average position 2.6, with 757 impressions and zero clicks.</strong> Not a low click rate. Zero.</p><p>Position 2.6 with nothing to show for it is not a listing quality problem. You cannot write a better title tag out of that. Those impressions were counted, and they were never clickable.</p><p>I want to be careful here, because this is the point where the story gets convenient for me and I have not proved it. I cannot tell you from this data how much of that gap is AI Overviews specifically, versus other surfaces that push the blue links below the fold, versus listings that genuinely lacked the weight to be picked. Search Console does not separate them cleanly. What I can tell you is that the gap is far too large to pin on listing quality alone, and that everyone selling you a fix for it is guessing at the same split I am.</p><h2>The defense is older and more boring than the category being sold</h2><p>Same client, same data, split by branded and non-branded:</p><ul><li><p>Branded queries: 1,082 impressions, 179 clicks, <strong>16.5%</strong></p></li><li><p>Non-branded queries: 143,071 impressions, 664 clicks, <strong>0.46%</strong></p></li></ul><p>Branded search is 0.75% of what this site is shown for and 21% of what it earns. Over the trailing year it holds: 1.5% of impressions, 24% of clicks.</p><p>The single comparison: the brand name as a query returned 473 impressions and 124 clicks. The top category term returned 28,238 impressions and 18 clicks.</p><p>One brand query out-clicks twenty-eight thousand category impressions by seven to one.</p><p>That ratio is what actually survives an AI answer sitting on top of the results page. When someone searches your name, they are not asking to be told the answer. They already have the answer and they are navigating. No summary intercepts that, because there is nothing to summarize.</p><p>Every dollar of the AI visibility budget is chasing a channel at 0.32%. Meanwhile the thing that already works, that nobody is selling because it cannot be productized into a monthly subscription, is sitting at a sixteen percent click rate.</p><h2>What I actually think is happening</h2><p>Three things at once, and the industry is only pricing one of them.</p><p><strong>Category search is being eaten.</strong> Broad informational and comparison queries are exactly what an AI summary answers well. Those impressions will keep getting counted and keep failing to convert. Treating them as recoverable opportunity is how a marketing budget gets spent twice.</p><p><strong>AI referral traffic is real but early.</strong> 0.32% is not zero, and the growth curve matters more than the level. Getting cited by models is worth doing. It is not worth reorganizing your entire marketing operation around this year, and the tools measuring it are ahead of the thing they measure.</p><p><strong>Branded and direct demand is the only layer that got more valuable.</strong> It was always the expensive, slow, unglamorous one. It is now also the only one an answer engine cannot sit on top of.</p><h2>What we actually do about it</h2><p>This is where I should tell you RevX sells AI visibility tracking. We do not, and the data above is why.</p><p>Three things get worked instead, in this order.</p><p><strong>Make the site legible before anything else.</strong> Not for AI specifically. For everything. On a recent engagement the client&#8217;s product catalog was submitting 158 URLs for indexing and 74 of them were dead ends to an anonymous visitor, and the product pages published no price and no availability in machine-readable form at all. Eight days and four files later, pages eligible for shopping surfaces went from 0 to 66 and pages carrying review stars went from 0 to 295. That work makes you eligible on every surface at once, including the AI ones, and it costs a fraction of a monitoring subscription. It is also the only layer where the fix is unambiguous.</p><p><strong>Stop paying for impressions that were never clickable.</strong> The audit above, run properly, usually retires a chunk of the keyword strategy. Terms sitting at good positions with sub-half-percent click rates are not underperforming content. They are answered queries. Reallocating that budget is worth more than any tool that tells you about it monthly.</p><p><strong>Build the branded layer, which is the slow unglamorous one.</strong> Sixteen percent versus half a percent is the whole argument. Nobody productizes this because it cannot be delivered as a dashboard, and it takes quarters rather than weeks. It is also the only demand an answer engine cannot intercept, and everything above it gets cheaper once it exists.</p><p>If you want the first one run on your site, that is what RevX does and it is the cheapest engagement we offer, because it needs nothing from you beyond access. No content deadlines, no meetings. If you want the third one, that is a longer conversation and it is mostly not a technical problem.</p><h2>The ten-minute version</h2><p>Open Search Console. Filter to the last 28 days. Sort your queries by impressions and look at the top twenty.</p><p>If a term has thousands of impressions, a position under ten, and a click rate under half a percent, do not send a copywriter at it. Go look at what the results page actually shows for that query. If the answer is sitting above your listing, those impressions were never yours and the honest move is to stop counting them as opportunity.</p><p>Then split branded from non-branded and look at the two click rates side by side. That ratio tells you what your name is worth, in clicks, today.</p><p>Mine came back at seven to one. I would like to know what yours says. Reply and tell me, and if the number is ugly I will tell you which of the three above it points at.</p><div><hr></div><p><strong>Source:</strong> Ryan Law, &#8220;AI Marketing Trends 2026,&#8221; Ahrefs, September 16, 2026. <a href="https://ahrefs.com/blog/ai-marketing-trends/">https://ahrefs.com/blog/ai-marketing-trends/</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://erickmagnuson.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Half This Catalog Was Invisible to Google. One Command Proved It.]]></title><description><![CDATA[Four questions get answered about your site before a customer ever sees it. Most of them have nothing to do with what you wrote.]]></description><link>https://erickmagnuson.com/p/half-this-catalog-was-invisible-to</link><guid isPermaLink="false">https://erickmagnuson.com/p/half-this-catalog-was-invisible-to</guid><dc:creator><![CDATA[Erick Magnuson]]></dc:creator><pubDate>Sat, 29 Aug 2026 17:46:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!oTFT!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90895f3-066c-4d55-8c6d-a495c5255a43_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last time I went looking for how AI picks which businesses to recommend and found that it does not read your website at all. Every source cited was third party. That leaves an obvious follow-up: what is your site actually for, and can anything read it in the first place.</p><p>Here is the answer, and I have a client&#8217;s numbers to put underneath it.</p><p>When people picture search, they picture themselves. Someone types something, a list comes back, they pick one. So when a business owner is told their site needs work, they usually assume the problem is the words on the page.</p><p>Almost always, it is not. By the time a human being is choosing between options, four other decisions have already been made about your site, and you were not in the room for any of them.</p><p>The client sells physical products online, retail and wholesale, on WordPress and WooCommerce. Custom theme, about thirty plugins, a couple hundred products, and a large library of supporting how-to pages.</p><p>The complaint was ordinary and unhelpful. The site was not performing in search and nobody could say why. Rankings were soft, the catalog was missing from Google&#8217;s shopping surfaces entirely, and a year of paid traffic had been running over the top of it.</p><p>Nothing looked broken. The site was well designed, loaded quickly, and every plugin was installed and configured correctly. That is the hardest starting condition there is, because a settings audit finds nothing, a content rewrite spends a quarter, and both leave the actual cause untouched.</p><p>So we did not audit settings. We tested the site the way a search engine experiences it, from the bottom of the stack up.</p><h2>1. Can it be found?</h2><p>Search engines send out software that goes around collecting pages. Think of it as a very fast, very literal person walking the neighborhood writing down every address.</p><p>It only has so much time for your street. If half the addresses it tries turn out to be a locked door, a forwarding note, or an empty lot, it uses up its visit on those and leaves before reaching the pages you actually care about. It does not know which ones were the important ones. Nobody told it.</p><p>The first move here is never an opinion. It is a population test: take the list of pages the site submits for indexing, request every single one as an anonymous logged-out visitor, and tally the responses.</p><pre><code><code>$ curl -s "$SITE/product-sitemap.xml?cb=$n" \
  | grep -o 'https://[^&lt;]*' | grep '/product/' \
  | while read u; do
      curl -s -o /dev/null -w '%{http_code}\n' "$u?cb=$n"
    done | sort | uniq -c

  81 200
  69 302
   5 404</code></code></pre><p>The site was submitting 158 URLs for indexing and 74 of them were dead ends. Roughly half the file was a promise it could not keep.</p><p>Three things about that matter more than the number.</p><p><strong>It was invisible from inside.</strong> In the admin panel all 158 products looked perfectly healthy, because an administrator holds keys the wholesale role gate hands out and a shopper does not. Anyone clicking through the dashboard would have found nothing, forever. This is the part I want owners to hear: everything looks fine when you are logged in and clicking around your own site.</p><p><strong>Nothing was misconfigured.</strong> The 69 redirects were wholesale-only variants, correctly hidden from retail. The 5 not-found pages were configurable bundles and an add-on item, correctly flagged as hidden. Every plugin was doing its job precisely.</p><p><strong>It named the general disease.</strong> One plugin knew a product was restricted. Another knew how to build a sitemap. Neither had any idea the other existed. Plugins publish, they do not reconcile, and the gaps between correctly configured tools is where these problems actually live.</p><p>One more query turned that symptom into a rule we could write code against. A single field decides visibility, and 72 published products carried a restricting value in it. That is a rule, not a list, which means the fix covers products added next year too.</p><p>The site also had no robots file on disk at all. It was being generated at request time by two plugins filtering each other&#8217;s output, producing two competing instruction blocks with the second one empty. A third-party question-and-answer widget was separately appending parameters to product URLs, manufacturing a duplicate of the entire catalog.</p><p><strong>Result: 80 URLs, every one returning 200.</strong></p><p>The sitemap got smaller. That is the goal, and it looks alarming on a chart if nobody warns you.</p><h2>2. Can it be understood?</h2><p>Now the page has been collected, and something has to work out what it says.</p><p>A person looks at your product page and instantly knows the price, that it is in stock, that it has good reviews, and roughly what it tastes like. Software does not know any of that unless the page states it in a form built to be read by software. Most sites carry a second, invisible copy of their key facts for exactly this purpose.</p><p>When it is missing, nothing looks broken. The page is fine. Your customers cannot tell. But every search engine and every AI assistant is looking at a page that never told them the price.</p><p>One command answers whether that copy exists. On this site, a product page published exactly two things: a Review record and an Organization record. No Product. No Offer. No price. No availability.</p><p>The commerce platform&#8217;s product data was not being published at all, on any product page or any category page. The one review record present was floating alone, attached to nothing.</p><p>That single output explained four separate symptoms the client had been treating as unrelated tickets.</p><p>Commerce platforms publish their machine-readable product data through template hooks. This theme rendered its own product markup rather than calling them, so none of it ever ran. Meanwhile the review service was publishing a complete, valid review record and the platform a complete, valid product record, and because neither knew about the other the ratings and the products lived in separate objects. No listing could ever earn stars.</p><p>The way I said this to the owner, without it landing as an accusation: the room was drywalled over the outlets. The wiring is correct and the electrician did the job. Nothing was installed wrong. But nothing can be plugged in until the covers are cut, and until then the room is exactly as dark as if there were no wiring at all.</p><p>Speed belongs to this question too, for an unglamorous reason. Software gives your page a certain amount of time to finish loading before it gives up and judges what it has. A page still assembling itself gets judged half-built. Your customers, meanwhile, just leave.</p><h2>What eight days actually moved</h2><p>Four files, all installed as must-use plugins so they load unconditionally and roll back by deleting one file. No theme edits, no content re-entry, no new subscriptions, and no client meetings required to ship any of it.</p><ul><li><p>Product sitemap URLs that resolve: 84 of 158 &#8594; 80 of 80</p></li><li><p>Pages eligible for shopping surfaces: 0 &#8594; 66</p></li><li><p>Pages with product data recognized: 28 &#8594; 105</p></li><li><p>Pages carrying review stars: 0 &#8594; 295</p></li><li><p>How-to pages with structured data: 0 &#8594; 305</p></li><li><p>Invalid items reported: not measured &#8594; 0</p></li></ul><p>Those 305 how-to pages were generated by parsing the content already on them, not re-entered by hand. Worth noting because the handoff documentation said there were twenty. The sitemap said 305. That single correction changed the entire approach, since the standard recommendation would have meant re-entering every step by hand.</p><p>These are eligibility and comprehension measures taken from Search Console, not from a third-party tool.</p><p>Here is the part most case studies leave out. Over the same 28 day window the site did 144,153 impressions and 843 clicks, against 134,389 impressions and 843 clicks in the prior period. Clicks were exactly flat, on 7% more impressions.</p><p>That is the honest state of play eight days after shipping, and it is what you would expect. The structural work landed in the last week of that window. Nothing has had time to move. What follows is a baseline, not an after.</p><h2>The bug that nearly shipped looking like a success</h2><p>Every change went to staging first, and on this engagement that discipline paid for itself once, visibly.</p><pre><code><code>$ wp eval 'warm_all_ratings();'
  warmed 0 of 144 products

$ wp eval 'warm_all_ratings();'   # identical command, minutes later
  warmed 44 of 144 products</code></code></pre><p>The review service was rate limiting us, and the first version of our code was faithfully caching those empty responses for a full day. Shipped to production as written, it would have published zero ratings and looked like it worked.</p><p>The fix was a retry, a rule never to overwrite good data with worse, and a much shorter cache life for empty answers. It is a small bug. It is also exactly the kind that reaches production silently and gets diagnosed six weeks later as a mysterious ranking problem.</p><h2>Four things the evidence disproved</h2><p>An investigation is only as good as what it rules out, and half of what got ruled out here was our own.</p><p><strong>Meta descriptions are missing site-wide.</strong> Inherited from an earlier assessment and repeated to the client before it was checked. Products, categories and the homepage all had good descriptions. Only how-to pages lacked them. Corrected in writing rather than quietly dropped.</p><p><strong>Google is not reading the review service&#8217;s data.</strong> Our own hypothesis. The Rich Results Test showed all nine reviews being read correctly. The data was fine, it was simply attached to the wrong object. Retracted the same day.</p><p><strong>Block the plugin assets directory in robots.</strong> A common recommendation and an actively harmful one. Search engines render pages, and blocking those assets would have stopped the site rendering properly. Withdrawn before it shipped.</p><p><strong>There are twenty how-to pages to handle.</strong> Per the handoff documentation. There were 305.</p><p>Checking your own advice against the live server is cheaper than explaining it afterward, and clients trust the correction more than they distrust the error.</p><h2>3. Will it get picked?</h2><p>Only now does a person enter the story, and they are giving you about one second.</p><p>The most useful thing to understand here is that <strong>you are not choosing what your entry looks like.</strong> Google writes it, using material from your page. Your title is a strong suggestion. Your description is a weaker one. Both get rewritten regularly.</p><p>What you can change is more powerful anyway, and it is not the wording. It is the <strong>size and shape</strong> of your entry.</p><p>A plain result is one blue line and two grey ones. A result carrying a star rating, a price, an in-stock note and a small photo takes up two or three times the space and simply looks like a more serious option. Same page, same words. Bigger object, with proof attached.</p><p>That extra size is not written. It is unlocked by the invisible copy of your facts from question two, which is why those two questions are worth answering in that order.</p><p>Here is where the measurement gets interesting, and where I have to be careful about what I am claiming.</p><p>The top 24 non-brand queries by volume produced 61,718 impressions and 92 clicks. A 0.15% click rate, at average positions between four and ten. That is 43% of all site impressions returning 11% of the clicks.</p><ul><li><p>Top category term &#8212; 28,238 impressions, 18 clicks, 0.06% CTR, position 6.9</p></li><li><p>Same term, longer form &#8212; 9,269 impressions, 12 clicks, 0.13% CTR, position 8.3</p></li><li><p>Second category term &#8212; 3,545 impressions, 3 clicks, 0.08% CTR, position 8.4</p></li><li><p>Third category term &#8212; 3,265 impressions, 8 clicks, 0.25% CTR, position 8.9</p></li><li><p>A wholesale-intent term &#8212; 757 impressions, 0 clicks, 0.00% CTR, position 2.6</p></li></ul><p>The easy story is that these listings lack the visual weight to be picked, which is exactly what the structured data work just changed. That story would sell well and I am not going to tell it, because a 0.06% click rate at position 6.9 is roughly an order of magnitude below any published benchmark for that position. That gap is too large to pin on listing quality alone.</p><p>There are two candidate explanations and the data I have does not separate them.</p><p>Either the listings genuinely lack the weight to be chosen, or a large share of those impressions sit on surfaces where a blue link barely appears at all. That wholesale term at position 2.6 with zero clicks on 757 impressions leans toward the second. Position 2.6 with nothing to show for it is not a listing problem.</p><p>Which is where the work that just shipped becomes useful for something other than the client. It is a natural experiment. If merchant listings and review stars move that click rate over the next six weeks, it was listing weight. If it does not move, those impressions were never clickable and the right response is to stop counting them as opportunity at all.</p><p>I will publish that result either way. The second outcome is the more useful one to know and the less comfortable one to report.</p><p>Two smaller items came straight out of the same read. Category pages carry a marketing headline in the position where a shopper expects to see the thing they searched for, so the match is invisible above the fold. And 59 of the 305 how-to pages remain unindexed despite now carrying correct markup.</p><p>That second finding is the honest boundary of this kind of work. Once the machine can read everything, whatever is still not chosen is not a markup problem, and no amount of further engineering changes it. That one is editorial. It needs better photography and more depth on the page, not code.</p><h2>4. Does anyone vouch for you?</h2><p>The last question is the oldest one, and it is the one nobody can do for you from a keyboard.</p><p>Other sites linking to you. Press. Being mentioned by name in places you did not pay for. And the quiet one that matters most: whether people search for your business by name instead of searching for the category and hoping.</p><p>I expected to describe this one rather than prove it. Then I split the query data by branded and non-branded, and it turned out to be the clearest number in the whole engagement.</p><ul><li><p>Branded queries: 1,082 impressions, 179 clicks, 16.5% CTR</p></li><li><p>Non-branded queries: 143,071 impressions, 664 clicks, 0.46% CTR</p></li></ul><p>Branded search is <strong>0.75% of impressions and 21% of clicks.</strong> Over the trailing twelve months it holds: 1.5% of impressions, 24% of clicks. A quarter of everything this site earns comes from under two percent of what it is shown for.</p><p>The single comparison that makes it concrete: the brand name as a query returned 473 impressions and 124 clicks. The top category term returned 28,238 impressions and 18 clicks.</p><p>One brand query out-clicks twenty-eight thousand category impressions by seven to one.</p><p>That is what people mean when they say a brand is worth something, and it is the first time I have been able to hand an owner the arithmetic instead of the adjective. When people start typing your name, everything above this gets cheaper and easier. It is the only kind of demand you can create rather than compete for.</p><p>Two caveats, because the number is flattering and flattering numbers deserve more scrutiny than the other kind. Branded clicks over the last 28 days ran about 19% below the trailing-year rate, which for this category in August reads as seasonality rather than decline, and I would not present it as a trend either way without a year-over-year cut. And the branded figures come from a regex on the brand name, so they undercount misspellings and product-name searches. Directionally solid, not exact.</p><p>There is a market for buying this. It does not work, it is well understood by the people it is meant to fool, and it turns a slow problem into a fast one.</p><h2>Why the order is not optional</h2><p>Each question multiplies the ones before it, which means doing them out of order wastes real money.</p><p>Had this engagement started where these usually start, with content and rankings, the writing would have gone onto pages that were still unreadable and the money would have been spent twice.</p><p>Working bottom up also made each step measurable. Fixing access made the legibility problem visible. Fixing legibility turned the click-rate gap into a work queue with numbers attached instead of a matter of opinion. Every layer made the next one cheaper to diagnose.</p><p>Beautiful writing on a page nothing can reach does not get read. Press coverage pointing at a page that forwards somewhere else is coverage thrown away. A perfect headline on a product nobody was looking for still loses.</p><p>It is the same reason you do not install the countertops before the plumbing is connected. The countertops are not less important. They are just useless in the wrong order, and you will pay to do them twice.</p><p><strong>The cheap, boring work goes first, not because it matters more, but because it decides how much everything after it is worth.</strong></p><h2>Words you might hear</h2><p>If someone uses one of these, here is what they actually mean.</p><p><strong>Indexing.</strong> Whether a page is in the collection at all. Not in it means it cannot appear, no matter how good it is.</p><p><strong>Crawling.</strong> The collecting itself. The walk around the neighborhood.</p><p><strong>Structured data.</strong> The invisible copy of your facts, written for software. What unlocks stars, prices and photos in your search entry.</p><p><strong>Schema.</strong> The shared vocabulary that invisible copy is written in. Used interchangeably with structured data.</p><p><strong>Sitemap.</strong> The list of pages you hand over and ask to have considered. Only useful if everything on it actually works.</p><p><strong>Rich result.</strong> A search entry with the extra parts attached. The bigger one.</p><p><strong>Redirect.</strong> A page that forwards somewhere else. Fine once. Expensive by the hundred.</p><p><strong>Core Web Vitals.</strong> Three measurements of how fast and how steady your pages feel to real visitors.</p><div><hr></div><p>None of this makes your site rank. It makes your site eligible, understandable and worth choosing. That is a smaller promise, and it is the one that has to be true before any bigger promise gets a chance.</p><p>This catalog did not need to be rewritten. It needed the covers cut off the outlets, in the right order, by someone willing to test their own advice against the live server before recommending it.</p><p>I do this for a living, so weigh that accordingly. But the four questions are true whether you hire anyone or not, and the first one is cheap enough that there is no excuse for still failing it.</p><p><em>Run it yourself. Pull your sitemap, open twenty of the URLs on it in a private window, and count how many go nowhere. If more than a couple do, you have found question one before anyone charged you to look for it. Reply and tell me what you got.</em></p>]]></content:encoded></item><item><title><![CDATA[I Asked Three AIs to Name the Best Marketing Agency in San Diego]]></title><description><![CDATA[Then Went and Read What They Read]]></description><link>https://erickmagnuson.com/p/i-asked-three-ais-to-name-the-best</link><guid isPermaLink="false">https://erickmagnuson.com/p/i-asked-three-ais-to-name-the-best</guid><dc:creator><![CDATA[Erick Magnuson]]></dc:creator><pubDate>Sun, 23 Aug 2026 01:38:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!oTFT!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc90895f3-066c-4d55-8c6d-a495c5255a43_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I sell AI visibility. Keep that in mind, because by the end you will have a good reason to be suspicious of anyone who does, including me.</p><p>The question buyers ask has changed shape. It used to be a search. Ten links, and you made up your own mind. Now it is a question, and you get three names. There is no page two. You are in the answer or you are not in the conversation.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://erickmagnuson.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>So I ran the obvious test on my own category, then did the part almost nobody does. I went and pulled the source.</p><blockquote><p>Who&#8217;s the best marketing agency in San Diego?</p></blockquote><h2>Three answers, three completely different behaviors</h2><p><strong>ChatGPT</strong> gave a ranked shortlist: Ignite Visibility, Power Digital, Siege Media, Traina, 2POINT Agency. It cited Clutch on nearly every line, with each shop&#8217;s Clutch position and review count.</p><p><strong>Gemini</strong> built a table. Ignite Visibility, Power Digital, Siege Media, Bop Design, Mindgruve Macarta, WISE Digital Partners, each slotted into a &#8220;best for&#8221; category. No sources at all.</p><p><strong>Claude</strong> refused to rank anyone. It said nearly every &#8220;best agency in San Diego&#8221; list is published by an agency that put itself on it, named three of them, then offered two shops it considered defensible and asked what I actually needed.</p><p>Three agencies appeared in all three answers: <strong>Ignite Visibility, Power Digital, Siege Media.</strong> That is the consensus set. Everything else was one model&#8217;s opinion, which should tell you how sturdy &#8220;the AI recommends us&#8221; is as a claim.</p><p>Then I went and opened the Clutch page ChatGPT had been reading.</p><h2>The receipt</h2><p>The page still carried ChatGPT&#8217;s fingerprint. One of the links on it came through tagged <code>utm_source=chatgpt.com</code>. That is not inference. The model went to that page, and the page knew it.</p><p>Here is what is at the top of it.</p><p>The first four listings are <strong>Featured</strong>. SmartSites, Jives Media, Hotspex Media, MassMedia. Their links route through Clutch&#8217;s ad server and carry a sponsor flag. Clutch is upfront about this, in a line sitting right above the results:</p><blockquote><p>&#8220;We may earn a fee for some placements.&#8221;</p></blockquote><p>Look at the location fields and it gets sharper. Those four say <strong>&#8220;Serves San Diego, CA.&#8221;</strong> The listings below them say <strong>&#8220;San Diego, CA.&#8221;</strong> The paid slots at the top of the San Diego page are agencies from somewhere else, buying their way onto it.</p><p>Now go back to what ChatGPT actually told me.</p><p><strong>It named none of them.</strong> Not one of the four paid placements made the shortlist.</p><h2>It didn&#8217;t just read the list either</h2><p>This is the part I got wrong before I checked.</p><p>My assumption was that the model recites the directory. It doesn&#8217;t. Clutch&#8217;s organic San Diego order runs Ignite Visibility, REQ, (W)right On Communications, Storm Brain, Power Digital, and on down. ChatGPT gave me Ignite, Power Digital, Siege Media, Traina, 2POINT.</p><p>It skipped REQ and (W)right On, both of which are public relations shops with advertising as a sideline. It skipped Storm Brain, which is mostly web design. It reached down to Traina at ninth and 2POINT at fourteenth. It pulled Siege Media from a different Clutch directory entirely.</p><p>So it read the service mix on each listing and filtered for shops that actually match &#8220;marketing agency,&#8221; then ranked what was left. That is not recitation. That is judgment applied to a candidate pool.</p><p>Which reframes the whole thing.</p><p><strong>Clutch was not the ranking. Clutch was the pool.</strong></p><h2>What that means, and it is not what the GEO pitch says</h2><p>Two conclusions, and they cut in opposite directions.</p><p><strong>You cannot buy the answer.</strong> Four agencies paid for placement on that page. The model looked straight past all four. Whatever those featured slots cost, they bought visibility to humans scrolling the page and nothing at all from the machine reading it.</p><p><strong>You cannot be in the answer if you are not in the pool.</strong> Every single name ChatGPT gave me came off a Clutch listing with real verified reviews attached. Ignite has 175. Power Digital has 66. Traina has 46. The shops with &#8220;Not yet reviewed&#8221; on that same page, and there are many, were never candidates for anything.</p><p>So the play is not sponsorship. The play is being present, categorized correctly, and reviewed in the places your category&#8217;s answers get assembled from. Boring, slow, and unglamorous, which is presumably why so much money goes into the alternative.</p><p>One more thing worth noticing, since the whole post is about source discipline. ChatGPT told me Ignite had 165 reviews. The live page says 175. The model was working from a slightly stale read, which is a small error here and would not be small in a category where the numbers are close.</p><h2>What nobody cited</h2><p>Count the agency websites cited across all three answers.</p><p>Zero.</p><p>Not one model quoted an agency&#8217;s own site, case studies, service pages, or blog. Every source was third party: a marketplace listing, published listicles, Google Maps ratings, review counts.</p><p>Your website does not get you into the answer. It closes the deal once someone arrives. Two different jobs, and nearly everyone I talk to is funding the first and assuming it covers the second.</p><p>Before you copy anyone&#8217;s source list, know that it shifts by category. Broad studies of local AI citations put Yelp, Reddit, and Google far out front, with Clutch back around eleventh. For a B2B service category like agencies, Clutch and editorial listicles run the table instead. Go find yours rather than borrowing someone else&#8217;s.</p><h2>About those listicles</h2><p>Claude named Thrive&#8217;s list as an example of the self-serving kind, so I checked it, because a model asserting something is not a source.</p><p>Thrive Internet Marketing Agency, founded 2005, 160+ staff, operations across 34 states. Not a San Diego agency. They publish &#8220;11 Best Digital Marketing Agencies in San Diego,&#8221; and to their credit they publish the methodology in plain sight:</p><ul><li><p><strong>AI Visibility: 60%</strong>, based on tracking 200 prompts over the past year</p></li><li><p>Google search performance: 10%</p></li><li><p>Everything else: reviews, experience, reputation, website UX, services, market relevance, 5% each</p></li></ul><p>Thrive ranks itself first at 97 out of 100. They also publish the Los Angeles version. Thrive ranks itself first there too, also 97 out of 100. Same methodology, different city, identical score.</p><p>Sixty percent of that score is how visible the agency already is in AI answers. Then the list gets published into the same pool the models read.</p><p>I want to be precise about what I can and cannot show you, since that is the whole point of this post. I cannot show you a model using that list to rank anyone. What I can show you is that the list exists, that it is scored mostly on AI visibility, that its publisher wins its own ranking in every city it covers, and that at least one model has read it. Whether the loop closes is an open question. Anyone telling you otherwise is guessing at the same thing I am.</p><h2>The uncomfortable part</h2><p>Ignite Visibility sells GEO, which is optimization for exactly this kind of answer. They are also the most AI-visible agency in San Diego by every measure in this test.</p><p>Two honest readings. Either the service works and they proved it on themselves, or they are best at a game with circular scoring. I lean toward the first. I cannot rule out the second, and neither can anyone selling you either version.</p><p>Which brings me back to the top. I sell this too. So does Thrive, whose list ranks Thrive first. So does Ignite, whom the lists rank first. Self-interest is not disqualifying. It is load-bearing, and it belongs on the table where you can see it.</p><h2>Run it on yourself</h2><p>Ten minutes, and do the second half, because the second half is where everything is.</p><p>Ask all three models who the best [your category] in [your city] is. Then ask each one where it got that. <strong>Then go open the source and read it yourself.</strong></p><p>That last step is the whole thing. The answer tells you who won. The source tells you what game was being played, whether the top of it is paid, whether you are in the pool at all, and what the model chose to ignore.</p><p>I would not have learned anything from the three answers alone. I learned it from the page underneath them.</p><p>If your name is not in there, that is not a verdict on your work. It is a verdict on where your work is written down, and that is fixable.</p><p>Run it. Tell me what came back, and what was underneath it. I read everything.</p><p><strong><sub>Sources</sub></strong></p><ul><li><p><sub>Clutch, Top Advertising Agencies in San Diego, featured placements and disclosure: </sub><a href="https://clutch.co/agencies/san-diego"><sub>https://clutch.co/agencies/san-diego</sub></a></p></li><li><p><sub>Thrive Agency, best digital marketing agencies in San Diego, methodology and self-ranking: </sub><a href="https://thriveagency.com/news/best-digital-marketing-agencies-in-san-diego/"><sub>https://thriveagency.com/news/best-digital-marketing-agencies-in-san-diego/</sub></a></p></li><li><p><sub>Thrive Agency, best digital marketing agencies in Los Angeles: </sub><a href="https://thriveagency.com/news/best-digital-marketing-agencies-in-los-angeles/"><sub>https://thriveagency.com/news/best-digital-marketing-agencies-in-los-angeles/</sub></a></p></li><li><p><sub>Local Dominator, 267,280 AI citations across six engines: </sub><a href="https://localdominator.co/case-study/ai-local-seo-citations-report/"><sub>https://localdominator.co/case-study/ai-local-seo-citations-report/</sub></a></p></li><li><p><sub>Foundation, Yelp and AI local discovery, 28 million small business queries: </sub><a href="https://foundationinc.co/lab/yelp-ai-local-discovery/"><sub>https://foundationinc.co/lab/yelp-ai-local-discovery/</sub></a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://erickmagnuson.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>