Am I the only one who has trouble generating reports for unfulfilled items? Here is the summary from my chat with Sidekick.
The issue: When filtering reports by fulfillment status, the filter operates at the order level, not the line item level. This means orders with a status of “Partially Fulfilled” are excluded from “Unfulfilled” reports — even if they contain items that have never been shipped.
Real example from my store: Order #2312 (GatewayStamp.com) contains 25 items. 24 are fulfilled, but 1 — the “Vladimir Guerrero Un-Signed Hall Of Fame Gateway Stamp Cachet Envelope” — remains unfulfilled. This order does not appear in any unfulfilled items report because its order-level status is “Partially Fulfilled.”
Requested fix: Please add line item-level fulfillment filtering to Shopify Analytics so merchants can report on exactly which items — regardless of order status — have not yet been fulfilled.
This is a fundamental inventory and operations reporting need for any merchant managing large or complex orders.
I can not even find how to submit merchant feedback for this. The AI bot gave me a link with a 404 error and suggested pages I can not find.
I just want to see exactly which individual items haven’t shipped, regardless of the overall order status. If I change the report to include partial fulfilments also, I get all 25 items with no way to distinguish which ones have been shipped.
Is there a field to add whether the item has a tracking number, in transit, or delivered? That would solve the problem too. I could not find those filters in the report options.
Your read on the filter is right. The report filters sit at order level, so a partially fulfilled order is either fully in or fully out, and there is no middle setting that splits the rows inside it. That is why including partials hands you all 25 lines with nothing to tell them apart.
The place that does hold it per item is the orders CSV export rather than Analytics. Orders with several line items export one row per line item, and there is a separate Lineitem fulfillment status column sitting alongside the order level Fulfillment Status one. So on 2312 you get 25 rows, 24 showing as fulfilled on that column and the Guerrero cachet not. Filter Orders to include both Unfulfilled and Partially fulfilled, export, then sort on the Lineitem column in a spreadsheet. That is exactly the list you described, unshipped items regardless of what the order header says.
Worth knowing before you go looking for it, the tracking side is not in that file. The standard orders export has no tracking number, tracking company or tracking URL column, so in transit and delivered cannot be answered from it at all. Those live on the fulfillment record rather than the order, which you reach through the API or an export app that pulls fulfillment lines as their own rows.
If you want it scripted instead of by hand, the field to read on the Admin API is unfulfilledQuantity on LineItem, which returns the units not yet fulfilled. Skip fulfillmentStatus on the line item, it is deprecated and will send you down the same order level path you are already stuck in.
On the dead link, the AI sent you nowhere useful. Requests get read on this forum under the product-feedback tag. Reposting the line item filtering ask there with the 2312 example would be the closest thing to a working channel at the moment.
How many partials are you carrying in a normal week? Under a few dozen the export route holds up fine, but past that people usually end up scripting it because the spreadsheet step stops being worth doing by hand.
Yeah, this is a real limitation, not something you’re configuring wrong. Native fulfillment reports filter at the order level, so an order marked “Partially Fulfilled” drops out of the “Unfulfilled” view even though it still has items that never shipped. There’s no native report that breaks it down to the line-item level.
Building on what Lumine said, one thing worth knowing if you go the API route: there’s an unfulfilledQuantity field on each line item (“units not yet fulfilled”), which is the cleanest signal for “what’s still unshipped.” There isn’t a direct “fulfilled quantity” field, so if you need that number you derive it from currentQuantity minus unfulfilledQuantity minus nonFulfillableQuantity. Slightly annoying but reliable.
The tracking part is the reason no single report can do what you want. Unshipped quantity lives on the line item, but tracking lives on a separate Fulfillment object (trackingInfo for the carrier/number/URL, and displayStatus for the in-transit or delivered state). So a real “unshipped items plus tracking” report has to join two different objects, which is exactly why the built-in reporting can’t surface it in one place.
If you don’t want to touch the API, the lowest-effort version of Lumine’s tip is to skip the export: filter your Orders list to Partially Fulfilled, turn on the line-item fulfillment status column, and eyeball it there. Fine for a quick daily check, not great once you’re at real volume. For anything ongoing you’re basically choosing between that manual view and a small script against the API.
Hey, @ChipWiley
Hope you are doing great!
You’re definitely not alone. Order level fulfillment reporting becomes a real problem when partially fulfilled orders contain outstanding items. Line item level filtering would make these reports much more useful for inventory and fulfillment teams. Hopefully Shopify adds this soon.
Thank you for the information & advice. The partials are under 30. I ended up combining the Unfulfilled report and partials by hand & deleted any fulfilled items in the partial. Thankfully, the products I was running the searches for were not extensive, so I could eyeball the deletions.
For the immediate job, I would not jump straight to the API. Export orders that include both Unfulfilled and Partially Fulfilled, then filter on the line-item fulfillment status rather than the order-level fulfillment status.
If you want to learn the API, start read-only in a development or test store. Pick one known partial order and query only the order name, line-item quantities, and fulfillment records. Compare that result with the CSV before writing or automating anything.
That makes the order-level reporting limitation much easier to see, without putting production inventory at risk.
Hello there @ChipWiley
This is a legitimate limitation of reporting when the determination of fulfillment status occurs at the order level rather than line item level. For the time being, I’d suggest you rely on the order and fulfillment information you can get access to through Shopify Admin to find partially fulfilled orders, and then check out those outstanding items one by one. For larger catalogs, exporting the necessary order information to a spreadsheet can also simplify the process of filtering and reconciling outstanding quantities. It would certainly streamline this workflow if there was a line item level fulfillment filter in Analytics.