updateCartWorkflow - Medusa Core Workflows Reference

This documentation provides a reference to the updateCartWorkflow. It belongs to the @medusajs/medusa/core-flows package.

This workflow updates a cart and returns it. You can update the cart's region, address, and more. This workflow is executed by the Update Cart Store API Route.

NoteThis workflow doesn't allow updating a cart's line items. Instead, use addToCartWorkflow and updateLineItemInCartWorkflow.

This workflow has a hook that allows you to perform custom actions on the updated cart. For example, you can pass custom data under the additional_data property of the Update Cart API route, then update any associated details related to the cart in the workflow's hook.

You can also use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around updating a cart.

Source Code

Examples#

Steps#

Input#

UpdateCartWorkflowInputUpdateCartWorkflowInput
The data to update the cart, along with custom data that's passed to the workflow's hooks.
idstring
The ID of the cart to update.
promo_codesstring[]Optional
An array of promotional codes applied on the cart.
region_idstringOptional
The ID of the cart's region.
customer_idnull | stringOptional
The ID of the cart's customer.
sales_channel_idnull | stringOptional
The ID of the cart's sales channel.
emailnull | stringOptional
The email address of the cart's customer.
currency_codestringOptional
The currency code for the cart.
metadatanull | Record<string, unknown>Optional
Custom key-value pairs of data related to the cart.
shipping_addressnull | UpdateAddressDTO | CreateAddressDTOOptional
The cart's shipping address. You can either update the cart's existing shipping address, or create a new one.
billing_addressnull | UpdateAddressDTO | CreateAddressDTOOptional
The cart's billing address. You can either update the cart's existing billing address, or create a new one.
additional_dataRecord<string, unknown>Optional
Additional data that can be passed through the additional_data property in HTTP requests. Learn more in this documentation.

Hooks#

Hooks allow you to inject custom functionalities into the workflow. You'll receive data from the workflow, as well as additional data sent through an HTTP request.

Learn more about Hooks and Additional Data.

validate#

This hook is executed before all operations. You can consume this hook to perform any custom validation. If validation fails, you can throw an error to stop the workflow execution.

Example

Code
1import { updateCartWorkflow } from "@medusajs/medusa/core-flows"2
3updateCartWorkflow.hooks.validate(4  (async ({ input, cart }, { container }) => {5    //TODO6  })7)

Input

Handlers consuming this hook accept the following input.

inputobject
The input data for the hook.
inputobject
cartany

cartUpdated#

This hook is executed after a cart is update. You can consume this hook to perform custom actions on the updated cart.

Example

Code
1import { updateCartWorkflow } from "@medusajs/medusa/core-flows"2
3updateCartWorkflow.hooks.cartUpdated(4  (async ({ cart, additional_data }, { container }) => {5    //TODO6  })7)

Input

Handlers consuming this hook accept the following input.

inputobject
The input data for the hook.
cartany
additional_dataRecord<string, unknown> | undefined
Additional data that can be passed through the additional\_data property in HTTP requests. Learn more in this documentation.
Was this page helpful?
Ask Anything
FAQ
What is Medusa?
How can I create a module?
How can I create a data model?
How do I create a workflow?
How can I extend a data model in the Product Module?
Recipes
How do I build a marketplace with Medusa?
How do I build digital products with Medusa?
How do I build subscription-based purchases with Medusa?
What other recipes are available in the Medusa documentation?
Chat is cleared on refresh
Line break