Why this matters for owners of legacy stores

Something changed in how buyers find products online, and it changed fast. A shopper who used to type "best wireless headphones under 200" into Google and click through five product roundups now types the same question into ChatGPT and reads one summary. The summary names three or four specific products, links to a handful of sources, and ends the search. There is no page ten. There is no scroll. If your store is not in that answer, your store does not exist for that buyer.

We see this every week in our practice. Owners of stores running on Joomla with VirtueMart, on PrestaShop 1.6 or 1.7, on Magento 1 with an OpenMage patch on top, ask the same question in different words. Traffic is stable. Rankings look fine in the classic Google report. Sales are down. That gap is AI search taking the buyer before the buyer ever reaches a search results page.

Owners of legacy stores are in a harder spot than owners of modern SaaS platforms for three reasons. Shopify pushes a monthly update that quietly ships structured data, crawler headers, and canonical logic for every merchant on the platform. A store on Joomla 3 or PrestaShop 1.6 gets nothing of the sort. There is no vendor sitting behind the shoulder of the shop owner, shipping AI readiness for free. Second, the technical stack of a legacy store is often held together by a template built in 2016, a payment module patched in 2019, and a robots.txt written before any AI crawler existed. Every one of those pieces was fine for classic Google. None of them are fine for the current retrieval mechanics of ChatGPT Search or Perplexity. Third, most owners of legacy stores know their catalog and their customers better than any consultant does, but the vocabulary of AI crawlers, JSON LD, and llms.txt is new and there is nobody in the shop who wakes up thinking about it.

None of this requires a migration. We have no interest in telling a shop owner who runs a working Joomla and VirtueMart store since 2014 that the answer is to rebuild on Shopify. It is not. The answer is to fix the specific technical layer that AI crawlers read, on the platform the shop already runs on. The changes are surgical, they take days rather than months, and they leave the catalog, the URLs, the checkout, and the customer database exactly where they are.

This guide walks through the actual settings, files, and modules that get a legacy store visible in AI search in 2026. Every recommendation below is one we run on Kyiv Stend, our own Joomla and VirtueMart store online since 2014, and on client stores across Joomla, PrestaShop, and Magento 1.

The four AI search engines and how they actually retrieve

Store owners often talk about "AI search" as if it were one system. It is not. In 2026 there are four distinct engines that matter for commercial visibility, and each one retrieves web content through a different mechanism. Understanding the mechanism matters because a setting that helps one engine can be irrelevant or even counterproductive for another.

ChatGPT Search runs on a hybrid model. OpenAI does not operate a full independent web scale index. Instead, ChatGPT Search leans on the Bing index for the bulk of retrieval and supplements it with OpenAI's own crawl data collected by the search bot OAI-SearchBot, plus live page fetches by ChatGPT-User when a specific chat needs fresh content. The practical consequence for a store owner is that if the store is not indexed in Bing, ChatGPT Search will not see it well no matter how clean the JSON LD is. Bing Webmaster Tools stops being optional and becomes a required stop.

Perplexity operates a federated loop. It draws from the Brave Search index (which is structurally independent from Google and Bing), enriches with programmatic API calls to Google and Bing, and adds its own crawler PerplexityBot for direct indexation. Perplexity-User fetches specific pages live during a user session. Perplexity leans more heavily on freshness and citability than the other engines, so recent, well linked pages get preference.

Google AI Overviews run on top of the standard Google Search infrastructure. There is no separate crawler for AI Overviews. The normal Googlebot indexes the page, and Google decides in ranking time whether the page qualifies to be summarised in an AI Overview or to feed AI Mode. The critical distinction here is the token Google-Extended. This is not a crawler at all. It is an opt out signal that tells Google whether the page may be used to train Gemini and Vertex AI models. Blocking Google-Extended removes the page from AI training but does not affect ranking in classic Google Search or eligibility for AI Overviews.

Gemini as a consumer product uses the same Google infrastructure. Anthropic's Claude family has its own trio in 2026: ClaudeBot (training), Claude-SearchBot (search index), and Claude-User (live user driven fetches), all documented by Anthropic and all respecting robots.txt.

