Cart promotions help to provide immediate purchase incentives by offering real-time benefits at the point of sale. Unlike loyalty programs that reward behavior over time, these promotions automatically scan the cart, check the rules, and apply rewards the moment conditions are met.

Every cart promotion is built on four key components:

ComponentPurpose
EligibilityDefines who can access the promotion and under what circumstances.
Qualifying ConditionsDefines what the cart must contain for the promotion to trigger.
BenefitDefines the reward or discount applied when conditions are met.
LimitsDefines the boundaries that control how often and how long the promotion runs.

Eligibility

Eligibility defines who can access the promotion and where it can be applied. A promotion is only evaluated if the transaction falls within the defined conditions.

Scope TypeDescriptionExample
Store/ZoneRestricts the promotion to specific physical locations or logical groups.Valid only at Bangalore and Kerala store locations.
Day/TimeRestricts the promotion to specific days of the week or time windows.Happy Hour: Valid only on Weekdays between 4 PM and 6 PM.
CustomerRestricts the promotion to specific customer segments or tiers.Exclusive offer for Gold Tier members only.

Earning criteria for loyalty earning cart promotions

This section applies to promotions that require customers to earn the benefit first.

Earning TypeDescriptionExample
Single ActivityTriggered by a one-time action like making a transaction, registering, or updating a profile.Earn a discount when you sign up for email updates.
Activity MilestoneTriggered when a customer reaches a cumulative goal from a pre-configured tracker.Earn a reward on your 5th visit.

Duration

Duration defines the time during which a cart promotion is active.

SettingDescriptionExample
Validity PeriodThe overall start and end dates for the promotion.Promotion runs from June 1 to June 30.
Redemption WindowFor earned promotions, the number of days a customer has to redeem after earning.Must be redeemed within 30 days of earning.
Time-of-Day RestrictionsLimits the promotion to specific hours within valid days.Valid only between 4 PM and 6 PM.
📘

By default, an organisation can have up to 250 active promotions across all types. To increase this limit, raise a Jira ticket to the Capillary Product Support team.

Qualifying conditions

Qualifying conditions define what the cart must contain for the promotion to apply. The system evaluates the cart in real-time, and the promotion triggers only when ALL configured conditions are met.

Cart-level conditions

These conditions evaluate the entire cart as a single unit:

Condition TypeWhat it checksSupports AND logic (+ Add condition)Example
Cart AmountTotal gross value of the cart before tax and discounts.No — standalone onlyCart total must be $500 or more.
Count of items in the cartTotal number of distinct items (SKUs) in the cart.No — standalone onlyThe cart must contain at least 5 items.
Sum of line item amount for selected productTotal price of only the selected products.YesSpend at least $1000 on Denim products.
Sum of line item quantity for selected productTotal number of units for only the selected products.YesBuy at least 3 T-Shirts.
Payment ModeThe payment method used for the transaction.YesPay using a credit card to qualify.
Gift VoucherWhether a specific gift voucher code is applied.No — standalone onlyApply the Employee_Special_Voucher to qualify.

Product-level conditions

These conditions target specific items within the cart using filters:

Filter TypeWhat it doesExample
IncludeOnly count items that match the specified criteria.Include only items where Brand = "Nike".
ExcludeCount everything except items matching the specified criteria.Exclude items where Category = "Clearance".
CSV UploadUpload a list of specific SKUs to include or exclude.Upload a CSV with 50 specific product codes.

Benefits

The benefit is the reward a customer receives when their cart meets the qualifying conditions.

Benefit scope

Benefit scope determines where the discount applies:

ScopeHow it worksExample
CartThe discount applies to the entire bill total. The cart is treated as a single unit.Get a flat $10 off your entire bill.
Select products in the cartThe discount applies only to specific items within the cart.Get 20% off on Running Shoes only.

Product benefit logic

When applying discounts to specific products, define the relationship between triggering items and rewarded items:

