Your SEO pixel's fixes are invisible to AI crawlers
Some SEO platforms fix your titles, descriptions and schema with a JavaScript pixel instead of changing your HTML. We tested what AI crawlers actually receive from sites running one. On every site with live changes, none of the fixes were there.
What we tested
In October 2026 we looked at Search Atlas's OTTO pixel, which applies SEO changes in the visitor's browser. We found five small-business sites still running it. For each home page we fetched the server HTML with JavaScript off, once each as Chrome, GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot and Googlebot. Then we loaded the page in a normal browser with JavaScript on, waited for it to settle, and compared.
All six user agents got byte-identical HTML on every site, so nobody was serving bots a special version. The difference was entirely in what JavaScript added afterward.
What we found
- Home nursing service, Sydney: the title, meta description and two JSON-LD blocks existed only after JavaScript ran.
- Medical clinic, Texas: the title, description, canonical, og:description, two JSON-LD blocks and two image alt texts existed only after JavaScript. The raw page had no canonical at all, and its raw title was just the domain name.
- Remodeler, Spokane: the title, description, canonical, og:title, og:description and eight JSON-LD blocks existed only after JavaScript. The raw page had no canonical and no structured data.
- Two more sites had no changes deployed, so there was nothing to compare. One of them had a bigger problem of its own: its raw HTML had no heading and no links.
Three sites with live changes, three for three: the fixes never reached the HTML that AI crawlers read.
Why AI crawlers miss them
A December 2024 study of crawler traffic by Vercel and MERJ found that OpenAI's crawlers, ClaudeBot and PerplexityBot download JavaScript files but do not run them. Google's crawler and Applebot do render JavaScript, so a pixel can still reach Google Search. It does not reach the AI engines you were probably paying to show up in.
The payloads had problems too
We saved the change lists the pixel downloaded. Some of what it was injecting:
- A business logo that pointed at Google's favicon service instead of the company's own logo.
- Image markup claiming a Creative Commons non-commercial license for the sites' photos, including a stock photo. The tool has no way to know an image's license, so this is a false statement made in the owner's name. More on that in Schema that lies about you.
- On one site, an old meta description that overwrote the newer one the owner had written.
- An
<html>tag inserted inside<head>, which is invalid markup. - A meta keywords tag, which Google has ignored since 2009.
Limits
Five sites, home pages only, one run each, from one IP address rather than the crawlers' real IP ranges. A site that checks crawler IPs could serve real bots something different; none of these showed signs of that. The claim that these crawlers skip JavaScript comes from the Vercel and MERJ study, not from our test.
The fix
Put your titles, descriptions, canonicals and structured data in the HTML your server sends. If a tool suggests a change, copy it into your templates or CMS fields and turn the pixel off. One roofing company we came across did exactly that: a single code change that moved 35 of the pixel's fixes into the site itself, made before cancelling the service.
To see what a crawler gets from your page, run it through the free Meta & Social Preview (my own product). It reads the raw HTML, so a title or description that only exists after JavaScript shows up as missing.