For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Primary navigation

Product checkout conversion spec

Contract for integrating a product checkout plugin into ChatGPT's conversion flow.

Product checkout conversion plugins in ChatGPT are currently in beta and being tested with approved partners. To apply for access, fill out this form

here

Purpose

Our goal is to let ChatGPT directly invoke partner plugins for high-intent use cases such as product checkout.

Once partners provide us with a product feed for search, we can connect their MCP servers for bottom-of-funnel conversion actions. To do this, partner plugins must follow a standardized contract for widget name, tool name, and tool input.

If you want to build a plugin that follows this spec, apply for access through the ChatGPT merchants form.

User experience

When users search for products, the product entity sidebar can show Open buttons for sellers. If a seller has a plugin, ChatGPT can open that plugin inline for checkout instead of punching out to an external website.

Required contract (today)

  • Widget name: ui://widget/checkout-session.html
  • Tool name: checkout_session

checkout_session must set:

_meta.ui.resourceUri = "ui://widget/checkout-session.html";

Any tool called directly from a widget must set:

_meta["openai/widgetAccessible"] = true;

checkout_session input

Each checkout item requires only id and quantity. offerId and metadata for the selected merchant offer are optional:

{
  "checkout_session": {
    "items": [
      {
        "id": "string",
        "quantity": 1,
        "offerId": "string",
        "name": "Wireless headphones",
        "description": "Wireless headphones with noise cancellation.",
        "images": [
          "https://merchant.example.com/images/headphones.jpg",
          "https://merchant.example.com/images/headphones-side.jpg"
        ],
        "url": "https://merchant.example.com/products/headphones",
        "merchant_name": "Example Merchant",
        "price": "$24.99"
      }
    ]
  }
}

The following item fields are optional:

FieldDescription
offerIdThe identifier of the selected merchant offer.
nameThe selected offer’s product name.
descriptionA description from the merchant’s own feed.
imagesOrdered merchant-feed image URLs; first is primary.
urlThe selected merchant offer’s URL.
merchant_nameThe name of the selected merchant.
priceThe displayed offer price as a string.

images contains zero or more URLs from the selected merchant’s feed. When present, the first URL is the primary displayed image. ChatGPT omits unavailable optional fields. It doesn’t generate a description or use another merchant’s description or images. Declare these item fields as optional in your tool’s input schema, and use the checkout item and offer IDs to retrieve authoritative product, inventory, and pricing data from your own catalog.

The nested checkout session aligns with the Commerce checkout session shape documented here.