SO-MA Index 2026 · original research
Are Portuguese online stores ready for AI agents?
We measured 379 Portuguese brand stores. 215 are ready. The median score is 85 out of 100. Measured on 19 October 2026 with SO-MA's public checker, public pages only.
what we found
What an AI agent finds when it visits a Portuguese store.
-
230
of 379 stores publish an llms.txt
60.7%
168 of these are the file Shopify generates on its own. Outside Shopify: 57 of 201.
-
137
of 183 product pages carry price, currency and stock in structured data
74.9%
-
2
of 379 stores block at least one AI crawler in robots.txt
0.5%
-
220
of 379 stores describe the brand in structured data
58%
How the stores split
- 215 Ready (85 to 100) · 56.7%
- 156 Partly ready (60 to 84) · 41.2%
- 8 Not ready (0 to 59) · 2.1%
Score distribution
| Score | Stores | Share |
|---|---|---|
| 90 to 100 | 44.6% | |
| 85 to 89 | 12.1% | |
| 80 to 84 | 16.9% | |
| 70 to 79 | 17.2% | |
| 60 to 69 | 7.1% | |
| 50 to 59 | 1.8% | |
| 40 to 49 | 0% | |
| 30 to 39 | 0.3% |
By sector
| Sector | Stores | Average | Ready |
|---|---|---|---|
| Fashion and apparel | 70 | 48 (68.6%) | |
| Footwear and leather goods | 69 | 49 (71%) | |
| Home and interiors | 48 | 29 (60.4%) | |
| Food and wine | 74 | 28 (37.8%) | |
| Beauty and personal care | 33 | 18 (54.5%) | |
| Jewellery and watches | 40 | 25 (62.5%) | |
| Retail and electronics | 10 | 3 (30%) | |
| Other sectors | 35 | 15 (42.9%) |
By platform
| Platform | Stores | Average | Ready |
|---|---|---|---|
| Shopify | 178 | 152 (85.4%) | |
| WooCommerce | 77 | 15 (19.5%) | |
| Squarespace | 14 | 4 (28.6%) | |
| Wix | 14 | 7 (50%) | |
| WordPress (no WooCommerce detected) | 12 | 3 (25%) | |
| Other or not detected | 84 | 34 (40.5%) |
Without the product check (see the limits in the method), the average becomes Shopify 96.6, WooCommerce 82.7, Squarespace 88.9, Wix 86.4, WordPress (no WooCommerce detected) 84.4, Other or not detected 86.4, on a 0 to 100 scale.
Other: not detected 64, PrestaShop 9, Salesforce Commerce Cloud 7, Magento 3, VTEX 1.
the five most common gaps
What stands between a store and an agent that wants to buy.
-
Brand not described as an entity
42% · 159 of 379 stores
The home page does not describe the brand in structured data (schema.org Organization, Store or Brand). A model has to guess who the company is from the text and mixes it up more easily with a similar name.
How to fix it An Organization JSON-LD block with name, logo, site URL and official profiles in sameAs.
-
No llms.txt
39.3% · 149 of 379 stores
There is no /llms.txt: the plain-text map of the store for language models, with what it sells, its collections and its policies. It is a recent convention, not yet a standard, and no major answer engine confirms that it reads it; it is cheap to add.
How to fix it Publish /llms.txt with a short brand summary and links to collections, shipping and returns policies and the sitemap.
-
Incomplete share preview
29.8% · 113 of 379 stores
The Open Graph title or image is missing on the home page. It is the card that shows when a person, or an assistant, shares the link in a chat.
How to fix it og:title and og:image on every page. On most platforms it is a theme setting.
-
Product without price, currency or stock in structured data
25.1% · 46 of 183 stores where we found a product page
We found a product page, but its structured data (schema.org Product with Offer) lacks price, currency and availability, or does not exist. This is the data a shopping agent uses to compare offers and confirm it can buy.
How to fix it Product with offers.price, offers.priceCurrency and offers.availability on every product page, generated from the catalogue.
-
Missing title, description or canonical
24.3% · 92 of 379 stores
At least one of the three lines an answer engine quotes about the store is missing.
How to fix it A written title and meta description for each page, and the right canonical.
leaders
20 of the 83 stores that scored 100 out of 100
83 stores scored 100. 39 of them also pass all three basic accessibility checks. We name the 20 of those 39 with the most text readable without JavaScript, in alphabetical order and unranked: within a tie, the order does not mean one store is better prepared than another. The other 359 stores measured are not named, here or in the data file.
| Store | Score |
|---|---|
| Arcopedico arcopedico.com | 100 |
| Armazém das Malhas armazemdasmalhas.com | 100 |
| Catarina Barbosa Skincare catarinabarbosaskincare.com | 100 |
| Coelima coelimastore.pt | 100 |
| Comporta Perfumes comportaperfumes.com | 100 |
| Essências de Portugal essenciaspt.com | 100 |
| EXÉ exe.pt | 100 |
| Imago imagoportugal.com | 100 |
| Joana Mota Capitão joanamotacapitao.com | 100 |
| Let It Soap letitsoap.com | 100 |
| LUR Natural Skinfood lurskinfood.com | 100 |
| More is Better moreisbetter.pt | 100 |
| Näz naz.pt | 100 |
| Next Memory nextmemory.eu | 100 |
| Raquel Poço raquelpocojewellery.com | 100 |
| Sementes Vivas sementesvivas.bio | 100 |
| Sopro Jewellery soprojewellery.com | 100 |
| Templars Arena templarsarena.com | 100 |
| Toworkfor toworkfor.pt | 100 |
| Versus Gamecenter versusgamecenter.pt | 100 |
basic accessibility
Three accessibility checks, read from the same HTML.
They are not part of the score and do not replace an accessibility audit: they are what can be measured reliably in the home page HTML without running scripts.
-
367 of 379
declare the page language (html lang)
96.8%
-
224 of 377
stores with images give every image alternative text
59.4%
-
167 of 344
stores with form fields give every field a name
48.5%
your store
See your score with the same checker.
It is the tool we used for the study, with the same ten checks. Free, no sign-up, public pages only. Once you see the result, you can ask for the fix plan by email.
Is your store agent-ready?
Customers now ask ChatGPT, Gemini and Perplexity what to buy, and AI agents are starting to buy for them. Type your store's address and see what those agents actually read.
Tip: a product page gives the most complete result.
What to fix first
See all ten checks
what a page check cannot see
what we check
Ten checks, each one explained.
- Readable without JavaScriptMost AI crawlers do not run scripts. We count the words they actually get.
- Product data agents can buy fromPrice, currency and availability in structured data on a real product page.
- AI crawlers allowedWhether robots.txt lets in GPTBot, ClaudeBot, PerplexityBot, Google-Extended and others.
- Brand described as an entityOrganization data, so a model can tell your brand from a similar name.
- Title, description and canonicalThe lines an answer engine quotes when it cites you.
- Speed, HTTPS, sitemap, llms.txt, share previewThe basics that decide whether an agent waits for you or moves on.
We read public pages only, the way a crawler would. We never log in, never submit anything and do not store the address you check. If you ask for the fix plan, the address goes in your request.
method
How we measured
Sample
400 online stores of Portuguese brands and retailers, each on its own domain, gathered from 197 public pages on 41 sites: trade and producer association lists, award lists and press articles that name Portuguese brands by sector. Each store has its source on file.
We left out marketplaces, foreign retailers with a Portuguese site, stores whose only source was sponsored or more than ten years old, repeated brands (one store per brand), and the stores of current and past SO-MA clients, so we are not grading our own work.
The sample is not random: these are brands visible enough to appear on those lists. The results describe these 379 stores, not all Portuguese e-commerce.
Measurement
On 19 October 2026, from Lisbon, using the code of SO-MA's public checker (the one on this page), run from a script rather than the site's server. The reader identifies itself as "SO-MA-research (+https://so-ma.studio/indice)".
One request at a time per store, with a one-second pause between requests; home page redirect hops and the two robots.txt files (with and without www) follow without a pause, as in a browser. Before anything else we read each server’s robots.txt and request no path it disallows. Public pages only: home page, robots.txt, sitemap.xml, llms.txt and one product page linked from the home page. No logins, no forms, no stored cookies.
We keep only the check results and counts (words, images, fields): no page content and no data about the stores’ customers. The measurements behind these figures made 2472 requests, robots.txt included.
Corrections
We published the Index on 16 October 2026 with 204 ready stores, 17 below 60 and 79 scoring 100. We then found two errors in our reader. The errors were in our code, not in the stores.
The first read any response larger than 2 MB as empty: 12 home pages, 1 product page and 2 sitemaps. On 19 October 2026 we fixed it and measured those 15 stores again, and the figures became 212, 5 and 83. The reader now reads the first 2 MB of each response, like SO-MA's public checker.
The second counted the time each request spent waiting in our queue as the store's time: we make one request at a time per store, and the time limit started when the request joined the queue. On a slow store, a sitemap or product page that existed could run out of time before it was requested. Each request's time limit (8 seconds, 10 in total with redirects) now starts when it leaves the queue, as in the public checker, where requests run in parallel.
With both errors fixed, we measured all 400 stores in the sample again on 19 October 2026. Every figure in the Index comes from that measurement: 215 ready stores, 8 below 60 and 83 scoring 100.
Score from 0 to 100
Ten checks with fixed weights, the same as the checker. Ready: 85 or more. Partly ready: 60 to 84. Not ready: below 60.
| Check | Points |
|---|---|
| Served over HTTPS | 10 |
| Answers quickly | 10 |
| Readable without JavaScript | 20 |
| Title, description and canonical | 10 |
| Brand described as an entity | 5 |
| Product data agents can buy from | 15 |
| AI crawlers allowed | 15 |
| Sitemap | 5 |
| llms.txt for language models | 5 |
| Share preview | 5 |
The 20 we name
We pick the 20 with the highest score. When the cut falls in a tie, ties are broken, in this order, by more basic accessibility checks passed (0 to 3), a higher share of images with alternative text, more words readable without JavaScript and the alphabetical order of the domain. Word count is not one of the ten checks, so the 20 appear in alphabetical order and unranked. No other store is named.
Limits
The product check looks on the home page for a link with /products/, /product/ or /produto/ in the address, and only counts the page if it is still a product page after redirects (/produtos/ is left out: in Portuguese stores it is almost always a listing). In 196 of 379 stores we found no product page that answered (more common outside Shopify, where product pages use other address formats); those stores get 5 of 15 points on this check, as in the checker. A product page without product data scores 0, so finding one can lower the score compared with finding none. That is why the "product without data" gap is counted only among stores where a product page was found.
We read the first 2 MB of each response, like the checker on this page: on a very large page, anything after that (for example product data at the end of the code) does not count. A store that takes more than 8 seconds to answer a request (10 with redirects) goes without that response, also as in the checker.
The 21 stores we could not measure, especially the 15 that refused even an identified reader, are probably among the most closed to agents. They are outside every figure, which makes the picture look better.
We only read robots.txt. Blocks at the firewall or CDN, such as the AI bot blocking Cloudflare offers, are not visible in this measurement.
Speed was measured from Lisbon on an office connection and varies through the day. It is a snapshot of the day each store was measured: stores change.
The study measures whether a store can be read and bought from by agents. It does not measure whether ChatGPT, Gemini or Perplexity actually recommend each brand.
Stores not measured
21 of the 400 stores on the list were not measured and are not in any figure: 15 stores refused our reader; 4 stores had a robots.txt that returned an error or did not answer, and the rule in that case (RFC 9309) is not to read; 1 store did not answer within 8 seconds; 1 store redirected too many times. Refusing the reader means a 4xx response (403 or 429), almost always bot protection.
Stores that did not answer, or whose robots.txt did not answer, got a second attempt the same day; stores that refused the reader (403 or 429) did not.
Since 19 October 2026, a home page read with no text and no title, or a bot check page served instead of the store, never gets a score: the store counts as not measured. The rule also applies to earlier measurements. No store in this edition is in that case.
Interests
SO-MA sells the Agent-Ready Audit and builds Shopify stores. That is why we publish the whole method, use a checker anyone can run, and leave our clients’ stores out.
Sample sources
See the 41 sites behind the 197 source pages
By site, with the number of stores and pages. The exact source of each store is on file; we do not publish it because many pages carry the brand name in the title, and we only name the top 20.
- timeout.pt 146 stores, 43 pages
- portugueseshoes.pt 52 stores, 52 pages
- portugalfoods.org 33 stores, 1 page
- observador.pt 20 stores, 13 pages
- vinhosdoalentejo.pt 18 stores, 1 page
- e-konomista.pt 15 stores, 8 pages
- eco.sapo.pt 14 stores, 7 pages
- noticiasaominuto.com 14 stores, 4 pages
- nit.pt 11 stores, 11 pages
- lepetitjournal.com 7 stores, 1 page
- anicp.pt 6 stores, 1 page
- echoboomer.pt 6 stores, 5 pages
- marketeer.sapo.pt 6 stores, 6 pages
- portuguesejewellery.pt 6 stores, 6 pages
- postal.pt 6 stores, 5 pages
- rtp.pt 6 stores, 2 pages
- portaldaqueixa.com 3 stores, 2 pages
- 4gnews.pt 2 stores, 2 pages
- forbespt.com 2 stores, 2 pages
- lojascomhistoria.pt 2 stores, 2 pages
- portuguesesoul.com 2 stores, 1 page
- sabado.pt 2 stores, 2 pages
- timeout.com 2 stores, 2 pages
- verangola.net 2 stores, 1 page
- apicer.pt 1 store, 1 page
- dn.pt 1 store, 1 page
- dnoticias.pt 1 store, 1 page
- en.wikipedia.org 1 store, 1 page
- ericeiramag.pt 1 store, 1 page
- essential-business.pt 1 store, 1 page
- hola.com 1 store, 1 page
- hometextilestoday.com 1 store, 1 page
- ifema.es 1 store, 1 page
- jornaldenegocios.pt 1 store, 1 page
- lisbonlux.com 1 store, 1 page
- monocle.com 1 store, 1 page
- newinporto.nit.pt 1 store, 1 page
- p.cinco-estrelas.pt 1 store, 1 page
- portugalglobal.pt 1 store, 1 page
- ricavida.pt 1 store, 1 page
- us.fashionnetwork.com 1 store, 1 page
how to cite
Use the numbers, say where they come from.
The aggregated data is public under CC BY 4.0: you can reuse it with attribution.
SO-MA Studio (2026). SO-MA Index 2026: are Portuguese online stores ready for AI agents? Measurement of 379 stores on 19 October 2026. https://so-ma.studio/en/portuguese-stores-ai-readiness-index/
SO-MA Index 2026: are Portuguese online stores ready for AI agents? Also in Portuguese.
Go further
- SO-MA e-commerceShopify for brands that sell to people and to the agents that buy for them.
- Free checkerThe same tool on its own page, to share.
- AI visibility auditWhat the checker cannot see: whether AI assistants actually recommend your brand, and the fixes.
- llms.txt generatorA draft llms.txt for your store, built from your own pages, free and respecting robots.txt.
- Press roomSO-MA studies with the key figures, method, data and how to cite them.