> ## Documentation Index
> Fetch the complete documentation index at: https://developers.redo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# checkoutExperienceWidgetsSet

> Replace the widgets a checkout experience shows, and return them. This changes checkout right away for an experience in the live checkout tree, so `confirmLiveChange` must be true or it fails with CHECKOUT_WIDGET_LIVE (409). Fails with CHECKOUT_WIDGETS_UNAVAILABLE (409) while `availability.available` is false, unless the list only removes widgets the experience already has. A shipping option widget fails with INVALID_CHECKOUT_WIDGET (400). Null when the experience or any widget is from another account or does not exist.

**Required scopes:** [`checkout_write`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-checkout_write)

## Arguments

**input** `[CheckoutExperienceWidgetsSetInput!](/docs/api-reference/v3/reference/checkout/checkout-experience-widgets-set-input)` *required*

The experience and its new widgets.

**fields**

**checkoutExperienceId** `ID!` *required*

The checkout experience's id.

**confirmLiveChange** `Boolean`

Must be true: this write can reach shoppers right away.

**widgetIds** `[ID!]!` *required*

Every widget the experience should show. It replaces the current list; an empty list removes them all. Shipping option widgets are not assigned here.

## Returns

**checkoutExperienceWidgetsSet** `[\[CheckoutWidget!\]](/docs/api-reference/v3/reference/checkout/checkout-widget)`

A block a store shows at checkout. It reaches shoppers when `global` is true or an experience uses it.

**fields**

**assignedExperiences** `[\[CheckoutWidgetAssignedExperience!\]!](/docs/api-reference/v3/reference/checkout/checkout-widget-assigned-experience)` *required*

Checkout experiences that show this widget.

**fields**

**id** `ID!` *required*

The experience's id.

**name** `String!` *required*

The experience's name.

**config** `[CheckoutWidgetConfig!](/docs/api-reference/v3/reference/checkout/checkout-widget-config)` *required*

The widget's settings.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the widget was created.

**global** `Boolean!` *required*

Whether it shows in every checkout experience. A store has at most one per type. Always false for shipping option widgets.

**id** `ID!` *required*

The widget's id.

**name** `String!` *required*

Merchant-facing name.

**target** `String!` *required*

Where it renders. For shipping option widgets, DETAILS\_RENDER\_AFTER or DETAILS\_RENDER\_EXPANDED. For others, a checkout block target such as INFORMATION1, or a dynamic target name.

**type** `[CheckoutWidgetType!](/docs/api-reference/v3/reference/checkout/checkout-widget-type)` *required*

What the widget does. It can't change.

**updatedAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the widget was last changed.

## Example

```graphql theme={null}
mutation {
  checkoutExperienceWidgetsSet(input: { ... }) {
    createdAt
    global
    id
    name
    target
    type
    updatedAt
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.