Launching a discount app six weeks before the busiest sales weekend of the year is not a plan. It is a deadline that plans for you.
Discount Prime went live on the Shopify App Store on October 10, 2023. Black Friday was November 24. We knew going in that our first BFCM would arrive before we were ready for it, and it did. This is the honest retrospective: what the load actually looked like, what broke first, and what merchants told us that we could not have learned any other way.
The short version: the discount engine held, the surprises were smaller and more human than we feared, and the most valuable output of the weekend was not revenue. It was a queue of support conversations that rewrote our sense of what to build next.
The timeline we walked into
Six weeks is not enough time to feel ready, and that turned out to be fine. The app that faced BFCM did exactly two things: volume discounts and quantity breaks. We had shipped nothing else, on purpose. Going into the highest-pressure weekend of the year with a narrow, well-understood feature set is far easier to support than going in with ten features you half understand.
Over the same weekend, merchants across Shopify sold $9.3 billion. We were a very small part of a very large wave, watching our corner of it closely.
What the load actually looked like
Here is the thing about building on Shopify Functions: the checkout traffic is not really your traffic. Discounts apply inside Shopify's own engine, so when order volume spiked, Shopify absorbed it. There was no intermediate layer of duplicate variants or draft orders to buckle under the weekend, because we had never built one.
That does not mean the weekend was quiet. The pressure just showed up somewhere other than checkout throughput: in dashboard sessions as merchants adjusted live campaigns, in support volume, and in the long tail of edge cases that only appear when enough orders flow through enough different store configurations at once.
What actually broke first
The first real bug reports were not about the discount math. The engine did the arithmetic correctly. The problems lived in the surrounding presentation and configuration, which is a useful lesson on its own.
- Display, not calculation. A tier table that looked perfect on our test themes rendered awkwardly on a couple of merchant themes we had never seen. The price was right; the layout was not.
- Timezones. More than one scheduling question came down to a sale starting or ending in a different timezone than the merchant expected. The math was correct; the clock was the argument.
- Currency edges. Multi-currency carts occasionally rounded a per-unit price to a cent a merchant did not anticipate. Small, but the kind of thing a careful merchant notices immediately.
None of these were dramatic. All of them were exactly the sort of rough edge you can only find by putting the app in front of real stores, which is the entire case for launching before you feel finished.
What merchants told us
The support queue was the real product of the weekend. Read enough tickets in a row and patterns emerge that no roadmap meeting would have produced.
Merchants kept describing the same workarounds, and the workarounds pointed straight at missing features. Wholesale-leaning stores wanted pricing tied to customer groups. Several asked, in effect, for a free shipping incentive to sit alongside their volume tiers. We were not going to build any of that during BFCM week, but we wrote every request down, and that list is now shaping the roadmap far more than our original plan did.
What we would tell our six-weeks-ago selves
Three things. First, a narrow launch is a feature, not a compromise; the smaller the surface, the calmer the support. Second, the bugs that matter early are almost never in the core logic you obsessed over, so budget attention for display, scheduling, and currency. Third, treat the first BFCM as a research instrument. The revenue is a rounding error against the clarity you get about what to build.
If you are a merchant weighing your own first BFCM, we wrote a separate framework for that in your first BFCM discount plan. And if you want the story of why we built on Functions in the first place, it is in our launch note.
To everyone who installed the app in those six weeks and told us what was rough: thank you. You were the retrospective.




