At a glance
Daily discount-given total plotted over 90 days. The shape tells you how promotional your store has been over the quarter, where the spikes were (sales, coupons, loyalty redemptions), and whether discount dependency is creeping upward in the long-term baseline.
| What it counts | DATE_HISTOGRAM SUM(discountAmount) per day across every order in the 90-day window. discountAmount is the order-level total of all discount sources combined: storewide promotions, coupon redemptions, automatic banded promos, and manual order-level discounts applied by support staff. |
| VAT / tax treatment | Discounts are pre-tax in BC. discountAmount is the discount applied to the goods value before tax is computed. The total_inc_tax shown to the customer reflects the post-discount tax. |
| Shipping | Shipping discounts (free-shipping promos) are stored separately on the order in shippingCostExTax adjustments and are NOT included in discountAmount. To see shipping promotions over time pair with Shipping % trend. |
| Discounts | This card is the discount measure, not “discounts deducted from a different metric”. |
| Refunds | Not deducted. A refunded order’s discount still counts on the day of the original order. To see refund-adjusted discounting use Refund Value alongside this card. |
| Cancelled / voided orders | Included. Orders with status = Cancelled or Declined still contribute their discountAmount to the trend on the day they were placed (the discount was offered, not necessarily redeemed). |
| Currency | Multi-currency without FX. A multi-currency BC store sees a flat-arithmetic sum of GBP, USD, EUR discount amounts on each day. Cross-currency stores should run a per-currency view. |
| Channels / sources | All BC channels contribute (Stencil web, POS, Channel Manager, Facebook Shop, B2B portal). POS discounts (manager overrides at the till) and B2B contract-pricing discounts both flow through discountAmount. B2B Edition note: contract pricing applied via the price list shows up here as effective discount-vs-list, which materially inflates the trend on B2B-heavy stores. |
| Per-channel coupons | BC’s promotion engine supports per-channel coupons (a code valid on Amazon channel only). The discount appears on this card whichever channel redeems it; we do not split by channel in this view. Use BC Top Coupons for the redeem-by-channel breakdown. |
| Banded / tiered promos | BC supports banded promotions (“spend 15, spend 40”) natively. Each banded redemption applies the band-appropriate discount and shows here as a single sum. Investigation of band crossings requires BC Top Coupons and the BC Promotions admin. |
| Time window | 90D (rolling 90 days, daily granularity) |
| Alert trigger | None at trend level. Pair with Discount % of Revenue for the threshold version. |
| Roles | owner, marketing |
Calculation
Worked example
A UK fashion brand on BigCommerce Plus, 90-day window from 13 Jan 26 to 12 Apr 26.| Period | Daily-avg discount given | Notable spikes | Context |
|---|---|---|---|
| 13 Jan 26 to 26 Jan 26 | £640 | £2,180 on 22 Jan | January clearance tail-off |
| 27 Jan 26 to 9 Feb 26 | £390 | nothing significant | Quiet baseline |
| 10 Feb 26 to 23 Feb 26 | £710 | £4,100 on 14 Feb | Valentine’s promo |
| 24 Feb 26 to 9 Mar 26 | £820 | £3,300 on 8 Mar | International Women’s Day collab |
| 10 Mar 26 to 23 Mar 26 | £1,140 | £5,200 on 17 Mar | Discount dependency creeping |
| 24 Mar 26 to 6 Apr 26 | £1,320 | £6,800 on 28 Mar | Spring launch with 25% off |
| 7 Apr 26 to 12 Apr 26 | £1,460 | £4,200 on 11 Apr | Bank holiday weekend promo |
- The baseline has crept from £390 to £1,460/day in 90 days, a 3.7x rise. Even on quiet days the store now gives away ~£1,400 in discounts; that’s a structural shift, not a campaign cycle. Cross-check with Discount % of Revenue, if discount % is rising even on non-promo days, you’ve quietly trained customers to wait for the next code.
- The 17 Mar £5,200 spike is St Patrick’s Day, an unplanned UK promo run by the influencer team without finance signoff. Visible on the trend, missing from finance’s promo calendar. Reconcile this card monthly with your promo calendar; orphan spikes are usually unauthorised codes leaking through coupon-aggregator sites like RetailMeNot or Honey.
- The 28 Mar spike (£6,800) is intentional spring launch. Pair with BC Top Coupons to see whether the launch code (
SPRING25) was the largest contributor; if so, the launch worked as designed. If a different code is on top (HONEY15,RETAILME10), the launch was eclipsed by ambient extension traffic. - Bank holiday spike on 11 Apr is normal. UK fashion has a 4-day Easter weekend bump; if your trend doesn’t show it, your promotions team didn’t run the seasonal campaign and you missed revenue.
- The trend is dangerous, the daily cadence is healthy. Spikes are fine; rising baselines mean discount-as-a-floor pricing has set in. The fix is a 30-day “no codes” period to retrain customers, painful in week 1, profitable by week 4.
- Compare 30-day rolling discount to 30-day rolling revenue (Total Revenue). If discounts grew faster than revenue, margin is leaking.
- Open BC Top Coupons. Identify the top 3 codes by redemption value; verify each is a sanctioned campaign. Aggregator-leaked codes (
HONEY*,RETAILME*,RAKUTEN*) should be killed and reissued as cookie-tied codes. - Audit storewide promotions in BC Marketing → Promotions. Disable promotions that have run for more than 60 days, customers stop perceiving them as deals.
- Run a 14-day code-free test. Drop all storewide codes for 14 days. Track conversion rate impact via BC Channel Conversion Rate, most stores see CR fall 8-15% but margin per order rises 12-20%.
- Cross-reference with
google_adwords.ga_promo_extensionsto ensure paid-search promo extensions match the live promo calendar; stale extensions are a common leakage vector.
Sibling cards merchants should reference together
| Card | Why pair it with Discounts Given Over Time |
|---|---|
| Discount % of Revenue | The ratio. This card shows raw amount; that one shows percentage. A rising raw amount with stable percent = revenue grew with discounts proportionally; a rising percent regardless = margin compression. |
| Total Discount | The single-period sum. Use this for “this 30 days vs prior 30 days” comparisons. |
| Total Revenue | The numerator that discount supports. Discount-driven revenue rises but at lower margin; pair to spot. |
| BC Top Coupons | The “which codes” breakdown. When a spike shows on this trend, this card tells you which code drove it. |
| BC AOV by Discount | The AOV-weighted view. High discount + low AOV uplift = bargain hunters; high discount + high AOV uplift = bundle behaviour, healthier. |
| Refund Value | Discounted goods often have higher return rates; pair to spot the secondary cost of discounting. |
| BC Channel Revenue Mix | If discount spikes correlate with one channel’s revenue share rising, that channel is discount-acquired (less sticky). |
shopify.discount_over_time | Cross-platform peer for agencies running both stacks. |
Reconciling against the vendor’s own dashboard
Where to look in BigCommerce Control Panel: Marketing → Promotions shows active promotion-level usage and total discount given per promotion. Analytics → Marketing (Plus / Pro / Enterprise) has a “Promotions over time” view that closely mirrors this card. For coupon-specific drilldowns, Marketing → Coupons shows redemption count and value per code. For B2B Edition, contract pricing is configured under B2B → Price Lists. Be aware: B2B contract prices show as “discount vs list” on this card, which is technically accurate but may be larger than what the merchant thinks of as “promotional discount”. For a promo-only view filtercustomerId NOT IN (B2B customer ids) upstream.
Why our number may legitimately differ from BC’s promotion reports:
| Reason | Direction |
|---|---|
| Multi-source discount aggregation. BC’s Promotion report is per-promotion; we aggregate every discount source on each order (storewide promo + coupon + manual override). A multi-discount order shows summed here, separated in BC. | Vortex IQ HIGHER on multi-discount orders |
| Manual order-level discounts. Support agents who apply ad-hoc discounts via “Edit order” don’t show under any specific promotion; they show here. | Vortex IQ HIGHER |
B2B contract pricing. Contract-priced orders contribute the (list - contract) gap to discountAmount; BC promotion reports may exclude contract pricing as “not a promotion”. | Vortex IQ MUCH HIGHER on B2B-heavy stores |
| Time zone. BC reports use store time zone; we aggregate UTC. 90-day windows wash this out, but daily bars at the boundary shift. | Boundary effects |
| Cancelled orders. BC may exclude cancelled orders from promotion reports; we include them. | Vortex IQ HIGHER if decline rate is high |
| POS manager overrides. BC POS allows till-side discounts that may or may not be tagged to a promotion; we capture all of them. | Mixed |
| Currency mix. Multi-currency stores see arithmetic-summed discount across currencies here, BC reports may segregate. | Mixed |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
klaviyo.kl_discount_redemptions | Klaviyo-issued codes should appear in this trend on redemption days | Klaviyo sees email-click attribution; BC sees the actual checkout. ~10-20% gap from clicks-without-purchase. |
google_adwords.ga_promo_codes | Paid-search promo extensions and code-leak from search-ads should overlap | Aggregator extensions (Honey, RetailMeNot) bypass Google Ads attribution and show only here. |
shopify.discount_over_time(planned)adobe_commerce.discount_over_time(planned)
Known limitations / merchant FAQs
My discount baseline keeps creeping up, what’s the right intervention? Run a 30-day no-storewide-promo experiment. Drop every storewide code, keep only segmented loyalty-tier offers. The first 7-10 days will show a 5-15% conversion-rate dip; by week 3 most stores are back to baseline conversion at 12-20% better margin per order. The hardest part is internal politics, marketing teams optimise for revenue per session and finance optimises for margin per order. This card is the lever that lets you have the conversation. There’s a spike I can’t explain, what does that usually mean? Three usual causes, in order of likelihood. (1) Aggregator-extension code leak, aHONEY15 code your team didn’t sanction is being applied automatically by browser extensions. (2) Marketplace promotion, Amazon ran a Lightning Deal that BC inherited the discount from. (3) Support team manual discount surge, a refund week where agents handed out compensation discounts liberally. Cross-check with BC Top Coupons to identify the code; if no code is dominant, the discount is from manual overrides.
Should B2B contract-price discounts show up here?
Definitionally yes (BC stores them in discountAmount). Practically it depends on how you frame the metric. If you report “promotional discount” to finance, B2B contract pricing inflates the number unhelpfully; we recommend running a B2B-excluded view as a separate dashboard slice. If you report “total discount given vs list price”, this card is the right number.
Why is my discount always £0 for orders from my B2B portal?
Because B2B Edition can apply pricing via two mechanisms: (a) percentage-off coupons (which populate discountAmount) or (b) custom price lists (which can populate discountAmount as list-minus-contract OR be modelled as a separate “negotiated price” without a discount field, depending on BC version). Check B2B → Price Lists configuration. Most modern BC B2B installs do populate discountAmount, but legacy installs may not.
Does free shipping show up here?
No. Shipping discounts are tracked in shippingCostExTax adjustments on the order, not in discountAmount. To track free-shipping promotion impact use Free vs Paid Shipping trend or Shipping %.
My weekend discount is consistently higher than weekday, is that healthy?
Mostly fine. UK and US D2C stores see 30-60% of weekly discount-driven revenue concentrated on Fri-Sun. The pattern only becomes a problem when weekday discount climbs, that’s when ambient discounting (always-on codes) is suppressing what should be full-margin transactions.
How do I separate “deal-seeking customer” discount from “intentional promo” discount?
Cohort the orders by acquisition channel via BC Channel Revenue Mix. Email-acquired orders with codes are usually intentional (you sent them the code). Direct-traffic orders with codes are usually aggregator-leaked. Paid-search orders with codes are mixed; check whether the code came from a Google Shopping promo extension or a third-party site.
Should I worry about a flat-zero day on the trend?
Probably not. A day with no codes redeemed and no storewide promotions live legitimately reads zero. The concerning pattern is zero days disappearing entirely, that means promotions are now always-on, which is the discount-baseline-creep failure mode.
My most recent day reads as £0, did the integration break?
Almost always sync lag. Today’s bar is partial until end of day. If a full day later still reads £0 and there were active promotions, check the BC webhook delivery health under Settings → Sources.