{
  "study": "State of EU shop compliance",
  "method": {
    "source": "Tranco list of popular domains (https://tranco-list.eu/)",
    "listId": "GQ38K",
    "seed": 20261105,
    "perCountry": 60,
    "countryBy": "country-code domain (.at, .de, .fr, .it, .nl)",
    "rulesVersion": "0.9.0",
    "started": "2026-11-03T14:43:29.754Z",
    "finished": "2026-11-03T15:05:08.941Z",
    "maxRequestsPerSite": 8,
    "minGapMs": 1000
  },
  "outcomes": {
    "AT": {
      "candidates": 634,
      "tried": 634,
      "not_shop": 324,
      "robots_unreachable": 93,
      "shop_refused": 60,
      "robots_disallowed": 16,
      "checked": 30,
      "no_product_page": 50,
      "needs_js": 57,
      "network": 3,
      "shop_error": 1
    },
    "DE": {
      "candidates": 5000,
      "tried": 693,
      "shop_refused": 55,
      "not_shop": 298,
      "needs_js": 44,
      "robots_unreachable": 138,
      "robots_disallowed": 23,
      "no_product_page": 59,
      "error": 2,
      "checked": 62,
      "shop_error": 7,
      "network": 5
    },
    "FR": {
      "candidates": 5000,
      "tried": 629,
      "not_shop": 272,
      "checked": 61,
      "robots_disallowed": 6,
      "no_product_page": 46,
      "robots_unreachable": 130,
      "shop_refused": 82,
      "needs_js": 30,
      "shop_error": 2
    },
    "IT": {
      "candidates": 5000,
      "tried": 898,
      "not_shop": 242,
      "needs_js": 29,
      "robots_unreachable": 399,
      "no_product_page": 57,
      "shop_refused": 94,
      "checked": 60,
      "robots_disallowed": 8,
      "shop_error": 6,
      "network": 3
    },
    "NL": {
      "candidates": 5000,
      "tried": 1291,
      "not_shop": 364,
      "shop_refused": 82,
      "robots_disallowed": 534,
      "no_product_page": 56,
      "checked": 60,
      "needs_js": 48,
      "robots_unreachable": 134,
      "network": 5,
      "shop_error": 6,
      "error": 2
    }
  },
  "all": {
    "shops": 270,
    "platforms": {
      "other": 54,
      "woocommerce": 56,
      "shopify": 51,
      "prestashop": 45,
      "magento": 47,
      "shopware": 15,
      "wordpress": 2
    },
    "medianScore": 50,
    "bands": {
      "good": 10,
      "needs_work": 52,
      "at_risk": 208
    },
    "withdrawalButton": {
      "none": {
        "count": 182,
        "base": 270,
        "pct": 67.4
      },
      "noneUnsure": {
        "count": 19,
        "base": 270,
        "pct": 7
      },
      "hiddenOrPolicyOnly": {
        "count": 8,
        "base": 270,
        "pct": 3
      },
      "noneAndNoMentionAnywhere": {
        "count": 178,
        "base": 270,
        "pct": 65.9
      },
      "officialWording": {
        "count": 38,
        "base": 270,
        "pct": 14.1
      },
      "otherWording": {
        "count": 24,
        "base": 270,
        "pct": 8.9
      },
      "brokenTarget": {
        "count": 0,
        "base": 270,
        "pct": 0
      },
      "targetWithoutForm": {
        "count": 11,
        "base": 270,
        "pct": 4.1
      }
    },
    "withdrawalPolicyMentionsFunction": {
      "count": 9,
      "base": 258,
      "pct": 3.5
    },
    "withdrawalPolicyNotLinked": {
      "count": 61,
      "base": 270,
      "pct": 22.6
    },
    "legalNotice": {
      "none": {
        "count": 31,
        "base": 262,
        "pct": 11.8
      },
      "fail": {
        "count": 35,
        "base": 262,
        "pct": 13.4
      },
      "warn": {
        "count": 112,
        "base": 262,
        "pct": 42.7
      },
      "pass": {
        "count": 115,
        "base": 262,
        "pct": 43.9
      }
    },
    "odrLinkStillPresent": {
      "count": 49,
      "base": 263,
      "pct": 18.6
    },
    "disputeStatementMissing": {
      "count": 62,
      "base": 114,
      "pct": 54.4
    },
    "productPageFound": {
      "count": 270,
      "base": 270,
      "pct": 100
    },
    "productSafety": {
      "pass": {
        "count": 22,
        "base": 270,
        "pct": 8.1
      },
      "warn": {
        "count": 38,
        "base": 270,
        "pct": 14.1
      },
      "fail": {
        "count": 210,
        "base": 270,
        "pct": 77.8
      }
    },
    "prices": {
      "vatNoteMissing": {
        "count": 130,
        "base": 252,
        "pct": 51.6
      },
      "shippingMissing": {
        "count": 35,
        "base": 252,
        "pct": 13.9
      },
      "strikeWithout30DayPrice": {
        "count": 38,
        "base": 252,
        "pct": 15.1
      }
    },
    "accessibilityStatementMissing": {
      "count": 210,
      "base": 270,
      "pct": 77.8
    },
    "accessibility": {
      "pass": {
        "count": 29,
        "base": 270,
        "pct": 10.7
      },
      "warn": {
        "count": 141,
        "base": 270,
        "pct": 52.2
      },
      "fail": {
        "count": 100,
        "base": 270,
        "pct": 37
      }
    },
    "chatWidget": {
      "count": 26,
      "base": 270,
      "pct": 9.6
    },
    "someLinksSkippedByRobots": {
      "count": 8,
      "base": 270,
      "pct": 3
    }
  },
  "byCountry": {
    "AT": {
      "shops": 30,
      "platforms": {
        "other": 11,
        "woocommerce": 9,
        "shopify": 4,
        "prestashop": 2,
        "magento": 3,
        "shopware": 1
      },
      "medianScore": 57,
      "bands": {
        "good": 1,
        "needs_work": 11,
        "at_risk": 18
      },
      "withdrawalButton": {
        "none": {
          "count": 16,
          "base": 30,
          "pct": 53.3
        },
        "noneUnsure": {
          "count": 0,
          "base": 30,
          "pct": 0
        },
        "hiddenOrPolicyOnly": {
          "count": 0,
          "base": 30,
          "pct": 0
        },
        "noneAndNoMentionAnywhere": {
          "count": 14,
          "base": 30,
          "pct": 46.7
        },
        "officialWording": {
          "count": 11,
          "base": 30,
          "pct": 36.7
        },
        "otherWording": {
          "count": 3,
          "base": 30,
          "pct": 10
        },
        "brokenTarget": {
          "count": 0,
          "base": 30,
          "pct": 0
        },
        "targetWithoutForm": {
          "count": 6,
          "base": 30,
          "pct": 20
        }
      },
      "withdrawalPolicyMentionsFunction": {
        "count": 0,
        "base": 28,
        "pct": 0
      },
      "withdrawalPolicyNotLinked": {
        "count": 5,
        "base": 30,
        "pct": 16.7
      },
      "legalNotice": {
        "none": {
          "count": 1,
          "base": 30,
          "pct": 3.3
        },
        "fail": {
          "count": 1,
          "base": 30,
          "pct": 3.3
        },
        "warn": {
          "count": 9,
          "base": 30,
          "pct": 30
        },
        "pass": {
          "count": 20,
          "base": 30,
          "pct": 66.7
        }
      },
      "odrLinkStillPresent": {
        "count": 8,
        "base": 30,
        "pct": 26.7
      },
      "disputeStatementMissing": null,
      "productPageFound": {
        "count": 30,
        "base": 30,
        "pct": 100
      },
      "productSafety": {
        "pass": {
          "count": 3,
          "base": 30,
          "pct": 10
        },
        "warn": {
          "count": 8,
          "base": 30,
          "pct": 26.7
        },
        "fail": {
          "count": 19,
          "base": 30,
          "pct": 63.3
        }
      },
      "prices": {
        "vatNoteMissing": {
          "count": 9,
          "base": 27,
          "pct": 33.3
        },
        "shippingMissing": {
          "count": 7,
          "base": 27,
          "pct": 25.9
        },
        "strikeWithout30DayPrice": {
          "count": 1,
          "base": 27,
          "pct": 3.7
        }
      },
      "accessibilityStatementMissing": {
        "count": 15,
        "base": 30,
        "pct": 50
      },
      "accessibility": {
        "pass": {
          "count": 9,
          "base": 30,
          "pct": 30
        },
        "warn": {
          "count": 16,
          "base": 30,
          "pct": 53.3
        },
        "fail": {
          "count": 5,
          "base": 30,
          "pct": 16.7
        }
      },
      "chatWidget": {
        "count": 1,
        "base": 30,
        "pct": 3.3
      },
      "someLinksSkippedByRobots": {
        "count": 0,
        "base": 30,
        "pct": 0
      }
    },
    "DE": {
      "shops": 60,
      "platforms": {
        "woocommerce": 13,
        "other": 16,
        "shopify": 14,
        "shopware": 10,
        "prestashop": 1,
        "magento": 5,
        "wordpress": 1
      },
      "medianScore": 63,
      "bands": {
        "good": 9,
        "needs_work": 23,
        "at_risk": 28
      },
      "withdrawalButton": {
        "none": {
          "count": 19,
          "base": 60,
          "pct": 31.7
        },
        "noneUnsure": {
          "count": 3,
          "base": 60,
          "pct": 5
        },
        "hiddenOrPolicyOnly": {
          "count": 0,
          "base": 60,
          "pct": 0
        },
        "noneAndNoMentionAnywhere": {
          "count": 17,
          "base": 60,
          "pct": 28.3
        },
        "officialWording": {
          "count": 27,
          "base": 60,
          "pct": 45
        },
        "otherWording": {
          "count": 11,
          "base": 60,
          "pct": 18.3
        },
        "brokenTarget": {
          "count": 0,
          "base": 60,
          "pct": 0
        },
        "targetWithoutForm": {
          "count": 4,
          "base": 60,
          "pct": 6.7
        }
      },
      "withdrawalPolicyMentionsFunction": {
        "count": 7,
        "base": 58,
        "pct": 12.1
      },
      "withdrawalPolicyNotLinked": {
        "count": 6,
        "base": 60,
        "pct": 10
      },
      "legalNotice": {
        "none": {
          "count": 3,
          "base": 59,
          "pct": 5.1
        },
        "fail": {
          "count": 2,
          "base": 59,
          "pct": 3.4
        },
        "warn": {
          "count": 16,
          "base": 59,
          "pct": 27.1
        },
        "pass": {
          "count": 41,
          "base": 59,
          "pct": 69.5
        }
      },
      "odrLinkStillPresent": {
        "count": 21,
        "base": 58,
        "pct": 36.2
      },
      "disputeStatementMissing": {
        "count": 23,
        "base": 58,
        "pct": 39.7
      },
      "productPageFound": {
        "count": 60,
        "base": 60,
        "pct": 100
      },
      "productSafety": {
        "pass": {
          "count": 16,
          "base": 60,
          "pct": 26.7
        },
        "warn": {
          "count": 12,
          "base": 60,
          "pct": 20
        },
        "fail": {
          "count": 32,
          "base": 60,
          "pct": 53.3
        }
      },
      "prices": {
        "vatNoteMissing": {
          "count": 13,
          "base": 59,
          "pct": 22
        },
        "shippingMissing": {
          "count": 4,
          "base": 59,
          "pct": 6.8
        },
        "strikeWithout30DayPrice": {
          "count": 9,
          "base": 59,
          "pct": 15.3
        }
      },
      "accessibilityStatementMissing": {
        "count": 40,
        "base": 60,
        "pct": 66.7
      },
      "accessibility": {
        "pass": {
          "count": 9,
          "base": 60,
          "pct": 15
        },
        "warn": {
          "count": 35,
          "base": 60,
          "pct": 58.3
        },
        "fail": {
          "count": 16,
          "base": 60,
          "pct": 26.7
        }
      },
      "chatWidget": {
        "count": 6,
        "base": 60,
        "pct": 10
      },
      "someLinksSkippedByRobots": {
        "count": 4,
        "base": 60,
        "pct": 6.7
      }
    },
    "FR": {
      "shops": 60,
      "platforms": {
        "shopify": 15,
        "other": 10,
        "prestashop": 23,
        "magento": 6,
        "woocommerce": 6
      },
      "medianScore": 50,
      "bands": {
        "good": 0,
        "needs_work": 10,
        "at_risk": 50
      },
      "withdrawalButton": {
        "none": {
          "count": 49,
          "base": 60,
          "pct": 81.7
        },
        "noneUnsure": {
          "count": 6,
          "base": 60,
          "pct": 10
        },
        "hiddenOrPolicyOnly": {
          "count": 2,
          "base": 60,
          "pct": 3.3
        },
        "noneAndNoMentionAnywhere": {
          "count": 49,
          "base": 60,
          "pct": 81.7
        },
        "officialWording": {
          "count": 0,
          "base": 60,
          "pct": 0
        },
        "otherWording": {
          "count": 3,
          "base": 60,
          "pct": 5
        },
        "brokenTarget": {
          "count": 0,
          "base": 60,
          "pct": 0
        },
        "targetWithoutForm": {
          "count": 0,
          "base": 60,
          "pct": 0
        }
      },
      "withdrawalPolicyMentionsFunction": {
        "count": 0,
        "base": 58,
        "pct": 0
      },
      "withdrawalPolicyNotLinked": {
        "count": 20,
        "base": 60,
        "pct": 33.3
      },
      "legalNotice": {
        "none": {
          "count": 8,
          "base": 55,
          "pct": 14.5
        },
        "fail": {
          "count": 13,
          "base": 55,
          "pct": 23.6
        },
        "warn": {
          "count": 29,
          "base": 55,
          "pct": 52.7
        },
        "pass": {
          "count": 13,
          "base": 55,
          "pct": 23.6
        }
      },
      "odrLinkStillPresent": {
        "count": 7,
        "base": 56,
        "pct": 12.5
      },
      "disputeStatementMissing": {
        "count": 39,
        "base": 56,
        "pct": 69.6
      },
      "productPageFound": {
        "count": 60,
        "base": 60,
        "pct": 100
      },
      "productSafety": {
        "pass": {
          "count": 1,
          "base": 60,
          "pct": 1.7
        },
        "warn": {
          "count": 1,
          "base": 60,
          "pct": 1.7
        },
        "fail": {
          "count": 58,
          "base": 60,
          "pct": 96.7
        }
      },
      "prices": {
        "vatNoteMissing": {
          "count": 38,
          "base": 55,
          "pct": 69.1
        },
        "shippingMissing": {
          "count": 6,
          "base": 55,
          "pct": 10.9
        },
        "strikeWithout30DayPrice": {
          "count": 8,
          "base": 55,
          "pct": 14.5
        }
      },
      "accessibilityStatementMissing": {
        "count": 54,
        "base": 60,
        "pct": 90
      },
      "accessibility": {
        "pass": {
          "count": 4,
          "base": 60,
          "pct": 6.7
        },
        "warn": {
          "count": 26,
          "base": 60,
          "pct": 43.3
        },
        "fail": {
          "count": 30,
          "base": 60,
          "pct": 50
        }
      },
      "chatWidget": {
        "count": 7,
        "base": 60,
        "pct": 11.7
      },
      "someLinksSkippedByRobots": {
        "count": 1,
        "base": 60,
        "pct": 1.7
      }
    },
    "IT": {
      "shops": 60,
      "platforms": {
        "magento": 12,
        "prestashop": 16,
        "shopify": 11,
        "other": 6,
        "woocommerce": 14,
        "shopware": 1
      },
      "medianScore": 50,
      "bands": {
        "good": 0,
        "needs_work": 6,
        "at_risk": 54
      },
      "withdrawalButton": {
        "none": {
          "count": 48,
          "base": 60,
          "pct": 80
        },
        "noneUnsure": {
          "count": 5,
          "base": 60,
          "pct": 8.3
        },
        "hiddenOrPolicyOnly": {
          "count": 4,
          "base": 60,
          "pct": 6.7
        },
        "noneAndNoMentionAnywhere": {
          "count": 48,
          "base": 60,
          "pct": 80
        },
        "officialWording": {
          "count": 0,
          "base": 60,
          "pct": 0
        },
        "otherWording": {
          "count": 4,
          "base": 60,
          "pct": 6.7
        },
        "brokenTarget": {
          "count": 0,
          "base": 60,
          "pct": 0
        },
        "targetWithoutForm": {
          "count": 0,
          "base": 60,
          "pct": 0
        }
      },
      "withdrawalPolicyMentionsFunction": {
        "count": 2,
        "base": 58,
        "pct": 3.4
      },
      "withdrawalPolicyNotLinked": {
        "count": 17,
        "base": 60,
        "pct": 28.3
      },
      "legalNotice": {
        "none": {
          "count": 8,
          "base": 59,
          "pct": 13.6
        },
        "fail": {
          "count": 7,
          "base": 59,
          "pct": 11.9
        },
        "warn": {
          "count": 50,
          "base": 59,
          "pct": 84.7
        },
        "pass": {
          "count": 2,
          "base": 59,
          "pct": 3.4
        }
      },
      "odrLinkStillPresent": {
        "count": 8,
        "base": 59,
        "pct": 13.6
      },
      "disputeStatementMissing": null,
      "productPageFound": {
        "count": 60,
        "base": 60,
        "pct": 100
      },
      "productSafety": {
        "pass": {
          "count": 1,
          "base": 60,
          "pct": 1.7
        },
        "warn": {
          "count": 10,
          "base": 60,
          "pct": 16.7
        },
        "fail": {
          "count": 49,
          "base": 60,
          "pct": 81.7
        }
      },
      "prices": {
        "vatNoteMissing": {
          "count": 36,
          "base": 57,
          "pct": 63.2
        },
        "shippingMissing": {
          "count": 15,
          "base": 57,
          "pct": 26.3
        },
        "strikeWithout30DayPrice": {
          "count": 13,
          "base": 57,
          "pct": 22.8
        }
      },
      "accessibilityStatementMissing": {
        "count": 45,
        "base": 60,
        "pct": 75
      },
      "accessibility": {
        "pass": {
          "count": 6,
          "base": 60,
          "pct": 10
        },
        "warn": {
          "count": 29,
          "base": 60,
          "pct": 48.3
        },
        "fail": {
          "count": 25,
          "base": 60,
          "pct": 41.7
        }
      },
      "chatWidget": {
        "count": 5,
        "base": 60,
        "pct": 8.3
      },
      "someLinksSkippedByRobots": {
        "count": 3,
        "base": 60,
        "pct": 5
      }
    },
    "NL": {
      "shops": 60,
      "platforms": {
        "other": 11,
        "prestashop": 3,
        "shopware": 3,
        "woocommerce": 14,
        "shopify": 7,
        "magento": 21,
        "wordpress": 1
      },
      "medianScore": 50,
      "bands": {
        "good": 0,
        "needs_work": 2,
        "at_risk": 58
      },
      "withdrawalButton": {
        "none": {
          "count": 50,
          "base": 60,
          "pct": 83.3
        },
        "noneUnsure": {
          "count": 5,
          "base": 60,
          "pct": 8.3
        },
        "hiddenOrPolicyOnly": {
          "count": 2,
          "base": 60,
          "pct": 3.3
        },
        "noneAndNoMentionAnywhere": {
          "count": 50,
          "base": 60,
          "pct": 83.3
        },
        "officialWording": {
          "count": 0,
          "base": 60,
          "pct": 0
        },
        "otherWording": {
          "count": 3,
          "base": 60,
          "pct": 5
        },
        "brokenTarget": {
          "count": 0,
          "base": 60,
          "pct": 0
        },
        "targetWithoutForm": {
          "count": 1,
          "base": 60,
          "pct": 1.7
        }
      },
      "withdrawalPolicyMentionsFunction": {
        "count": 0,
        "base": 56,
        "pct": 0
      },
      "withdrawalPolicyNotLinked": {
        "count": 13,
        "base": 60,
        "pct": 21.7
      },
      "legalNotice": {
        "none": {
          "count": 11,
          "base": 59,
          "pct": 18.6
        },
        "fail": {
          "count": 12,
          "base": 59,
          "pct": 20.3
        },
        "warn": {
          "count": 8,
          "base": 59,
          "pct": 13.6
        },
        "pass": {
          "count": 39,
          "base": 59,
          "pct": 66.1
        }
      },
      "odrLinkStillPresent": {
        "count": 5,
        "base": 60,
        "pct": 8.3
      },
      "disputeStatementMissing": null,
      "productPageFound": {
        "count": 60,
        "base": 60,
        "pct": 100
      },
      "productSafety": {
        "pass": {
          "count": 1,
          "base": 60,
          "pct": 1.7
        },
        "warn": {
          "count": 7,
          "base": 60,
          "pct": 11.7
        },
        "fail": {
          "count": 52,
          "base": 60,
          "pct": 86.7
        }
      },
      "prices": {
        "vatNoteMissing": {
          "count": 34,
          "base": 54,
          "pct": 63
        },
        "shippingMissing": {
          "count": 3,
          "base": 54,
          "pct": 5.6
        },
        "strikeWithout30DayPrice": {
          "count": 7,
          "base": 54,
          "pct": 13
        }
      },
      "accessibilityStatementMissing": {
        "count": 56,
        "base": 60,
        "pct": 93.3
      },
      "accessibility": {
        "pass": {
          "count": 1,
          "base": 60,
          "pct": 1.7
        },
        "warn": {
          "count": 35,
          "base": 60,
          "pct": 58.3
        },
        "fail": {
          "count": 24,
          "base": 60,
          "pct": 40
        }
      },
      "chatWidget": {
        "count": 7,
        "base": 60,
        "pct": 11.7
      },
      "someLinksSkippedByRobots": {
        "count": 0,
        "base": 60,
        "pct": 0
      }
    }
  }
}
