www/apps/resources/app/commerce-modules/promotion/actions/page.mdx
export const metadata = {
title: Promotion Actions,
}
In this document, you’ll learn about promotion actions and how they’re computed using the computeActions method.
The Promotion Module's main service has a computeActions method that returns an array of actions to perform on a cart when one or more promotions are applied.
Actions inform you what adjustment must be made to a cart item or shipping method. Each action is an object having the action property indicating the type of action.
addItemAdjustment ActionThe addItemAdjustment action indicates that an adjustment must be made to an item. For example, removing $5 off its amount.
This action has the following format:
export interface AddItemAdjustmentAction {
action: "addItemAdjustment"
item_id: string
amount: number
code: string
description?: string
is_tax_inclusive?: boolean
}
This action means that a new record should be created of the LineItemAdjustment data model in the Cart Module, or OrderLineItemAdjustment data model in the Order Module.
Refer to this reference for details on the object’s properties.
</Note>removeItemAdjustment ActionThe removeItemAdjustment action indicates that an adjustment must be removed from a line item. For example, remove the $5 discount.
The computeActions method accepts any previous item adjustments in the items property of the second parameter.
This action has the following format:
export interface RemoveItemAdjustmentAction {
action: "removeItemAdjustment"
adjustment_id: string
description?: string
code: string
}
This action means that a new record should be removed of the LineItemAdjustment (or OrderLineItemAdjustment) with the specified ID in the adjustment_id property.
Refer to this reference for details on the object’s properties.
</Note>addShippingMethodAdjustment ActionThe addShippingMethodAdjustment action indicates that an adjustment must be made on a shipping method. For example, make the shipping method free.
This action has the following format:
export interface AddShippingMethodAdjustment {
action: "addShippingMethodAdjustment"
shipping_method_id: string
amount: number
code: string
description?: string
}
This action means that a new record should be created of the ShippingMethodAdjustment data model in the Cart Module, or OrderShippingMethodAdjustment data model in the Order Module.
Refer to this reference for details on the object’s properties.
</Note>removeShippingMethodAdjustment ActionThe removeShippingMethodAdjustment action indicates that an adjustment must be removed from a shipping method. For example, remove the free shipping discount.
The computeActions method accepts any previous shipping method adjustments in the shipping_methods property of the second parameter.
This action has the following format:
export interface RemoveShippingMethodAdjustment {
action: "removeShippingMethodAdjustment"
adjustment_id: string
code: string
}
When the Medusa application receives this action type, it removes the ShippingMethodAdjustment (or OrderShippingMethodAdjustment) with the specified ID in the adjustment_id property.
Refer to this reference for details on the object’s properties.
</Note>campaignBudgetExceeded ActionWhen the campaignBudgetExceeded action is returned, the promotions within a campaign can no longer be used as the campaign budget has been exceeded.
This action has the following format:
export interface CampaignBudgetExceededAction {
action: "campaignBudgetExceeded"
code: string
}
Refer to this reference for details on the object’s properties.
</Note>