Logic TypeHow It WorksExample
Over and above the condition (Buy X, Get Y)Items that met the condition stay at full price. The benefit applies to additional items.Buy 2 Pants, Get 1 Belt for 50% off.
Selected in condition (Buy X, Get % off X)The benefit applies to the same items that met the condition.Buy 2 Pants, Get 10% off those Pants.

Product criteria

When the benefit is set to Over and above the condition, define which specific products receive the discount.

Criteria TypeHow It WorksExample
Single SKUThe benefit applies to one specific product, identified by uploading a CSV with the SKU code. Because the discount is tied to a single SKU, there is no ambiguity about what the customer receives — ideal for gifting or clearing a targeted product.A free water bottle added to the cart when spending over $50.
Multiple SKUsThe benefit applies only when all the specified products are present in the cart together. The all-or-nothing rule drives customers to add complementary products they might not otherwise purchase, increasing average basket size.Buy a Sandwich and a Coffee together, get 20% off both.
Brand / Category / AttributeThe benefit applies to all products matching a catalog attribute such as brand, category, or product attribute. New products added to the matched attribute automatically qualify, so the promotion stays current without requiring SKU list updates.10% off all Nike shoes when spending $200 or more.

Benefit value types

Benefit value type defines how the discount amount is calculated:

Benefit TypeHow It WorksExample
Fixed AmountDeducts a fixed currency value from the price.Get $150 off. Price: $500 → $350.
Percentage BasedDeducts a percentage of the price.Get 20% off. Price: $100 → $80.
Free ProductAdds a specific SKU to the cart at $0 cost.Get a free Summer Tote Bag.
Fixed Target AmountSets items to a fixed bundle price regardless of original cost.Buy any 3 Jeans for exactly $999.

Recurring benefits

Enable Apply Benefit on Each Unit to make the benefit repeat within a single transaction:

Unit TypeHow It WorksExample
Item QuantityBenefit triggers for every X items purchased.Every 2 shirts bought = ₹50 off. Buy 4 Shirts = ₹100 off.
Item AmountBenefit triggers for every $X spent.Every ₹1000 spent on Denim = ₹100 off. Spend ₹2500 = ₹200 off.

Stacking and priority

When multiple promotions are valid for a single transaction, stacking rules and priority settings determine which promotions are applied and in what order.

Stacking behaviour

Each promotion has a stacking setting that controls whether it can be applied with other promotions on the same cart.

SettingHow it worksWhen to use
Exclusive (stacking disabled)If this promotion is applied, no other promotions can be applied to the cart.Use for high-value offers like "Flat 50% Off Everything" where additional discounts are not intended.
Stackable (stacking enabled)Other applicable promotions can be applied alongside this one.Use for smaller incentives like "Free Shipping" that should combine with other discounts.

When exclusive and stackable promotions qualify at the same time, the exclusive promotion takes precedence and blocks all others from being applied, regardless of their individual stacking settings.

When multiple exclusive promotions qualify, only one can be applied. The system uses the promotion ranking order below to determine which exclusive promotion wins.

When multiple stackable promotions qualify, all of them are applied. The ranking order determines the sequence in which each discount is calculated — this matters because some discounts are applied to the original cart value, while others are applied to the already-discounted amount.

Promotion ranking order

When the system must choose between promotions — either because stacking is disabled or to determine the order of application — it evaluates them in the following priority order:

1. Segmented promotion (Highest priority) Targets a specific, pre-defined customer group. Because this promotion was deliberately configured for a precise audience, it is treated as the most intentional and takes precedence over all other types.

2. Reward The customer spent loyalty points or currency to acquire this promotion. Because the customer has already given up something of value to hold it, the system honours it before considering promotions they received passively.

3. Code-linked The customer actively typed in a promo code at checkout, signalling deliberate intent to use that specific offer. This explicit action gives it higher priority than promotions applied automatically.

4. Earliest expiry Among promotions that are otherwise equal in priority, the one expiring soonest is applied first. This prevents a customer from losing a nearly-expired offer because a longer-lived one was picked instead.

5. Maximum discount (Lowest priority) If no other differentiator applies, the promotion that gives the customer the greatest monetary saving is chosen. This acts as the final tiebreaker and ensures the customer always gets the best available value when all else is equal.

