What we measured on 294 Czech online shops
Scanned 2026-08-14 · findings backed by a snippet of the page
Every number below rests on a finding we can point to on a specific page of the shop. Suspicions, and things we could not see from outside, are not counted in it — which makes this a lower bound, not a worst case.
The headline number
239 of 294 shops (81%) have at least one demonstrable problem.
On average 1.2 demonstrable findings per shop. A further 870 suspicions stayed at “verify it yourself” and do not enter the number.
What goes wrong most often
| Finding | Shops | Share |
|---|---|---|
| Tracking before consent | 181 | 65% (of 279 measurable) |
| Link to the abolished ODR platform | 174 | 62% (of 279 measurable) |
| Legal links from the home page | 2 | 1% (of 276 measurable) |
The share counts only shops where we could judge that finding at all (for example, where we reached a product page) — not all 294 in the sample. For rules we can only judge from part of a site, “measurable” is a smaller number.
By platform
| Platform | Shops | With a finding |
|---|---|---|
| No known platform fingerprint | 148 | 120 (81%) |
| Shoptet | 78 | 71 (91%) |
| Platform not established | 24 | 9 (38%) |
| Shopify | 13 | 13 (100%) |
| Upgates | 10 | 10 (100%) |
| PrestaShop | 9 | 7 (78%) |
| WooCommerce | 9 | 6 (67%) |
| eshop-rychle | 2 | 2 (100%) |
| WebAreal | 1 | 1 (100%) |
Where a platform has only a handful of shops the share is indicative — across five shops a single finding makes twenty per cent. Most findings originate in the text of the terms, which shops take over from templates, not in the platform itself. The last rows are not brands: for 148 shops the home page carried no fingerprint of any platform above (a bespoke build, or a package we do not recognise yet); for 24 shops the home page did not answer a plain request, so we name no platform — that says nothing about the shop, the scan itself ran in a browser.
Most of those findings are not one shop's mistake
102 of 168 shops where we found a link to the abolished ODR platform carry the same sentence about the Czech Trade Inspection in their terms — for some of them character for character identical, spaces in the authority's registration number included. 174 shops in the sample link to the abolished platform; for 6 of them the terms page did not load again during this re-measurement, so they count on neither side of the ratio.
We saw the same wording on shops running on eshop-rychle, PrestaShop, Shopify, Shoptet, Upgates, WooCommerce. So it is not one platform's defect: it is a template of terms that has been copied onward for years. The merchant usually did not write it and has no way of noticing that it has aged.
And it can be dated. The same dead link appears in 8 of 9 dated versions of the model terms and conditions published free of charge by the Czech Association for Electronic Commerce (APEK), which leaves its older versions online — from 15. 5. 2018 to 29. 5. 2025. The version of 22. 1. 2026 no longer carries it. This does not show that shops copied from there — it shows that this wording can be placed in time, and that a corrected version exists.
How far it has aged shows in the authority's address inside that sentence: only 7 of 102 give the current one (Gorazdova 1969/24). The remaining 95 send consumers to an address where the Czech Trade Inspection does not sit.
How this was measured
A sample of 300 shops out of 860 in the e-shopy.cz directory, picked by the order of an address fingerprint (sha1) — so not by our eye; 6 addresses were excluded as unreachable, with no further selection by platform or size. Only findings backed by a snippet of the page are counted.
Only public pages were scanned, the way a customer would arrive: the home page, the legal pages linked from the footer, and one product page. For 17 shops we could not get through even 60% of the expected pages — there “no finding” means “we could not see”, not “it is fine”.
At 6 addresses in the sample I found not a single mark of a shop — no product tile, no cart, no shop-platform fingerprint, no price marked up in the page code. Some of them link to a shop at another address; about the rest I do not know. They stay in the sample as “no finding”, that is, against us: had we je excluded them, the headline number would come out higher.