I’m trying to find out how to set capacity limits in order to avoid overselling at made-to-order shops.
Say you can only make 20 orders a day, or that you have limited availability each week. When you reach your limit, how would you prevent the next customer from ordering? Do you have to manually close the store, hide items, put a cap on your inventory, or is there another way that an application could help you?
I’ve heard that Zapiet, Pickeasy, or Stellar have time slot limitations, but I don’t know if that refers to a daily limit or a limit per slot. On some shops, I’ve seen that they’ve hidden the buy button with custom CSS rather than doing it through an application.
So, if you run an made-to-order bakery, flower shop, meal prep service, printing shop, or similar, how are you handling it? And does it work well?
You are really choosing between two controls: limiting what the storefront shows and enforcing capacity when the order is placed. Hiding the buy button with CSS is only a display change, so it is not the control I would trust for the last available slot. Shopify inventory can stop sales when a variant reaches zero, but it does not by itself create a daily capacity that resets by date. For a made-to-order shop, I would use a date/slot rule that rejects checkout after the cap and define the capacity unit first: either one unit per order, or workload points by product and quantity when a cake, bouquet or print job consumes different effort. Before relying on any app, test two carts competing for the final slot, a multi-quantity order, a cancellation restoring capacity, the store-timezone reset, Shop Pay/direct checkout, and an edited order. If every order takes roughly the same effort, a daily order cap is enough; if effort varies, capacity points per slot are safer.
Before paying for anything, it might be worth testing how far plain inventory tracking gets you: treat your 20-a-day as stock on the made-to-order items, and once it hits zero the sold-out state closes orders for you, no CSS tricks needed.
The catch is the count is per product rather than per day across the whole store, and someone ordering quantity 5 eats five slots at once, which is exactly where the slot-based apps you mentioned earn their keep.
One more thing worth deciding early: whether hitting the limit should hard-block checkout or just push the promised lead time out a day, because for a bakery or print shop a longer turnaround often loses fewer customers than a closed store.
The CSS route breaks in a way you find out about late: hiding the button on the product page does not stop a cart permalink, a saved cart, or anything that is not your theme, so orders still land after you are full.
I would make the capacity a real number in Shopify instead. Set inventory to the day’s slots, let it hit zero, reset it on a schedule. Every surface reads that same signal, theme, search, feeds, the Inbox agent, so you are not patching them one at a time. The cost is that you are now tracking inventory on a made to order product, so decide first whether the unit is the product or the day.
Inventory is the only signal every surface respects, but it has no concept of a day, so the piece you actually have to build is the reset. A scheduled task that sets the variant back to 20 just after midnight in your store timezone gets you a daily cap without an app, either through Flow’s scheduled trigger or a cron against the Admin API, and it holds up against cart permalinks and Shop Pay because it is real stock rather than a hidden button.
Two things to test before you trust it: a customer ordering quantity 5 eats five slots, which is what you want for a bakery and never what you want for a print job, and a cancellation the next morning puts a unit back on the wrong day. If the cap needs to be per delivery date rather than per calendar day, that is where the slot apps earn their money, because stock cannot express “twenty for Friday” on its own.
Native inventory is the cap. Set available to 20 for the day. When it hits 0, the product is sold out and checkout stops.
Hiding the buy button with CSS does not stop someone who already has the page open, or who comes in from a cart they saved.
Pickup apps cap time slots. They do not cap how many cakes you can frost.
When the shop is sold out you will still get the same email: when are you back. Keep one reply for that.
For made-to-order stores, the setup that holds up is capacity tied to the fulfillment date, not today’s inventory.
- Require customers to choose pickup or delivery date before checkout.
- Set each date to 20 orders, or use capacity points if products take different effort. For example, cupcakes cost 1 point and a custom cake costs 5.
- Add a cutoff, such as closing tomorrow’s orders at 3 pm, and keep 1 or 2 spots unavailable for replacements or mistakes.
- Test quantity changes, accelerated checkout, and cancellations. Some apps reopen capacity automatically, others need the slot adjusted manually.
CSS is only useful for messaging. It should never be the actual block. Plain inventory is fine only when every quantity equals one capacity unit and you do not need customers choosing future dates.
Hi there @Tealreaper
For made to order businesses I would not recommend capping product inventory if the the objective is to control total capacity for the day. A more suitable solution would be to use Shopify’s local delivery/pickup scheduling with a limited number of defined time slots and order maximums, if that is feasible. You can also define capacity per slot and per day depending on your business and lock dates from customer selection once the capacity is fully booked. For more advanced production limits, you can use Shopify Flow to automate product availability or tagging based on order volume.
Hi there,
Capping daily order limits for made-to-order products without manually toggling product availability requires automating stock availability based on order volume triggers rather than traditional physical inventory counts.
Standard Shopify inventory tracks static unit stock rather than rolling time-window limits, which leads to overselling past daily fulfillment capacity when orders rush in.
To enforce hard daily caps automatically:
- Virtual Inventory Pools with Automated Reset: Assign a daily inventory quantity (e.g., 20 units) to your made-to-order SKUs, and set up an automated script/flow that resets the quantity back to 20 every night at midnight.
- Webhook Capping Trigger: Set up a dynamic rule that listens for checkout webhooks and immediately zeros out availability (
inventorySetQuantities to 0) the moment order count threshold hits 20 for the day, preventing additional orders from placing.
We built an autonomous inventory engine that supports custom rules like rolling order caps and dynamic inventory resets. Happy to share technical details or help you map out a simple automated cap pipeline!
The interesting failure mode here is that a control can look correct on the storefront while still not actually enforce the business rule everywhere.
For merchants using workarounds like this, do you normally discover the failure through testing, or only after an order slips through that should have been blocked?
"Setting strict daily caps or time-slot limits without resorting to hiding buy buttons with CSS is a major challenge for made-to-order shops, bakeries, and custom fulfillment workflows.
When inventory counts don’t automatically align with daily production capacities, it leads to overselling and manual store closures.
That’s what we solve with SyncPulse—automating inventory migration, real-time stock limits, and ledger synchronization so you don’t have to manually manage daily thresholds.
If anyone is looking to completely streamline their inventory caps and fulfillment limits, we are currently running a $99 Managed Migration & Audit pilot:
https://buy.stripe.com/dRm00j2UF9k81LufllgA800
Let me know if you want to chat about your store’s specific capacity workflow!"