📘

The ranking order applies within the constraints of your stacking configuration. A lower-ranked stackable promotion can still be applied alongside a higher-ranked one — ranking only determines the winner when a choice must be made.

Communication

Configure automatic notifications to customers at key moments in the promotion journey.

TriggerAvailabilityWhat It DoesExample
On EarningLoyalty earning promotion and Rewards promotion only. Not available for Loyalty promotion, POS promotion, or Code linked promotion.Sends a message when the customer earns the promotion."Congratulations! You've earned a 15% discount for completing your profile."
Expiry ReminderAll Promotion TypesSends a reminder before the promotion expires."Don't miss out! Your 'Buy 2 Get 1' offer expires in 48 hours."

Supported channels: SMS, Email, and Push Notifications.

Limits

Limits control how often and how widely a promotion can be used. These ensure the promotion remains financially viable and prevents misuse.

Constraint types

Constraint LevelWhat it controlsExample
GlobalTotal redemptions across all customers for the promotion's entire lifecycle.First 1,000 customers only.
Per CustomerMaximum redemptions or discount value for each individual customer.Max 3 uses per customer, or max $500 total discount per customer.

Available limit settings

LimitDescriptionExample
Individual Cart LimitMax times the promotion applies within a single transaction.Limit: 1. Customer buys 6 Coffees (Buy 2 Get 1 Free) but gets only 1 free coffee.
Individual Customer LimitsMax lifetime uses or total discount value per customer.Max 3 redemptions, or max $500 total discount.
Refresh PeriodWhen the customer's limit resets. For a fixed interval, choose Never, Days, or Weeks. For advanced cycling, configure a Reset period with one of five cycle types: Every X days, Every week, Every calendar month, Last X days, or Last X weeks.Reset every calendar month, or count redemptions over a rolling 30-day window.
Global CountHard cap on total redemptions across all customers.First 1,000 customers only. Once reached, promotion ends for everyone.
Maximum Earning per CustomerFor earning-type promotions, limits how many times a customer can earn the promotion.Each customer can earn this promotion once.
Validity days from issueFor earned promotions, how long can the customer redeem after issuance.Must be redeemed within 30 days of earning.
⚠️

Redemption restrictions cannot be updated once the promotion is live.

Reset periods

A reset period makes a limit refresh automatically after a specified interval, rather than applying once for the entire promotion. When a cycle ends, the customer's usage counter clears and they can use the promotion again in the next window.

You can add a reset period to per customer, per promotion, per code, and per earn limits. Per cart limits do not support reset periods — they apply to individual transactions only, with no recurring cycle.

The following table describes the available reset period types:

Reset periodDescriptionExample
every X daysResets the limit at fixed intervals of X days. Enter the number of days and select a reference date to anchor the first cycle — all subsequent cycles count forward from it.A customer is limited to 5 redemptions every 7 days, starting from the promotion launch date. Once the 7-day window closes, the counter resets and they can redeem again.
every weekResets the limit at the start of each new week. Enter the number of weeks and select the starting weekday (Sunday through Saturday) that begins each cycle.A customer can use the promotion a maximum of 2 times per week. With the week starting on Monday, the counter resets every Monday regardless of when the customer last redeemed.
every calendar monthResets the limit on the first day of each calendar month. No additional fields required — all customers reset on the same day.A customer can receive a maximum of 3 discounts per calendar month. On the 1st of the next month, their counter resets to zero.
for last X daysApplies a rolling window that counts only redemptions in the most recent X days. The window shifts continuously — a redemption clears from the count exactly X days after it occurred, with no fixed calendar boundary.A customer is limited to 1 redemption in the last 14 days. A redemption made 15 days ago no longer counts, making the customer eligible again.
for last X weeksApplies a rolling window measured in weeks. The week boundary is fixed as Sunday to Saturday and is not configurable. Usage is measured against a continuously shifting window.A customer can redeem a maximum of 2 times in the last 4 weeks (Sun–Sat boundary). As the oldest week rolls out of the window, that usage no longer counts.