The takeaway is simple and important. Being visible in one of these engines does not mean being visible in the others. A store may show up in ChatGPT Search (because it is well indexed in Bing) and be absent from Perplexity (because Brave has not crawled it recently) and be invisible in Google AI Overviews (because the classic Google organic ranking is weak). The checklist that follows treats each engine separately.

robots.txt: what to allow, what to block

The single most common technical mistake we find on legacy stores in 2026 is a robots.txt that was written years before any AI crawler existed and has never been updated. The second most common is the opposite: an overreaction, where the owner heard that "AI is scraping the web" and switched on Cloudflare's "Block AI Scrapers" toggle. Both of these break AI search visibility. The first passively, the second actively.

The core distinction to hold in your head is the difference between a training crawler and a search crawler. A training crawler harvests text to teach a foundational model. A search crawler indexes pages so an AI answer engine can cite them in real time. Blocking a training crawler is a reasonable business decision (you may not want your product descriptions used to train a competitor's model). Blocking a search crawler is a decision to be invisible in the corresponding AI answer engine. These are not the same choice and they should never be made with a single toggle.

OpenAI publishes four distinct bots and documents them on its developer site. GPTBot is the training crawler. OAI-SearchBot is the search index crawler that feeds ChatGPT Search. ChatGPT-User is the live fetch agent that goes to a specific URL when a user's chat needs current content. OAI-AdsBot validates landing pages for ads inside ChatGPT. If you want ChatGPT Search visibility and you are cautious about training, block GPTBot and allow the other three.

Perplexity documents two: PerplexityBot for the search index and Perplexity-User for live user driven fetches. Both should be allowed if you want to appear in Perplexity answers.

Google's stack is documented at developers.google.com/crawling. Standard Googlebot handles the AI Overviews pipeline. Google-Extended is the training opt out token. Blocking Google-Extended is an editorial decision about AI training, and it does not affect classic Google Search or AI Overviews eligibility.

Anthropic documents ClaudeBot, Claude-SearchBot, and Claude-User in its help centre. Anthropic also supports the non standard Crawl-delay directive, which is a useful safety valve for legacy stores on fragile shared hosting.

Here is a working baseline for a legacy e-commerce store that wants full AI search visibility and opts out of training only where the vendor offers a separate signal:

User-agent: *
Disallow: /admin/
Disallow: /checkout/
Disallow: /cart/
Disallow: /customer/account/
Sitemap: https://www.yourstore.com/sitemap.xml

User-agent: GPTBot
Disallow: /

User-agent: OAI-SearchBot
Allow: /
Disallow: /admin/
Disallow: /checkout/
Disallow: /cart/

User-agent: ChatGPT-User
Allow: /

User-agent: PerplexityBot
Allow: /
Disallow: /admin/
Disallow: /checkout/
Disallow: /cart/

User-agent: Perplexity-User
Allow: /

User-agent: ClaudeBot
Disallow: /

User-agent: Claude-SearchBot
Allow: /
Disallow: /admin/
Disallow: /checkout/
Disallow: /cart/

User-agent: Claude-User
Allow: /

User-agent: Google-Extended
Disallow: /

If your store sits behind Cloudflare, robots.txt is only half the story. Cloudflare in 2026 offers a three tier classification of AI bots: Search, Agent, and Training. If you enable the "Block AI Scrapers" preset without reading the fine print, you block many search intent bots at the edge before your robots.txt is ever consulted. Any mixed purpose crawler (one that OpenAI or Perplexity uses for both search and training) will land in the more restrictive Training tier under Cloudflare's default logic and get dropped. If your store is behind Cloudflare, treat the Cloudflare AI Crawl Control dashboard as the source of truth and align robots.txt to it, not the other way around.

llms.txt: what it is and whether you need it

The llms.txt standard is a proposal from Answer.AI, first published by Jeremy Howard in September 2024. The idea is simple: put a Markdown file at the root of your domain that gives AI systems a curated table of contents. What the store sells. Where the important pages are. What the shipping and returns policies say. The specification defines two files: /llms.txt (a short index) and /llms-full.txt (a longer version with the actual content of each linked page inlined).

Adoption in 2026 is uneven. Perplexity actively reads /llms.txt and uses it to shortcut past complex JavaScript rendering. OpenAI and Anthropic have not made an official commitment to parse it on general commercial sites. Google is explicit that /llms.txt has no effect on Google Search ranking or AI Overviews eligibility. The honest framing is straightforward. llms.txt is a low cost signal that helps in Perplexity today, may help in ChatGPT and Claude tomorrow, and does nothing for Google either way.

Given that low cost, we recommend implementing it. For a legacy e-commerce store the practical minimum is a short /llms.txt at the domain root that:

  • Names the store in an H1
  • Gives a one sentence description of what you sell
  • Links to the top level product categories
  • Links to the About, Contact, Shipping, and Returns pages
  • Optionally links to a handful of flagship products

Do not attempt to dump the entire catalog into /llms-full.txt. On a store with a few thousand products the file becomes too large to be useful, exceeds the context windows of smaller models, and creates server load every time you regenerate it. Keep /llms-full.txt for policies, the About page, and category descriptions, not for every product SKU.

Structured data: the minimum viable Product schema for 2026

If robots.txt decides whether crawlers can enter the store, structured data decides whether they can understand what they find. In 2026 structured data is no longer "nice to have" for AI visibility. It is the difference between a page an AI engine can confidently cite and a page it treats as an unstructured blob.

Structured data on an e-commerce product page in 2026 means one thing in practice: a JSON LD block that describes the product using the Product type from schema.org, embedded in the page head or body. Older formats (Microdata, RDFa) still work syntactically but Google and every serious AI extractor prefer JSON LD. If your store outputs both (which is common on PrestaShop 1.7 with a third party module layered on top of native template markup), you will get validation errors and you should strip the older format from the template.

For a product page in 2026, the minimum viable set of fields is:

  • name: exact product title, matching the H1 on the page
  • image: high resolution image URL, ideally 800 by 800 pixels or larger
  • offers: nested with price (as a number, not a string), priceCurrency (ISO 4217 code such as EUR or USD), and availability (in stock, out of stock, preorder)
  • description: 500 to 1000 characters, matching the visible product description

Strongly recommended additions:

  • brand: nested Brand object with name
  • sku or mpn: unique product identifier
  • gtin (GTIN 13 in most of Europe): a valid GTIN meaningfully improves eligibility for Google Merchant Listings and adds trust signal for AI extractors
  • aggregateRating and review: only if you have real reviews visible on the page; do not fabricate

For 2026, Google Merchant Listings also expects hasMerchantReturnPolicy and shipping detail properties on product pages. These are not required for AI citation, but they are required to appear in Google Shopping surfaces and in the product carousels that AI Overviews sometimes render.

One word on the causation debate. In 2026 Ahrefs published a study that tracked 1885 pages that added JSON LD schema between August 2025 and March 2026, matched against a control group of 4000 pages that did not. The study found no statistically significant lift in AI citations from adding schema alone. This does not mean structured data is useless. It means that structured data is a hygiene requirement, not a magic switch. Authoritative sites that get cited tend to also have clean structured data. Adding structured data to a page that lacks authority does not manufacture citations. Do it because it is table stakes and because it makes the page machine readable, not because you expect a citation bump the next day.

FAQPage and HowTo: what still works in AI vs classic search

Google made two significant deprecations that store owners still get confused about in 2026. In August 2023 Google announced changes to HowTo rich results on mobile, and shortly after removed HowTo from desktop as well. HowTo structured data is effectively dead as a Google feature. The HowTo report was removed from Search Console and there is no reason to add HowTo markup to a store page today.

FAQPage is more nuanced. Google restricted FAQPage rich snippets in classic Search results to a narrow set of authoritative government and health domains starting in August 2023. If you are a normal e-commerce store, adding FAQPage markup will no longer render an expandable FAQ accordion in classic Google Search results.

However, FAQPage structured data is not dead for AI. Perplexity and ChatGPT Search both extract question and answer pairs from FAQPage blocks and use them as citation sources. A well structured FAQ block on a category page or a flagship product page is one of the highest ROI additions you can make to a legacy store in 2026. It gives AI answer engines a clean, prewritten answer to a natural language question, and it cites the source page in the AI reply.

The practical shape is a section at the bottom of a category or product page with 5 to 8 real questions that customers actually ask, each with a 40 to 80 word answer, wrapped in FAQPage JSON LD. Do not invent questions. Take them from your customer service inbox, from the search terms your on site search records, from the phone.

Joomla + VirtueMart specifics

Owners of Joomla and VirtueMart stores usually run one of three versions: Joomla 3, which reached official end of support in August 2023, Joomla 4, or Joomla 5. Joomla 6 is available in 2026 but still uncommon in production e-commerce.

For Joomla 3 stores the honest advice comes first. Joomla 3 is unsupported, incompatible with modern PHP versions from 8.1 onwards, and locked out of the current generation of structured data and llms.txt extensions. If your store runs on Joomla 3 in 2026, no amount of surface level AI tuning will fix the underlying problem. The AI readiness work is a bandage on a broader modernisation need. We say this straight because saying otherwise would waste the shop owner's money.

For Joomla 4 and Joomla 5 stores the tooling in 2026 is workable. The extension we deploy most often for structured data with VirtueMart integration is "Google Structured Data" by Tassos Marinos, listed in the Joomla Extensions Directory. As of July 2026 the extension is at version 6.2.1 and supports Joomla 4, 5, and 6. The Pro variant maps VirtueMart product prices, availability, images, and reviews into Product JSON LD automatically. For most stores this is the fastest path from "no structured data" to "clean, validating JSON LD on every product page".

For llms.txt generation, JSitemap Professional (from J! Extensions Store) is the Joomla extension we know of that natively generates /llms.txt and /llms-full.txt from a VirtueMart catalog. If you already own JSitemap Pro for XML sitemap generation, the llms.txt feature is included at no extra cost. If you do not, this feature alone is not usually worth the licence price, and hand rolling a /llms.txt file (a Markdown file with 30 to 60 links) is a one hour job.

The robots.txt file on a Joomla site lives at the web root. Joomla installs a default robots.txt that does not mention any AI crawler. Edit the file directly on the server or through your hosting file manager, following the baseline template earlier in this guide. Do not use the "robots directives" feature inside Joomla's Global Configuration for AI crawler rules, since it writes to page level meta tags, not to /robots.txt.

One specific issue we see repeatedly on VirtueMart stores: product custom fields are stored in a way that renders as a table of attribute rows at the bottom of the product page. AI extractors handle prose better than they handle tables. When you write the long product description, restate the key attributes in a sentence or two of natural language. "This drill accepts standard 13 millimetre chucks and runs on a 20 volt battery". The table can stay for human buyers, but the sentence gives the AI extractor something clean to cite.

PrestaShop 1.6 and 1.7 specifics

PrestaShop is a strong platform for e-commerce, but the legacy versions have real problems in 2026, and the version divide is sharp.

PrestaShop 1.6 reached official end of maintenance on 30 June 2019, as confirmed by PrestaShop's own blog. That means no security patches for more than six years. A store still running PrestaShop 1.6 in 2026 is running on a codebase with known unpatched vulnerabilities, is likely stuck on PHP 5.6 or 7.x (both long past end of life), and is out of compliance with PCI DSS requirements that mandate current PHP and TLS versions. This is not primarily an AI search problem. It is a fundamental modernisation problem where AI search visibility is downstream of far bigger issues. If you are on PrestaShop 1.6, the honest recommendation is to modernise the platform first (either to a current PrestaShop line or through an equivalent modern PHP stack) and address AI visibility as part of that project.

PrestaShop 1.7 is a different story. It is out of active maintenance but still widely deployed, runs on more modern PHP, and has a workable extension ecosystem in 2026. Native PrestaShop 1.7 templates output basic Product structured data automatically (name, price, currency, availability, primary image), but they miss what 2026 Google Merchant Listings expects: brand as a nested object, gtin or mpn, hasMerchantReturnPolicy, and shipping details. You need either a module or a targeted template override to add these fields.

For llms.txt generation on PrestaShop 1.7 and above, two modules exist as of 2026: MW LLMs.txt Generator from Mayaweb and an equivalent listed on the PrestaShop Addons marketplace. Both support PrestaShop 1.7 and above. Neither vendor lists support for PrestaShop 1.6. If you run 1.6 and want llms.txt, you write it by hand and put it in the web root.

One recurring PrestaShop 1.7 problem: when you install a third party JSON LD module while the theme's built in microdata is still active, Google Search Console reports schema validation errors caused by duplicate Product declarations. The fix is to strip the legacy inline microdata from the theme templates, keeping only the module output. This is a template surgery job, not something the module can do for you.

robots.txt on PrestaShop is regenerated through the back office (SEO and URLs, then the Generate robots.txt button). If you add AI crawler directives to robots.txt and then hit Generate, your custom directives are overwritten. Two workarounds: either disable the automatic generation and maintain robots.txt by hand, or apply your custom directives immediately after each regeneration through a deployment script.

Magento 1 specifics

Adobe officially ended support for Magento 1 in June 2020. In 2026 the practical reality is that a significant number of Magento 1 stores are still running, held together by two forces: the OpenMage LTS project, which is a community maintained fork that continues to issue security patches and to work on compatibility with newer PHP releases; and commercial hosting providers that specialise in legacy Magento and provide their own hardening.

We take a clear position on Magento 1 in 2026. It is possible to run a Magento 1 store securely with OpenMage LTS applied, with an experienced hoster, and with a limited scope of custom modules. But every year the maintenance burden grows and the pool of developers who know Magento 1 well shrinks. For AI search visibility specifically, Magento 1 stores are workable in the short term (twelve to eighteen months) if you take the right steps. Longer term the answer for most Magento 1 stores is a phased modernisation to Magento 2 or an equivalent modern stack. The goal here is to keep the AI channel open while that modernisation happens, not to pretend Magento 1 is a permanent home.

robots.txt on Magento 1 lives in the web root. The default robots.txt blocks /admin/, /downloader/, /var/, and /app/, which is correct but silent on every AI crawler. Edit the file on the server following the baseline template earlier in this guide.

For structured data on Magento 1 there are no officially maintained Adobe extensions in 2026. The most reliable commercial option we have used is the Scommerce Mage Rich Snippets and Cards module, which maps Magento 1 and OpenMage product data to schema.org Product JSON LD. It supports Magento 1.9.x and current OpenMage releases. If you prefer to avoid a paid module, the manual path is to add a JSON LD block to app/design/frontend/[package]/[theme]/template/catalog/product/view.phtml, pulling product data via $this->getProduct() and outputting a compliant Product schema by hand. This is a one time template edit that survives most future upgrades.

There is no maintained Magento 1 module for llms.txt generation. Write /llms.txt by hand and update it when your top level category structure changes. For a stable Magento 1 catalog this may mean editing the file once a year.

One warning that comes up repeatedly on Magento 1 modernisation projects: the moment you upgrade PHP, some third party modules will break. Custom checkout modules and payment gateway modules are the usual culprits. Do the PHP upgrade in a staging environment first, on a full copy of the production database, and expect to spend time patching or replacing modules. This is a modernisation project, not a fifteen minute settings change.

Verify and measure

Once you have made changes, verify the technical layer with objective tools before you start looking at traffic.

Structured data validation: use validator.schema.org for the base schema.org check and Google Rich Results Test at search.google.com/test/rich-results for Google eligibility. Both are free and require no login. Paste a product URL, read the errors, fix them, paste again.

robots.txt validation: the classic robots.txt tester inside Google Search Console was retired. In 2026 GSC exposes crawl status under Settings and shows whether Googlebot can access specific URLs. For non Google crawlers, the fastest check is to fetch the URL yourself with the crawler's user agent string using curl:

curl -A "OAI-SearchBot" https://yourstore.com/some-product

Read the response headers to confirm access.

llms.txt validation: no validator exists as a standalone tool. Fetch the file from the browser (https://yourstore.com/llms.txt) and confirm it renders as plain text with the expected structure. Run it through the schema you wrote (product categories, policies, about) and check every internal link.

AI visibility check: this is the manual test that we run on every client store. Open a fresh session (incognito or clean profile) in ChatGPT, Perplexity, and Google AI Overviews. Ask three questions the way a real buyer would ask them: a brand query ("what is [your store name]?"), a category query ("where can I buy [product category] in [your country]?"), and a specific product query ("compare [product model] prices"). Note whether your store appears, whether the AI cites your specific page, and what the AI says about you. This is not a scientific measurement. It is a reality check that we repeat quarterly.

Server logs: after the robots.txt changes, tail the server access log and confirm that the AI crawlers are actually hitting the site. Grep for OAI-SearchBot, PerplexityBot, Claude-SearchBot, Googlebot. First hits usually appear within days for OpenAI and Perplexity; Google indexes on its own schedule.

Google Search Console: in June 2026 Google launched the Generative AI performance report inside GSC. It exposes impressions of your pages inside AI Overviews, AI Mode, and Discover, broken down by page, country, device, and date. It does not currently expose the query that triggered the impression, does not expose clicks (they roll up into the main Search report), and is not available through the GSC API. Treat this report as a directional signal that Google is surfacing your pages in AI features, not as a full attribution story.

FAQ

Do I need to migrate off Joomla or PrestaShop 1.7 to be visible in AI search?

No. AI search visibility is a matter of the technical layer that crawlers read: robots.txt, structured data, llms.txt, and page content. All of these can be fixed on Joomla 4 or 5 and on PrestaShop 1.7 without a migration. Migration becomes a serious conversation when the underlying platform is unsupported (Joomla 3, PrestaShop 1.6, unpatched Magento 1) or when the shop needs functionality the legacy stack cannot deliver.

Does blocking GPTBot block ChatGPT Search?

No. GPTBot is the training crawler for OpenAI's foundational models. OAI-SearchBot is the search crawler that feeds ChatGPT Search results, and ChatGPT-User is the live fetch agent for user sessions. You can block GPTBot (opt out of training) while keeping OAI-SearchBot and ChatGPT-User allowed (stay visible in ChatGPT Search).

If I add structured data to every product page, will my AI citations increase?

Not automatically. A 2026 Ahrefs study of 1885 pages that added JSON LD schema found no statistically significant lift in AI citations from schema alone. Structured data is a hygiene requirement, not a growth lever. Sites that get cited by AI engines almost always have clean structured data, but adding structured data to a page without underlying authority or usefulness does not produce citations.

What is llms.txt and do I actually need it?

llms.txt is a Markdown file at the root of your domain that gives AI systems a curated map of your site. Perplexity reads it actively. OpenAI and Anthropic have not committed to it officially. Google explicitly ignores it for Search and AI Overviews. It is a low cost addition (an hour of work for most stores) that helps in Perplexity today and may help elsewhere as adoption grows. Worth doing, not urgent.

Can I keep running Magento 1 in 2026?

Technically yes, with the OpenMage LTS patches applied, an experienced hoster, and a limited set of custom modules. Practically the maintenance burden grows every year and the developer pool shrinks. Our recommendation is to open a modernisation conversation now (Magento 2, or a modern PHP stack that preserves your catalog and URLs) and to treat the AI search work as keeping the channel open while that modernisation happens.

How long before I see AI visibility change after making these fixes?

For crawler visibility (bots hitting the site), days. For structured data validation, immediate. For appearance in AI answers, weeks to months, depending on how frequently the target engine recrawls and how authoritative the page is on the topic. Perplexity refreshes fastest. Google AI Overviews are the slowest to move.

Where do I start if my store is on Joomla 3 or PrestaShop 1.6?

Start with a modernisation audit, not with AI search tuning. Both platforms are unsupported and have security exposures that make surface level AI work a poor use of budget. We can run that audit and give you a concrete modernisation path that keeps the catalog, URLs, and SEO intact.


This guide is written from ongoing work on Kyiv Stend, our Joomla and VirtueMart store online since 2014 at kyivstend.com.ua, and from client projects across Joomla, PrestaShop, and Magento 1. If you want a specific audit of your store for AI search visibility, contact us.