As of UCP 2026-08-25, Shopify storefronts support the dev.ucp.shopping.permalink capability./buy links use the same format on any UCP-compatible store. Existing /cart links continue to work.
/buy . It supports the UCP (2026-08-25 and later) dev.ucp.shopping.permalink capability.Now treated as the "legacy format." Still supported and working, but no new features will be added.
The UCP standard format. New features are added only to /buy. One shared format across UCP-compatible stores.
/.well-known/ucp), read config.endpoint and build your link from it. This is the official recommendation.
Add one or more products by variant ID. The post doesn't say exactly which ID format the token uses (see the specification).
Examples given include buyer/email,discounts/codes/0 . The post doesn't give the parameter names for other fields (country, language, Shop Pay, etc.).
Specify one or more items by variant ID.
Prefill buyer details such as email address.
Set the buyer's country and language.
Example: discounts/codes/0 — specified with a field path like this.
Links can signal that the buyer prefers Shop Pay.
continue_to parameter sends buyers to a specific page in the store.
| Item | /cart (legacy) | /buy(UCP) |
|---|---|---|
| Status | Legacy format Still supported | Recommended Use for new links |
| New features | Not added | Added to /buy only |
| Cross-store compatibility | Not specified | Shared Same format on any UCP-enabled store |
| Selling plans | Supported | Not supported |
| Line item properties | Supported | Not supported |
| Cart notes / cart attributes | Supported | Not supported |
| When it can't be applied | Not specified | continue_to destination first, otherwise redirects to the storefront (no error page) |
/cart for now. There's no word yet on when /buy will support them.Keep links that use selling plans, line item properties, cart notes, or cart attributes on /cart.
Create new links with /buy. Don't assemble URLs by hand; read the values from the discovery profile.
/cart keeps working, so you can migrate gradually on your own schedule.
/.well-known/ucp discovery profile: read dev.ucp.shopping.permalink 's config.endpoint and build your links from it./buy should never be hardcoded.
Permalinks don't use negotiation, so you don't need to declare dev.ucp.shopping.permalink in your agent profile.
buyer/email,discounts/codes/0 : specify them as slash-separated paths like this, with array items referenced by index. Products are handled separately, in the path's token:quantity segment.
Links that can't be applied redirect to the continue_to destination, or to the storefront if none is set. Buyers never see a broken page, butit's easy to miss that a link failed to apply, so keep that in mind.
Never include payment details or access tokens in a link.For widely shared links (social media, newsletters, ads, etc.), also leave out buyer personal data such as email addresses.
/.well-known/ucp , retrieve config.endpoint , and consolidate into a single implementation that generates /buy links in a common format.discounts/codes/0 , set the country, language, and Shop Pay preference, then send it out.buyer/email or other personal information in broadcast links. In case the discount can't be applied, usecontinue_to to send buyers back to the campaign landing page.