Promotion Not Applying
Work through these checks in order. Most cases are resolved by the first two or three steps. After each check, re-test with a fresh Verify call and inspect the response before moving on.
Is the promotion enabled?
Creating a promotion does not automatically enable it. Open the promotion in the Deducto Dashboard and confirm the enabled toggle is on. A disabled promotion is never evaluated — it will not appear in appliedPromotions or rejectedPromotions in the Verify response.
Is today within the scheduled dates?
Check the promotion's start and end dates. If a start date is in the future the promotion won't fire yet. If an end date has passed, it won't fire any more. Adjust the dates or wait until the schedule window opens.
Does the cart meet the trigger conditions?
Open the promotion's trigger conditions and confirm the cart satisfies every configured condition — minimum subtotal, minimum item count, specific item requirements, and so on. Common mistakes:
- Subtotal is measured before other discounts, but confirm which value your setup uses.
- Item count conditions count qualifying items, not all cart items.
Because trigger condition failures are silently skipped by the evaluation engine, a promotion that fails here will not appear in rejectedPromotions. You must verify the conditions manually against the test cart.
Is a valid coupon code being passed?
If the promotion requires a coupon, check that your storefront is including the code in the couponCodes array of the Verify request body. An empty or missing array means coupon-gated promotions are never tested. Coupon failures are also silently skipped in rejectedPromotions, so you must confirm the code is present in the request.
Have usage limits been reached?
Check the promotion's Max Use Count (total) and Max Use Per Email Address Count (per-customer) settings. If either limit is exhausted, the Verify response will include the promotion in rejectedPromotions with a rejectionReason of PromotionUsageExceeded or PromotionPerCustomerUsageExceeded, along with the usageCountLimit value.
Does the cart currency match?
The promotion must be configured to support the cart's currency. Currency mismatches are silently skipped — the promotion will be absent from both appliedPromotions and rejectedPromotions. Check the promotion's currency settings against the currency field in your Verify request.
Is a Stop or Exclusive promotion blocking it?
If an earlier promotion has an After Processing Action of STOP or EXCLUSIVE, it prevents subsequent Item Group and Whole Cart promotions from running. Check whether a higher-priority promotion with one of these actions was recently enabled. The blocked promotion will appear in rejectedPromotions with a rejectionReason of Stopped or Exclusivity.
Reading the Verify response
The rejectedPromotions array is your primary debugging tool. It lists every promotion that was considered but not applied, along with the rejection reason. Note that promotions failing the early checks (currency, trigger conditions, coupon matching) are silently omitted from this array — for those, inspect the promotion configuration directly.
See the Verify endpoint reference, Using rejectedPromotions to Debug, and the Promotion Evaluation Process for a full explanation of what each rejection reason means.
Updated 25 days ago