At a glance
Daily discount value (SUM(discount_amount)) over the trailing 90 days. Surfaces promotional-spend cadence, identifies long-tail discount creep (B2B tier prices auto-applying without explicit campaigns), and reveals the lifecycle of specific promotional codes. Adobe Commerce aggregates customer-group-price discounts (B2B tier pricing) and cart-rule discounts (BOGO, percent-off codes) into the samediscount_amountfield; the card distinguishes them via the rule-name dimension where available.
| What it counts | SUM(discount_amount) GROUP BY date(created_at). Discount amount is per-order total of cart-rule and item-rule discounts applied. The series shows daily totals; rule-level decomposition available as a sub-view. |
| API field | discount_amount (negative-or-zero on each order) and applied_rule_ids from GET /rest/V1/orders. Rule names from GET /rest/V1/salesRules. |
| VAT / tax treatment | discount_amount is typically pre-tax in Adobe Commerce (depends on Stores > Configuration > Sales > Tax > Apply Discount on Prices configuration). For UK/EU stores configured for tax-inclusive prices, discount can be on the gross figure; the card surfaces the figure as Adobe stores it. |
| Shipping inclusion | discount_amount typically excludes shipping discounts; shipping discounts go to shipping_discount_amount. The card sums discount_amount only by default. |
| Discounts | This card IS the discount measurement. |
| Credit Memo refund treatment | Discounts on cancelled or refunded orders are still counted. The discount was offered; the campaign-effectiveness measurement should still reflect it. |
state machine inclusion | All states except canceled (a discount on a cancelled order didn’t actually convert). |
pending_payment quirk | Included; B2B net-30 orders typically have applied customer_group_price discounts. |
Multi-currency grand_total vs base_grand_total | Uses base_discount_amount for cross-currency rollup. |
Store View scope (store_id) | All Store Views; per-Store-View overlays useful for region-specific campaign analysis. |
| Time window | 90D daily granularity. |
| Alert trigger | None by default. |
| Roles | owner, marketing |
Calculation
Calculated automatically from your Adobe Commerce data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A homewares brand on Adobe Commerce 2.4.6 with US/UK/B2B Store Views. 90-day window ending Monday 4 May 26. 90-day discount overview:| Metric | Value |
|---|---|
Total base_discount_amount (90D) | $124,800 |
| Average daily discount | $1,386 |
| Largest single-day discount | $4,820 (Mother’s Day campaign Saturday) |
| Standard deviation | $740 |
| Discount as % of total revenue | 4.9% |
| Rule | Type | 90D total |
|---|---|---|
| WELCOME10 | 10% off first order | $24,400 |
| Mother’s Day flash 20% | timed campaign | $18,200 |
| Free shipping over £50 (UK) | shipping rule | $14,800 (in shipping_discount_amount, not in this card) |
| B2B Tier-2 customer-group price | always-on B2B tier | $42,600 |
| WINTER25 | 25% off seasonal | $9,800 |
- B2B tier pricing accounts for $42,600 of the 90-day discount total, the largest single line. This is structurally embedded in B2B contracts, not a campaign cost. Many merchants underestimate this because it doesn’t appear as an explicit campaign.
- **WELCOME10 (24,400 spent on first-order discount; first-order revenue (gross) attributable to this rule is ~244k of qualifying baskets). Cohort retention determines whether the spend pays back.
- The Mother’s Day spike ($18,200 over a 3-day window) is a seasonal cluster; the daily chart shows the spike clearly.
- WINTER25 still costs $9,800 over 90 days even though winter is over. Cause: the rule has no end-date constraint and is still being applied (B2B accounts who saved the code, returning customers using saved discounts). Consider sunsetting expired rules.
- Cross-checking Discount %: the 4.9% discount-of-revenue is in the healthy range (DTC merchants commonly run 4 to 8%); B2B-heavy stores sometimes see 8 to 12% if tier pricing is aggressive.
- Action items: sunset WINTER25 (saves ~$3k/quarter); re-evaluate B2B tier pricing on a per-Company basis (some Tier-2 accounts may merit Tier-1, others may have outgrown Tier-2 and could be moved up).
Sibling cards merchants should reference together
| Card | Why pair it with Discount Over Time |
|---|---|
| Discount % | Single-period summary as % of revenue. |
| Total Discount | Single-period absolute value. |
| AOV | Discount campaigns drag AOV down; the chart correlates with AOV dips. |
| Total Revenue | Denominator-of-context. |
| Daily Order Trends | Volume lift correlates with discount spikes. |
| B2B Revenue Share | B2B tier-pricing structural discounts are part of the B2B revenue cost-of-sale. |
| Top Refunded SKUs | Discount-driven impulse buys sometimes refund at higher rates. |
shopify.discount_over_time | Cross-platform peer. |
Reconciling against the vendor’s own dashboard
Where to look in Adobe Commerce Admin:Reports > Sales > Coupons lists rule-by-rule usage with totals. Adobe’s report distinguishes coupon-codes from cart rules; some discounts (customer-group price) don’t show in coupon report.
Marketing > Cart Price Rules shows the rule list and per-rule “Times Used” plus “Total Discount” stats.
Marketing > Catalog Price Rules shows item-level discounts (separate from cart rules; commonly used for category-wide promotions).
Sales > Orders > [Order ID] > Items > Discount column shows per-order discount detail.Why our number may legitimately differ from Admin:
| Reason | Direction of divergence |
|---|---|
| Coupons report scope. Admin’s Coupons report shows code-only rules; this card includes cart-rule and customer-group-price discounts that aren’t necessarily code-driven. | Card higher than coupons report |
| Time-zone. Admin in Store View timezone; card UTC. | Boundary effects |
| Shipping discounts. Card excludes by default (shipping_discount_amount field). Admin’s per-order discount column may include them. | Card lower per-order |
Currency. Card uses base_discount_amount for rollup. | Material on multi-currency |
canceled exclusion. Card excludes; Admin reports include unless filtered. | Card lower |
| Pair | Expected relationship | What divergence tells you |
|---|---|---|
| ESP campaign reports (Klaviyo/Mailchimp) | ESP-attributed discounts ≤ card total | If ESP shows higher attributed discount than this card has spent, attribution overlap (multiple touches per order). |
google_analytics.ga_promo_codes | GA4 promo-code attributed revenue should reconcile with the rule’s discount cost | Material divergence indicates GA4 promo-attribution drift. |
Known limitations / merchant FAQs
Why does my discount total seem higher than the campaigns I ran? Most likely cause on Adobe Commerce: customer-group price (B2B tier pricing) is structurally applied to every B2B order. Merchants don’t perceive this as “discounts” but Adobe stores it indiscount_amount. Your campaign discounts plus B2B tier discounts together explain the total.
Adobe Commerce vs Magento Open Source: any difference?
None at the calculation. Both editions use the same cart-rule and customer-group-price machinery.
Why aren’t shipping discounts in this chart?
They’re stored separately in shipping_discount_amount. Configure the manifest to include them if you want a unified discount-spend view; default excludes them so cart-rule and tier-pricing dollar comparisons are like-for-like.
My multi-store Adobe Commerce, can I see per-Store-View overlays?
Yes, configure per-Store-View series. Useful when one Store View runs region-specific campaigns.
Why does the chart spike Monday morning even when no campaign launched?
B2B end-of-month POs often place Monday with stacked customer-group-price discounts; aggregate discount value can spike independently of explicit campaigns.
A discount rule expired weeks ago but is still showing daily spend, why?
Expired rules can still apply if customers have saved coupon codes (Adobe’s standard cart-rule machinery validates code-vs-rule at use, not at save). For permanent removal, set the rule’s “Active” flag to No, not just an end-date.
Discount as % of revenue is 4.9%, is that high?
Category-dependent. DTC consumer baseline is 3 to 6%; promotional-heavy brands run 8 to 12%; B2B baseline is 5 to 15% (driven by tier pricing). Your 4.9% is mid-range.
**Why does the worked example have 462k 90-day B2B revenue base implies an average ~9% structural discount, which is normal for wholesale tier pricing. Higher-volume B2B accounts often have 15 to 25% tier discounts; the $42k figure is the dollar-weighted average across all B2B Companies.