The state of UCP
Who publishes a UCP profile across the web, read every month, and how well the stores we check follow the spec, read every day.
Every month we read about 4 million ecommerce sites with measurable shopper traffic, the same sites each month, not only the stores we check. About 3.7 million were live ecommerce sites, and the shares below are of those. A UCP profile counts when the site serves it publicly at /.well-known/ucp and it passes the official validator; a profile behind a login or a bot wall can't be counted.
UCP by traffic rank
Every ecommerce site we read in each traffic band, by what we found. The figure on the right is the band's share of live ecommerce sites with a valid public UCP profile. The biggest sites turn automated visitors away most, so the top bands' figures are the least certain
Capabilities declared
Of the about 1.2 million sites with a valid public UCP profile; a site can declare several
Spec adoption
Every capability in the 2026-08-25 release, and the share of the about 1.2 million sites with a valid public UCP profile that declare it; a site can declare several
Every site read, by result
What a request for the UCP profile found, as shares of every ecommerce site read (about 4 million). Rows marked out of the live count are left out of the about 3.7 million live ecommerce sites; the headline 31.8% is of those live sites
| Valid UCP profile | 1.2 million | 29.3% |
| No UCP profile | 2.5 million | 62.5% |
| Unreachable (DNS, certificate, server error, timeout) out of the live count | 98,000 | 2.5% |
| Turns automated visitors away out of the live count | 160,000 | 4.1% |
| Not live: closed, password, forwards, not a store out of the live count | 41,000 | 1% |
| Profile fails validation | 23,000 | 0.6% |
UCP by platform
Live ecommerce sites on each platform; publish and valid are shares of them (publish = serves a UCP profile, valid = the profile passes)
27 of the 82 platforms we identified serve a UCP profile on at least one site; on 22, at least one passes the official validator.
| Platform | Live sites | Publish | Valid | |
|---|---|---|---|---|
| 1 | WooCommerce | 880,000 | under 0.1% | under 0.1% |
| 2 | Shopify | 720,000 | 100% | 100% |
| 3 | Wix | 400,000 | 99.6% | 98.7% |
| 4 | Squarespace | 230,000 | under 0.1% | under 0.1% |
| 5 | PrestaShop | 59,000 | 0.1% | under 0.1% |
| 6 | 1C-Bitrix | 49,000 | under 0.1% | under 0.1% |
| 7 | Tiendanube | 47,000 | under 0.1% | under 0.1% |
| Platform | Live sites | Publish | Valid | |
|---|---|---|---|---|
| 8 | OpenCart | 45,000 | under 0.1% | under 0.1% |
| 9 | Square Online | 30,000 | none | none |
| 10 | Magento | 27,000 | 0.8% | 0.5% |
| 11 | Cafe24 | 18,000 | none | none |
| 12 | BigCommerce | 16,000 | 96.9% | 96.9% |
| 13 | Shoptet | 15,000 | over 99.9% | over 99.9% |
| – | Platform not identified | 1,030,000 | 0.5% | 0.2% |
HTTP answers at /.well-known/ucp
Of the about 3.7 million live ecommerce sites
Release declared
Of the about 1.2 million sites with a valid public UCP profile
CDN in front of the store
Of the about 3.7 million live ecommerce sites, behind each CDN
Bot management in front of the store
Of the about 3.7 million live ecommerce sites: what an agent meets before the profile
The stores UCP Checker checks every day: how well UCP agents can use what they publish. Not the whole market; the wider web covers that.
What we found at /.well-known/ucp
Of the stores we check
Which release
Of the stores we check with a valid profile
What the score says
Of the stores we check that we could score
What profiles declare
Share of valid profiles; a profile can declare several
AI crawlers disallowed in robots.txt
Stores we check whose robots.txt disallows each crawler
Transports declared
Of the stores we check with a valid profile; a profile can declare several
What else an agent can read
Stores with a valid profile that also serve each
MCP tools listed
Stores that declare MCP, listing each tool the spec names
Accounts and signing
Of the stores we check with a valid profile
Rules passed least often
Share passing each UCP Checker rule, of the stores it applies to; security rules are never shown
Found and usable
Each bubble is the share of stores with a valid profile at that point: across, how many of five things an agent can find (llms.txt, WebMCP, sitemap, Open Graph, Organization schema); up, how many capabilities the profile declares
The five things: llms.txt, WebMCP, a sitemap, Open Graph tags and Organization schema. Hover or tap a bubble for what it means.
Every open proposal and recent merge in the spec repo, by area and stage; the Area and Stage filters carry the counts.
| # | Change | Area | Stage | Date |
|---|---|---|---|---|
| 857 | Payment Terms extension may introduce an edge case where payment can be {} on complete | Payments | proposal | filed 24 Sep |
| 1050 | Domain Working Group (DWG) Charter: Card Network Tokenization | Payments | proposal | filed 5 Nov |
| 957 | Pay by invoiceA standard instrument for invoice or bank transfer, with no charge at booking. | Payments | proposal | filed 15 Oct |
| 778 | Generic payment render artifact Action for in-session out-of-band payments | Payments | proposal | filed 27 Aug |
| 1049 | Domain Working Group (DWG) Charter: Buy Now, Pay Later (BNPL) | Payments | proposal | filed 5 Nov |
| 348 | Orders lack modification support after placement | Payments | proposal | filed 9 Apr |
| 905 | Define the UCP Checkout JWT so AP2 checkout-payment binding is computable | Payments | proposal | filed 7 Oct |
| 956 | SEPA Direct DebitA standard payment instrument for bank debit, including the mandate. | Payments | proposal | filed 15 Oct |
| 1025 | Cart/checkout authoritative total can be negative and still pass schema validation | Payments | proposal | filed 31 Oct |
| 994 | Define AP2 Mandates behavior for fully deferred checkout without payment instruments | Payments | proposal | filed 26 Oct |
| 698 | Bind signed REST responses to their request (RFC 9421 §2.4) | Payments | proposal | filed 8 Aug |
| 641 | Out-of-session payment collection — Actions on Order + per-instrument collection_status | Payments | proposal | filed 27 Jul |
| 955 | Local currency at the propertyShow charges paid at the hotel in its own currency, beside the converted amount. | Payments | proposal | filed 15 Oct |
| 417 | Transaction accountability: cryptographic binding between authorization and execution | Payments | proposal | filed 6 May |
| 384 | Add Provider participant type and offer discovery to dev.ucp.common.identity_linking | Payments | proposal | filed 24 Apr |
| 629 | Recurring Billing & Subscription Setup for Checkout | Payments | proposal | filed 23 Jul |
| 544 | Post-Purchase Returns, Exchanges, and Claims Capability (dev.ucp.returns) | Payments | proposal | filed 24 Jun |
| 859 | Native settlement instrument type beside AP2 mandate / card (feeless, single-block-final) | Payments | proposal | filed 24 Sep |
| 827 | Cross-boundary projection contract for persistence-sensitive carriers (Cart → Checkout) | Payments | proposal | filed 17 Sep |
| 413 | Platform Correlation Reference for Checkout and Order Webhook Events | Payments | proposal | filed 5 May |
| 820 | Add payment processing policy and reporting | Payments | proposal | filed 10 Sep |
| 790 | Carry token issuance context in token credentials | Payments | proposal | filed 1 Sep |
| 769 | Lock buyer identity fields on complete_checkout, even when buyer_consent reopens buyer | Payments | proposal | filed 25 Aug |
| 650 | Add an optional human-readable display_value to money objects | Payments | proposal | filed 29 Jul |
| 599 | Ap2_mandate.json: checkout_mandate pattern rejects the serialization the AP2 reference SDK emits — which wire form is intended? | Payments | proposal | filed 17 Jul |
Showing the 25 with the latest activity of 33. All in the spec repo ›
The wider web is our monthly market read of ecommerce sites with measurable shopper traffic; the stores we check are checked every day. Each chart says what its shares are of. Methodology → · Citing and reuse: quote any figure with credit to UCP Checker and a link to the page and month; anything more needs our permission.
