Skip to main content

Promotions Management

ACP supports managing promotion data through the REST API. Promotions can only be submitted via the API; SFTP file upload is not supported.

5.1 Promotion Object

Promotion Status

Active Time Range

active_period uses the DateTimeRange type, containing start_time and end_time fields:

Product Targeting

applies_to uses the ProductTarget type to specify which products the promotion applies to:
If variant_ids is not specified, the promotion applies to all variants of that product.

5.2 Three Discount Types

Fixed Amount Discount (AmountOffBenefit)

Deducts a fixed amount. The example above represents a $10.00 USD discount (amounts use minor units, i.e., cents).

Percentage Discount (PercentOffBenefit)

Deducts by percentage. The example above represents a 20% discount.

Free Shipping (FreeShippingBenefit)

Waives shipping fees. No additional parameters required.

5.3 Complete Promotion Example

5.4 API Submission

Promotions are upserted via the PATCH endpoint:
Matched by id: existing records are updated, non-existing records are created.

5.5 Discounts in Checkout Sessions

When an AI agent creates a Checkout Session, promotion discounts are communicated through the following fields.

Discount Codes

The codes array contains discount codes provided by the user.

Applied Discounts (AppliedDiscount)

Coupon Object

Coupons support either percent_off (percentage discount) or amount_off (fixed amount discount) modes.

Rejected Discounts (RejectedDiscount)

If a discount code is invalid or not applicable, it appears in the rejected array:

Complete Discount Structure Example

5.6 Best Practices


Next chapter: Chapter 6: Data Quality Best Practices — ID stability, URL conventions, prohibited content