WordPress Plugin 1.8: Why your llms.txt now lists best sellers instead of cables
In short: Up to version 1.7.2 the plugin picked products by units sold. In shops with metre goods and small parts, cables and fuses ended up at the top and the actual best sellers dropped out. Versions 1.7.3 to 1.8.1 change that: selection by net revenue, filters for stock, price and categories, a domain check after a move, and product data straight from WooCommerce.
The starting point: a real shop after a move
The problem showed up at solar-autark.com, the shop whose data we also use for the live demo. In September 2026 the shop moved from Gambio to WordPress with WooCommerce. The llms.txt generated afterwards had three flaws:
- Of 45 listed products, 27 were cables, connectors and fuses; only 3 were power stations or bundles.
- All links still pointed to the staging domain the shop used before the move.
- Product titles carried the shop name as a suffix, such as "– SOLAR-AUTARK.COM", and the shop page was listed twice.
The causes
Units instead of revenue. WooCommerce sorts "popularity" by units sold. 5,841 metres of solar cable count like 5,841 sold devices, while a power station with more than €36,000 in revenue counts as 62. On equal units the newest product won, so around 30 freshly added small parts pushed out the best sellers.
No filters. There was no minimum price, no category exclusion and no stock filter.
No domain check. After the move the file was not regenerated automatically, and nothing checked whether the links matched the current domain.
No hook in Pro mode. The llmstxt_content filter only applied in free mode. In Pro mode the server response was saved unchanged.
What changed
| Version | Change |
|---|---|
| 1.7.3 | Domain check before writing: if the source line or at least half of the links point to another domain, the file is not saved and a notice appears. Regeneration after a domain change, including moves via WP-CLI, migration plugins or a database import. llmstxt_content now also runs in Pro mode, plus the new action llmstxt_after_write. |
| 1.7.4 | Icons on the plugin screens no longer show as broken images when external requests to s.w.org are blocked. |
| 1.8.0 | Ranking by net revenue from WooCommerce Analytics over 3, 6, 12 or 24 months. Filters for products in stock, minimum price incl. tax and category exclusion. Separate counts for llms.txt and llms-full.txt. New developer filters llmstxt_product_query_args and llmstxt_product_list. |
| 1.8.1 | In Pro mode the product data comes straight from WooCommerce, so the generator no longer has to fetch product pages. The home page is always fetched first. The partial-result notice now describes correctly what happened. German texts are complete and consistently formal. |
| 1.8.2 | Automatic updates bundled: once 10 minutes after the last change, in Pro mode at most every 2 hours, plus a nightly run. Only changes that are visible in llms.txt count, such as price or stock status – an order that only lowers the stock triggers nothing. |
| Generator | Product titles without the shop-name suffix, HTML entities decoded, duplicate URLs removed, sitemap entries of other domains ignored. Applies to all plugin versions, no update needed. |
Measured: before and after
The values below come from the files served by solar-autark.com on 28 September 2026 and from a WooCommerce test shop with recreated data.
- Title suffixes: from 15 to 0 in llms.txt, from 21 to 0 in llms-full.txt.
- Other domains: 0 links to the former staging domain.
- Product selection: the first ten products are power stations and solar generator bundles. With the default settings 2 cable items stayed among 50 products because they really do generate high revenue. A minimum price or category exclusion hides them on purpose.
- Slow shop: in the test shop with 2.5 seconds response time per page, the 1.8.0 request captured only 4 of 8 products. With 1.8.1 all 8 products were included with price and availability, and with enough time budget the run dropped from 14 to 8 seconds.
Recommended settings
- Update the plugin to version 1.8.3.
- Open the plugin page and check under "Product selection" that ranking is set to "Net revenue – last 12 months".
- If you sell many accessories and small parts, set a minimum price and tick the categories marked "suggested", provided they really hold accessories.
- Click "Generate now" and check under "Last selection" whether real revenue data or the estimate was used.
If you post-processed the product list with your own code snippet so far, deactivate it after checking. Otherwise the file is changed twice.
Frequently asked questions
Do I need to change any settings after the update?
No. Ranking by revenue over the last 12 months and the "products in stock only" filter are active right away. Minimum price and category exclusion are off on purpose, because in shops with a low-priced range they would hide almost everything. Shops with many accessories set both under "Product selection" and regenerate.
Are revenue figures sent to our server?
No. The plugin calculates the ranking inside your WordPress installation. Only the product URLs and the details your shop already shows publicly are transferred: name, price, availability, brand, SKU and short description.
What if WooCommerce Analytics has no revenue data?
This happens when orders were imported without the analytics tables being updated. The plugin then uses units sold times the current price as an estimate. The settings page shows which source was used under "Last selection".
Does a better llms.txt guarantee that AI systems mention my shop?
No. llms.txt is a structured offer to AI systems, not a guarantee of mentions. The update makes sure the file lists your actual best sellers, points to the right domain and is complete.