Checkout MCP and Cart MCP now support the UCP buyer consent extension (dev.ucp.shopping.buyer_consent). Buyers can make the same privacy and marketing choices inside the agent as in the shop's own checkout, and those choices are passed to the shop along with the cart, checkout, and order.
dev.ucp.shopping.buyer_consent).Responses won't include buyer.consent . Integrations that don't negotiate this extension, or that use an earlier UCP version, are unaffected.
Responses include buyer.consent , returning the current state, description, and policy link for each consent purpose the shop supports. The agent can send the buyer's choices back to the shop.
/.well-known/ucp), storefronts now publish dev.ucp.shopping.buyer_consent .
Shopify storefronts present at least the following purposes.
dev.ucp.consent.analyticsdev.ucp.consent.preferencesdev.ucp.consent.sale_or_sharingdev.ucp.consent.marketingbuyer.consent , so the assumption is that yourender them from the response instead of hardcoding a fixed list. Possible status values and the detailed JSON schema are not covered in this article (see the UCP buyer consent spec).| Situation | Shopify behavior |
|---|---|
| Buyer's choices sent | Applied The choices reach the shop along with the cart, checkout, and order |
| No consent sent | Default for the buyer's countrythe shop's default settingis applied |
| Buyer's country unknown | Opt-out Consent defaults to opt-out |
| Required contact info missing Example: SMS opt-in without a phone number |
Warning The response includes a missing_consent_data warning, and until the missing information is provided,checkout can't be completed |
Platforms and agents that use Checkout MCP or Cart MCP with UCP 2026-08-25dev.ucp.shopping.buyer_consent and negotiate the extension.
Integrations that don't declare this extension, or that negotiate an earlier UCP version.
In your agent profile, declare dev.ucp.shopping.buyer_consent at version 2026-08-25.
When rendering the cart or checkout, use thebuyer.consent shop descriptions and policy links to present each option.
Sent on create / update / complete.source: "platform" should only be included for options the buyer actually selected within the flow.
missing_consent_data , collect the required contact info from the buyer and retry.
You must be on UCP 2026-08-25 and have negotiated the extension. With only one of the two, buyer.consent won't appear. You can also check whether it's listed via discovery (/.well-known/ucp).
Each purpose's description and policy link in buyer.consent are shop-specific. The intended usage is to render them as-is rather than writing your own consent copy on the agent side.
source: "platform" handling is keyInclude only the options the buyeractually selectedwithin your own flow. There's an explicit instruction to avoid filling in defaults on the buyer's behalf.
If you don't send it, the shop's default for the buyer's country applies; if the country is unknown, it defaults to opt-out.No need to implement region-specific default logic on the agent side.
missing_consent_data is a completion blockerIf contact info required for consent is missing (e.g., SMS opt-in without a phone number), a warning is returned andthe checkout can't be completed. Check for warnings before complete, and build a UI branch that sends the buyer back to a contact info form. The detailed warning payload structure isn't covered in this post.
dev.ucp.consent.marketing 's email / sms options with the shop's descriptions, and send back the buyer's choices.missing_consent_data blocks completion. Placing the phone number input on the same screen as the SMS option reduces back-and-forth.source: "platform" contains only the buyer's actual choices," and "Retry when a warning is returned."