DTC Fashion Brand Pricing: Why 39% of Products Are Always on Sale
DTC apparel is one of the largest categories on Shopify, and one of the most discount-driven. Generic competitor monitoring advice treats a compare-at price change like any other content change: worth a note, not worth an alert. In fashion, that framework misses most of the pricing signal in the category.
Beaconmon tracks 33,049 products across 68 distinct apparel and fashion brands on Shopify. 39.01% of those products carry a compare_at_price right now, and when they do, the average discount depth is 53.00% off. Nearly 2 in 5 tracked apparel products are on sale at this exact moment, and the average markdown is over half the listed price.
Key Takeaways
- →33,049 apparel products across 68 DTC brands analyzed, filtered to fashion-specific product types on Shopify storefronts.
- →39.01% of apparel products carry a compare_at_price at any given moment, meaning they are formally presented as discounted.
- →The average discount depth on those on-sale items is 53.00% off the listed price.
- →Apparel brands discount roughly 4x more often and roughly 2x as deep as the skincare and beauty vertical (9.04% on-sale, 24.01% average depth).
- →Compare-at-price tracking matters more in apparel than in almost any other vertical: it is close to the default state of the category, not an exception worth a special rule.
Finding 1: Almost 2 in 5 apparel products are on sale right now
Of the 33,049 apparel products in our dataset, 39.01% currently have a compare_at_price set higher than their listed price, the Shopify signal for a formal discount. That is not a snapshot taken during a holiday sale window. It is the standing state of the catalog across a broad sample of 68 brands over a roughly six-week period.
For an apparel merchant, this reframes what "on sale" even means as a competitive signal. If close to 40% of the competitive set is discounting at any given moment, a single sale event on one competitor is not the interesting data point. The interesting data point is the catalog-wide trend: how much of a competitor's catalog is marked down, and whether that share is rising or falling week over week.
39.01% of tracked apparel products carry a compare_at_price right now. In this vertical, being on sale is closer to the default state of a product than an exception, so monitoring that treats every discount as a one-off event will miss the pattern underneath it.
Finding 2: When apparel brands discount, they discount deep
The average discount depth across every apparel product carrying a compare_at_price is 53.00% off the listed price. That is an average across the full on-sale subset, not a floor or a ceiling: individual markdowns in the dataset range both above and below it, but the center of gravity sits past the halfway mark.
A discount depth near half off is common enough in apparel that it barely registers as aggressive within the category. A merchant benchmarking against a single competitor's occasional 20% off promotion may be badly underestimating how deep the rest of the field is actually discounting.
53.00% is the average discount depth on apparel products currently marked down, not an outlier case. Treat discount depth as a trend to track over time per competitor, not a single number to react to once.
How this compares to other verticals
The skincare and beauty vertical in the same dataset runs at 9.04% on-sale prevalence with an average discount depth of 24.01%. Apparel brands discount roughly 4x more often and roughly 2x as deep as skincare and beauty brands selling to a similar DTC audience. See the full breakdown in our skincare and beauty pricing data post. These two categories sell through the same Shopify playbook and largely overlap in customer base, yet they run on almost opposite pricing postures: apparel treats markdowns as a constant, skincare treats them as rare.
| Metric | Apparel | Skincare & Beauty |
|---|---|---|
| Products carrying compare_at_price | 39.01% | 9.04% |
| Average discount depth on sale items | 53.00% | 24.01% |
What this means for monitoring an apparel competitor
If roughly 40% of the competitive set is discounting at any moment and the average depth is 53%, compare-at-price monitoring is not optional context for an apparel merchant. It is close to the default state of the category. A merchant who only tracks list price and misses compare-at-price and sale-badge changes is missing the majority of the pricing signal in this vertical.
Track compare-at-price changes as closely as list-price changes
In most categories, list price is the primary signal and compare_at_price is secondary. In apparel, treat them as equally important. A competitor can hold list price steady for months while quietly shifting which products carry a compare_at_price and how deep the markdown runs.
A sudden jump in on-sale percentage is a sitewide-sale signal
Because close to 40% of a competitor's catalog carrying a discount is normal for this vertical, the number worth alerting on is the delta, not the raw share. A competitor jumping from 35% of their catalog on sale to 65% in a short window is launching a sitewide event, even if no single product's discount depth looks unusual on its own.
Discount depth trends over time matter more than any single price point
A single markdown tells you little in a vertical where 53% off is the average. What tells you something is the trend: a competitor whose average discount depth is climbing from 40% toward 60% over several weeks is either clearing inventory or resetting customer expectations about what a "normal" price looks like. Both are worth knowing before it shows up in your own conversion numbers.
Beaconmon's permanent sale post covers the aggregate compare_at_price pattern across all verticals. This post breaks out the apparel-specific numbers, which run well above the aggregate rate in both frequency and depth. For a look at a category with the opposite pattern, see the coffee brand pricing data, where formal discounting is rare and price moves are driven by input costs instead.
If you sell DTC apparel on Shopify, see how Beaconmon works for DTC brands, or check pricing to set up compare-at-price and discount-depth tracking across your competitive set.
Frequently asked questions
How often are DTC fashion brands running sales?
Constantly, based on our data. Across 33,049 apparel products tracked from 68 DTC brands on Shopify, 39.01% carry a compare_at_price at any given moment, meaning they are formally presented as discounted. Almost 2 in 5 apparel products in our dataset are on sale right now, not as a rare promotional event but as a standing state of the catalog.
What's a typical discount depth for apparel brands on Shopify?
Among apparel products that carry a compare_at_price, the average discount depth is 53.00% off the listed price. That is an average across every on-sale item in the sample, not a floor or a ceiling, so individual markdowns range both above and below it. A discount depth near half off is the norm for this vertical, not an outlier.
Do fashion brands discount more than other ecommerce categories?
Yes, by a wide margin. The skincare and beauty vertical in our dataset runs 9.04% on-sale prevalence with an average discount depth of 24.01%. Apparel brands discount roughly 4x more often and roughly 2x as deep. Two categories that sell to overlapping DTC audiences have almost opposite pricing postures.
What should trigger an alert for an apparel competitor?
A sudden jump in the share of a competitor's catalog carrying a compare_at_price is the clearest sitewide-sale signal, often ahead of any homepage banner change. Beyond that, watch the trend in average discount depth over time rather than any single markdown: a competitor sliding from 40% off toward 60% off across the catalog is a margin decision worth knowing about, not noise.
Haimanot built Beaconmon after watching Shopify merchants lose sales to competitors they never saw coming. He writes about competitive intelligence, ecommerce pricing strategy, and how merchants can turn competitor data into decisions that protect margin.