If you want to run Shopify batch fulfillment for Black Friday, the short version is this: filter your open orders down to a group that gets picked the same way, create a batch from that selection, print the paperwork for the whole batch, pick it as one pass through the warehouse, then pack and buy labels station by station. Shopify shipped batches in the middle of October. Five weeks before Cyber Monday. That means almost nobody reading this has run one under real volume, and the first time you try it should not be at 11pm on the Friday after Thanksgiving with 250 unfulfilled orders stacked up.
So test it in the next two weeks on a slow Tuesday, with 30 orders you were going to ship anyway.
What a batch does, and what it doesn't
A batch is a named, persistent group of orders that you work as a unit. Before this, bulk fulfillment on Shopify was a selection — you ticked boxes on the orders page, hit an action, and the selection evaporated the moment you navigated away. If a packer got interrupted, you had no record of which 40 orders were half-picked and sitting in a cart by the shelving.
Batches survive the interruption. That's the real gain, and it matters more than the click savings. On a normal day a lost selection costs you two minutes of re-filtering. On Cyber Monday it costs you a double-ship, because someone re-picked orders that were already in a tote.
What a batch is not: a warehouse management system. It won't tell a picker which aisle to walk, it won't sequence by bin location, and it won't reserve stock for the orders inside it. Those orders are still live. Inventory still moves. We'll come back to that, because it's where this breaks.
How to fulfill orders in batches on Shopify
The mechanics, in order:
- On the Orders page, filter to what you want. Fulfillment status unfulfilled, payment status paid, and then whatever grouping criterion you've chosen — tag, location, delivery method, product.
- Select the filtered orders and create a batch. Name it something a human can read at a glance. CM-APPAREL-01 beats Batch 7 when three people are working the floor.
- Print picking documents and packing slips for the batch in one go.
- Pick, pack, buy labels, mark fulfilled.
The part people get wrong is step one. They treat the filter as an afterthought and group by whatever is convenient in the admin, usually date. Date is the worst possible grouping criterion. It tells your picker nothing about where anything is.
Pick grouping criteria your packers would have chosen anyway
Walk the floor before you decide this. The right grouping is whatever makes one pass through the shelves produce the most complete orders.
Four that work in practice:
- Single-line orders, by SKU. The highest-value batch you will build. One-item orders don't need to be picked individually at all. Pull 60 units of the hero SKU in one trip, bring them to a bench, and pack against slips. If a BFCM promo is driving a bundle or a doorbuster, half your order volume can land here.
- Product type or collection. If apparel lives on one side of the unit and accessories on the other, a batch per zone halves walking distance. You can group orders by product type on Shopify through the order filters, or more reliably by tagging orders at creation with the dominant product type and filtering on the tag.
- Shipping speed. Expedited and anything with a carrier cutoff gets its own batch and gets worked first. UPS and FedEx pickups don't wait for you, and a 2-Day order that misses the truck turns into a refund request plus a return.
- Location. If you have two warehouses, or a warehouse and a retail store doing overflow, this one is mandatory rather than optional.
What we don't recommend: batching by order value, by customer segment, or by anything marketing cares about. The batch exists to serve the pick path. Segment in email, not in the warehouse.
What 250 orders looks like on Cyber Monday: the arithmetic
Take a store doing 250 orders on Cyber Monday against a 400-SKU catalog. Typical shape: 150 single-item orders, 70 two-item, 30 with three or more lines.
Pick each order discretely and you're walking the floor 250 times. At four minutes per order door to door — pull slip, walk, pick, return, pack, label — that's 1,000 minutes. Sixteen and a half hours. Two packers, full day, no lunch.
Now batch the 150 single-item orders by SKU. Those 150 units probably span 20 to 25 SKUs, because BFCM demand concentrates hard. One picker pulls all 150 units in roughly 35 minutes. Packing at a bench against pre-printed slips runs about 50 seconds each: 125 minutes. Total for the batch, 160 minutes. The same orders picked one at a time would have taken 600. You've saved just over seven hours on the easiest 60% of your volume.
The remaining 100 multi-line orders stay roughly where they were, maybe a little better if you batch them by zone. Call the day 160 + 400 = 560 minutes instead of 1,000. One packer and a bit, not two.
Check the numbers against your own pick times before you trust them. Measure three orders with a stopwatch on a normal Wednesday. Most merchants find their per-order time is worse than they assumed.
Print packing slips in bulk on Shopify, without killing the printer queue
Select the batch, print packing slips for all of it, one PDF. That part is easy. Three things make it go wrong at volume:
A 250-page PDF rendering in a browser tab will hang a cheap laptop. Split large batches into chunks of 50 to 75 and print them as separate jobs. It is slower on paper and faster in reality.
Second, edit the packing slip template before peak, not during it. The default includes everything and highlights nothing. Your packer needs SKU, variant, quantity and a bin reference in large type. Strip out the pricing block if you're shipping gifts — nobody wants a dollar amount in the box they're giving to their mother. That's a template edit in your shipping settings and takes an hour.
Third, print slips in the same sequence you'll pack. If the PDF comes out in order-number sequence but you pick by SKU, someone spends the evening sorting paper.
Shopify bulk buy shipping labels: where the real minutes are
Shopify Shipping lets you select multiple orders and buy labels in one flow, which on 250 orders is the difference between a two-hour job and a twenty-minute one. A few hard-won points.
Set package presets. If every label purchase asks you for dimensions, you'll either enter them wrong or default to one box size and overpay on dimensional weight for the small stuff. Three or four saved presets covering your actual box inventory, configured before Thanksgiving week.
Set weights on every variant. A missing weight either blocks the bulk purchase or produces a label at a guessed weight, and USPS and UPS will both bill you the adjustment afterward. Those adjustments land in January and they are deeply unfun to reconcile against a BFCM P&L you already closed.
Buy labels in the same chunks you printed slips in. A failed bulk label purchase partway through a 250-order run leaves you reconciling which ones actually bought, and the Shopify admin is not a pleasant place to do that at midnight.
And print test labels on your thermal printer the week before. Every year someone discovers on the Friday that their Zebra is producing labels at 50% scale because of a driver update.
Where batches break: the stock-out mid-pick
This is the failure mode nobody has hit yet, because the feature is new, but it's coming for a lot of stores on the 28th.
You build a batch of 80 orders at 9am. All 80 showed available stock when you created it. Creating a batch does not freeze anything — those units are still sellable, still being sold, and your Cyber Monday traffic has not stopped. By 11am your picker is at the shelf and there are six units where the system expects eleven. Either you oversold during the batch window, or your counts were already off, or returns processing put phantom units back.
What happens next is a process decision, not a software one. Decide it now:
- Pull the short order out of the batch and set it aside physically, in a labelled bin, not on a random shelf.
- Fulfill the rest of the batch. Do not hold 79 good orders hostage to one shortage.
- Tag the short orders — something like short-pick — so they filter into their own cleanup batch at the end of the shift.
- Decide your default: partial ship or hold. For most US D2C stores, partial-shipping a two-line order and following with the second item costs you a second label, maybe $6 to $9 on Ground Advantage, and saves a support ticket. Holding is cheaper on freight and more expensive on everything else.
This also breaks if inventory is split across more than one location and Shopify routes part of an order elsewhere. A batch filtered by location can contain orders whose second line item lives in the other warehouse. Filter by location and confirm it on a sample of ten before you build a batch of two hundred.
Shopify batch fulfillment limits, and the number you should test yourself
Don't take a cap from a blog post, including this one. Shopify's bulk action limits have shifted repeatedly and they differ by action — selecting orders, printing documents and buying labels are three separate ceilings, and the document-printing one is usually the first to bite.
Find your own numbers this week. Build a batch of 50. Then 100. Then 250. Note which step slows down, which one errors, and how long the PDF takes to render on the exact machine your packing station uses. Write the working chunk size on a card and tape it to the monitor. On the day, nobody should be discovering a limit.
Our working assumption going into this season is chunks of 50 to 75 orders per batch for document printing, with a parent grouping concept living in your tags rather than in the batch itself. Conservative, and we would rather be conservative on the single peak that carries the quarter.
Shopify fulfillment workflow customization around batches
Batches are more useful when something else is doing the grouping for you.
On Plus, Shopify Flow can tag orders at creation: order contains a product from the Apparel collection, tag it zone-a; order has one line item, tag it single; shipping method is expedited, tag it cutoff-today. Your morning batch-building then becomes three saved filter views and four clicks, instead of someone eyeballing an order list. If you're not on Plus, the same tagging can be done with a mid-tier automation app or a small private app, which is usually the cheaper answer than upgrading a plan for one workflow. We've built both; the custom app route makes sense when the tagging logic depends on something Flow can't see, like a bin map or a supplier lead time.
If you ship through a 3PL or ShipStation, ShipHero or similar, be clear about where the source of truth lives. Running batches in the Shopify admin while your 3PL runs its own wave picking creates two systems with opinions about the same orders. Pick one. For most merchants under roughly 500 orders a day, in-house batching in Shopify is enough and the 3PL just receives fulfillment requests. Above that, let the WMS lead and treat Shopify as the order feed.
Handling Black Friday volume when batching isn't the bottleneck
Batch fulfillment fixes the warehouse. It does nothing for the two things that actually sink BFCM weekends.
The first is a storefront that falls over at 8pm on Thanksgiving, when paid traffic and email hit simultaneously. A 2.4s LCP on a desktop test turns into something considerably worse on a mid-range Android over LTE with four tracking scripts loaded. Check that before you optimize packing.
The second is the support queue. Batching compresses the shipping work into a shorter window, which means your customers get tracking numbers in a tighter cluster, which means the "where is my order" wave arrives earlier and bigger. Staff for it. Send shipping confirmations with a realistic delivery estimate rather than the carrier's optimistic one, especially for Ground Advantage during the first week of December.
Questions we get asked in the week before peak
Can I change the grouping after a batch is created? Build a new one. Reshuffling a batch while people are picking against printed paperwork is how double-ships happen. Paper is the source of truth on the floor.
Should I batch by product type or by shipping speed? Speed first, product second. Build the cutoff-driven batches at the start of the shift, then organize the rest by zone. Missing a carrier pickup costs more than a few extra steps.
What about orders that come in while a batch is being worked? They sit in the next batch. Resist adding to a live one. Set batch-building times — 9am, noon, 3pm, 6pm — and hold the line.
Is this worth setting up if I'm doing 40 orders a day? Marginally. At 40 orders the savings are maybe 25 minutes. The reason to do it now is so the process is muscle memory when you do 250 in a day, which is exactly what Cyber Monday is for.
Pick a Tuesday in the next fortnight. Run three batches — single-line orders, expedited, everything else. Time each stage, note where the admin slows down, and write your chunk size on a card. If the rest of the stack needs a look before the end of November, a free audit covers speed, checkout and fulfillment settings together, and our US team works to Eastern time for anything that has to be fixed before the weekend.


