The short version: A competitor is being cited in your place inside AI answers, for a reason that has nothing to do with product, price, or brand strength. Most AI crawlers don’t run JavaScript, so a JavaScript-rendered site hands ChatGPT a nearly blank page and the AI quotes whichever brand it can read. Standard marketing reporting cannot detect this. Server logs can. Below is what we found on one enterprise site, what the gap cost, and what to hand your SEO team this quarter.
A competitor is getting cited in your place
We sampled six weeks of ChatGPT answers to one high-intent product question in a national financial services category. The AI cited a direct competitor in 68% of them, 23 of 34 answers. Our client appeared in 9%.
Alt text (CMS): Bar chart showing a competitor with plain-HTML pages cited in 68% of ChatGPT answers versus 9% for the JavaScript-built brand, the AI search citation gap in action.
The AI named both brands in most of those answers, so awareness was intact and the model knew our client well. It cited the brand whose pages it could actually read. We checked the competitor’s site ourselves. Their pages are plain server-rendered HTML, with thousands of words sitting where any crawler can find them.
Then we looked at our client’s page. It holds 3,209 words of the exact content those buyers were asking for: rate details, comparison tables, answers to the questions people ask before they apply. It ranks well in Google. It looks great in a browser. Before JavaScript runs, which is all a non-rendering crawler ever receives, that page contains 28 words. A page title, a tagline, and a note asking the visitor to turn JavaScript on.
Every uncited answer routed a ready-to-buy prospect toward a competitor and taught that buyer which brand keeps showing up. Nobody inside the company had a reason to suspect it. Rankings looked healthy. Traffic looked normal.
Your dashboards are structurally unable to report this
Two reassurances keep this problem invisible at the leadership level, and both of them sound like good news.
“I asked ChatGPT whether it can read our site, and it said yes.” Chat models answer questions about their own crawling with confident guesses. The chat window is not the crawler, and the model holds no record of what its crawler was served last Tuesday. That answer lives in your logs and nowhere else.
“We already get AI traffic to those pages, so they must be readable.” This one fooled the team in our study for months. When someone asks an AI about your brand by name, the model sends them your way using everything it learned about you elsewhere: press coverage, reviews, its training data. That brand-navigational traffic survives JavaScript. The rendering penalty on brand and product pages was statistically indistinguishable from zero in our crosstab, while informational content took a two-to-one hit. A steady trickle from people who already know you masks the silence from everyone who doesn’t.
The deeper issue is the reporting itself. Rank tracking, channel groupings in analytics, and share-of-voice dashboards were all built around one assumption: that a machine which can find your page can also read it. That assumption held for 15 years, because the only machine that mattered rendered JavaScript. A citation you never earned generates no impression, no click, and no error. There is no line item for it in any standard report.
This is an industry blind spot before it is anybody’s failure. Log analysis fell out of routine SEO practice years ago, for the sensible reason that Googlebot stopped needing it. Most agency reporting packages still reflect that era. The practical question for a senior leader is narrow and easy to ask: has anyone shown you your own server logs in the past 12 months? If the answer is no, then nobody advising you can currently tell you whether this is happening to your site.
Google renders JavaScript. Most AI crawlers don’t.
JavaScript SEO has been a solved problem for a decade, as long as Google was the only machine reading. A modern JavaScript site sends the browser a nearly empty HTML file plus a set of instructions, and the browser assembles the page. Humans never notice. Google mostly doesn’t either. Googlebot renders pages with an evergreen version of Chromium and has spent years building that capability at web scale, which is exactly why “we rank fine” feels like proof that all is well.
AI crawlers work differently. GPTBot, OAI-SearchBot, ClaudeBot and PerplexityBot request a URL, take the HTML the server returns, and move on. Vercel and Merj’s analysis of AI crawler behavior found that these crawlers download JavaScript files but never execute them. Their data showed JavaScript accounting for roughly 11.5% of GPTBot requests and 23.84% of ClaudeBot requests, all of it fetched and none of it run.
What the visitors are worth
AI referral volume is still small, which makes it easy to defer. The economics argue against deferring.
Visitors who arrived from AI tools completed this brand’s highest-value conversion action at 0.61% over a three-month window this spring. Organic search visitors converted at 0.38%. That is about 60% higher, and the gap held across the full window. ChatGPT alone drove roughly 90% of those AI referrals.
The mechanics explain the premium. By the time someone clicks a citation in a ChatGPT answer, the comparison shopping has already happened inside the conversation. The click is the decision.
Today’s volume is an early read on a channel that keeps growing. The relevant question is whether your site will be readable when the volume arrives.
What we measured
We wanted to know whether this shows up in outcomes or only in theory. That question turned one page into months of work: log pulls, conversion crosstabs, and competitive citation sampling. Three findings from the same enterprise site, with time windows noted because windows change the numbers.
First, we split the site’s informational pages by how they’re built. Plain-HTML pages earned at least one AI-referred visit at a rate of 51.6% over 12 months. JavaScript-rendered pages managed 25.6%, about half the rate. This is observational data from a live site, not a controlled experiment, and content differs between sections. The size and the consistency of the gap are what convinced us.
Second, the clearest single case. A learning-center hub of more than 600 pages pulls nearly 19,000 Google clicks a year and earned fewer than 300 AI-referred visits over the same period. A neighboring educational section built in plain HTML, about a fifth the size, drew nearly twice the AI visits. Same brand, same domain, same audience, different rendering.
Third, the finding I trust most. Analytics can only count the visitors who arrive. Logs record every bot that knocked, what it asked for, and what it was handed. Ninety days of logs told the whole story. Googlebot reached 83% of the URLs we tracked and re-crawled 80% of them within a week. OpenAI’s index crawler, OAI-SearchBot, reached 24% and refreshed 15%. The bot OpenAI sends for a live look when a user’s question calls for one, ChatGPT-User, requested pages from the JavaScript-built section more than 55,000 times in those 90 days. Every one of those requests was handed the empty shell.
Sit with that last number. 55,000 fetches in 90 days is demand. Real people asked an AI about topics this brand has answered in depth. The AI went to get the page. It came back with nothing to quote.
What to hand your SEO team
This problem is measurable, which is rare in AI marketing. You diagnose it from logs, fix it with engineering, and confirm it from the same logs a month later. The sequence matters more than the tactics, because the pattern we keep seeing is brands buying fixes before diagnosing anything. Five items to assign, in this order:
- Pull the logs before you approve a budget. 30 to 90 days of server logs: which AI crawlers show up, which URLs they request, what status codes they receive, how large the responses are. A 403 at the door and a 200 that returns a two-kilobyte shell are different problems with different solutions, and this single step identifies which one you have.
- Ask your security stack who it’s turning away. Bot managers from vendors like Akamai and Cloudflare were tuned for an era when every unknown bot was a scraper. Some AI crawlers may be blocked or challenged before your platform gets the chance to respond. Decide which bots to admit, then allowlist them deliberately.
- Check what your platform already offers. Several major platforms now ship settings that serve pre-rendered content snapshots to a published list of AI crawlers. Salesforce added one for Experience Cloud sites in its Spring ’26 release, enabled in Experience Builder under SEO settings. These levers carry real scope limits, often public pages and standard URLs only, and switching one on does not confirm delivery. Enable it, then verify in the logs that bots are receiving content.
- Render on the server where it counts. Server-side rendering or prerendering writes your content into the HTML payload itself, readable by every crawler with no special arrangements. Apply it to high-value informational sections first. This rarely requires a replatform. Most frameworks support it page by page, and edge prerendering services offer a middle path.
- Keep watching. Log analysis on a schedule, plus AI citation tracking on the questions you care about. When the fixes work, you see it in sequence: bots fetching full pages, then answers starting to cite you.
Five checks to assign this week
Each of these takes your team minutes to complete and tells you whether you have a problem.
- Open our most valuable content page and View Page Source. Search for a sentence you can see in the browser. Missing means the crawler gets a shell.
- Segment referrals from chatgpt.com, perplexity.ai, and copilot in analytics. Report the volume, then the conversion rate.
- Pull 30 days of server-log entries for GPTBot, OAI-SearchBot, ClaudeBot and PerplexityBot, with status codes. Trust this one above the other four. Logs are direct observation. Everything else is inference.
- Confirm what policy our WAF or bot manager applies to those same crawlers.
- Ask a browsing-enabled AI a question our content should win, then send me the citations.
You have found the leak when check 1 turns up a shell and check 3 turns up 403s or tiny 200s.
The window is narrower than the roadmap
JavaScript frameworks were adopted for good engineering reasons. The problem is an assumption nobody rechecked. Sites were built to be read by two audiences, humans and Googlebot, and both handle JavaScript. A third reader arrived. It sends the highest-intent visitors in your analytics, it doesn’t run your scripts, and it quotes whichever brand it can read.
Two trends are closing on each other. Enterprise sites keep migrating more sections onto JavaScript-heavy frameworks every quarter, for legitimate operational reasons, while nobody re-checks what the machines can still read. AI referral volume keeps climbing. The channel grows while your share of it shrinks.
Citation position compounds in the meantime. Every answer that names a competitor and not you trains the buyer on who the category leader is, and that impression is difficult to reverse once the volume arrives. Almost nobody is checking this yet, based on our client work so far, which means early movers are competing for citations against a field that largely cannot be read at all. That is the biggest competitive advantage your team will get in this channel, and it expires as soon as the rest of the category catches up.
Right now, a competitor with plainer pages and worse content is being quoted as the authority in your category. Your reporting will not tell you when that starts costing you real revenue. Your logs will tell you today.
Questions we hear
Do AI crawlers like GPTBot run JavaScript?
For practical purposes, no. They fetch the raw HTML a server returns and parse what’s there. Google’s crawler renders JavaScript. The crawlers feeding ChatGPT, Claude and Perplexity generally don’t. Content that appears only after scripts execute is invisible to them.
Why does my site rank in Google but never get cited by ChatGPT?
Ranking proves Google can read you, and Google runs your JavaScript. It says nothing about crawlers that don’t. The data above shows a section earning nearly 19,000 Google clicks a year that drew fewer than 300 AI visits, on the same domain where plain-HTML sections performed well.
Do we need to replatform to fix this?
Rarely. The options short of that: platform settings that serve content snapshots to AI bots, server-side rendering applied page by page, and edge prerendering services. Diagnose from your logs first. The right fix depends on whether bots are being blocked, served shells, or both.
Is this what vendors mean by generative engine optimization?
Partly. Generative engine optimization covers a wide range of tactics, and rendering sits underneath all of them as a prerequisite. Platform vendors have started shipping the term as a product setting, as Salesforce did with its content-snapshot toggle. Content strategy for AI answers has no effect on a page an AI crawler cannot read.
Should we just block AI bots instead?
Blocking is a legitimate choice for some businesses. Make it a decision rather than a default. A blocked site cannot be cited, and the citations flow to whoever remains readable. Blocking stops being neutral once your competitors are in the answers and you aren’t.
What’s the most reliable way to know whether AI can access our site?
Server logs. They show which bots came, what they requested, what status codes they got, and how much content they were served. Analytics and rank trackers can only infer. Start with logs, and re-check there after every fix.