ShopifyQL sell-through report

I am trying to create a report in Shopify where I can see: product title, sell-through percentage, net units sold, beginning inventory (not all items arrive at the same time. We add items to inventory before they physically arrive based on purchase orders, so we increase stock in advance. However, not all purchase orders are fulfilled at the same time, which is where the problem lies, as I cannot clearly reflect this in the report), ending inventory (the stock level at the moment I pull the report), net revenue, gross margin, gross revenue, discounts, returns, and sell-through speed (from the moment a product is created in the system).

I filter the report by vendor (brand) and season: spring26, summer26, fall26, etc.

can someone help me correctly create the report, so I can pull the sell trough data correctly.

Hi @Butik_Alkmaar :waving_hand: I’m @PaulNewton shopify-partner with a range of merchant solutions.
You can reach out to me for shopify services.
To connect CLICK my profile-pic or visit my profile on the forums
ALWAYS include context in new communications, e.g. reference urls, posts urls, etc


Need a better name for this,
This seems more like order reporting more than inventoried based reporting by itself .

Burying the lead, strip fluff as much as possible to boil it down when troubleshooting or seeking services.

If your changing stock AND omitting sales on either end, is that even a sell through report , in shopifys metric .
It’s just now your seeing the consequences of that in trying to work that around with custom reporting.
If it’s used as a sell through report it’s one with distortion baked in , so will cause auditing issues for any one that runs a regular sell through report and compares it to this custom one.

If you can’t build it in ShopifyQL by itself,
There’s automation apps like mechanic scripting reports
Full custom https://tasks.mechanic.dev/?q=report
Or in tandem with ShopifyQL https://tasks.mechanic.dev/demonstration-query-analytics-data-with-shopifyql

Or possibly dedicated reporting apps like report toaster

@Butik_Alkmaar

What you want makes sense, but the tricky part is that Shopify’s standard reports usually mix inventory snapshots, sales flow, and purchase order timing in a way that makes sell-through hard to calculate cleanly, especially when stock is added before goods physically arrive.

A practical way to think about it is:

Net units sold = sold units minus returns
Beginning inventory = inventory at the start of the reporting window
Ending inventory = inventory at the time you run the report, or at the end of the reporting window if you use a snapshot

Sell-through % is usually calculated as:

(net units sold / beginning inventory) × 100

or, in some retail workflows:

(net units sold / (beginning inventory + received inventory)) × 100

The main issue in your case is this part:

Stock is increased in Shopify before the inventory is physically received.

That means Shopify inventory data may not reflect true “available stock received for sale” unless your PO receipt timing is tracked separately. So, if you use Shopify inventory as-is, the sell-through number can be inflated or distorted.

A practical setup would be:

Filter by vendor and season tag or metafield

Pull sales metrics:

  • Product title

  • Net units sold

  • Net revenue

  • Gross revenue

  • Discounts

  • Returns

Pull inventory metrics separately:

  • Beginning inventory snapshot

  • Ending inventory snapshot

Decide which sell-through formula matches your operations:

If inventory is only counted when physically available, use beginning inventory plus actual received stock.

If Shopify stock is pre-booked from POs, standard sell-through in Shopify will not be fully reliable without adjustment.

For sell-through speed from product creation date, that is usually more like a custom metric:

Net units sold / days since product created

or

Days from product created to first sale or sell-out threshold

So the hard truth is this: this is usually not a single clean native Shopify report unless your inventory receipt process is already aligned with actual arrivals.

If you are using ShopifyQL, you can get part of it, for example, sales-side data, but inventory snapshot logic and PO timing usually need:

  • Shopify inventory history

  • PO or receiving data from your inventory workflow

  • Or an external report, app, or export

A good next step would be to confirm:

  • How you mark season (tag, product type, metafield, or collection)

  • Whether you track actual received inventory dates outside Shopify

  • Whether you want sell-through based on booked stock or physically received stock

If you share that, people can suggest the best method.

We mark the season with tag (summer26 /spring26 / fall26 / etc.
We don’t track receiving dates outside of Shopify. We want sell trough based on booked stock.

Hopefully a report will be adjusted to our liking. It feels like it should be possible to put into a report how many stock i have left and what i started with on the first change to a product. together with the sell trough information

Hope to hear

It’s possibly by making a custom reporting process to meet custom needs.

Can you help with this?

@breezytee Yes, we can help with that.

What you want is doable in a custom report, but the main thing to be aware of is that Shopify does not keep a full history of past inventory levels through the API, it mainly gives the current inventory. So in practice:

  • Ending inventory is easy, because that is just the stock on hand when you run the report

  • Beginning inventory for an older date is only accurate if that stock level was already captured at that time

Since you mentioned you want sell-through based on booked stock, not physically received stock, that part is important too. If stock is added in Shopify before the goods actually arrive, then the sell-through will follow that booked-stock logic, which is fine as long as that is the number you want to track consistently.

For your case, the report can be built with filters like:

  • Vendor / Brand

  • Season (spring26, summer26, fall26, etc.)

And columns such as:

  • Product title

  • Net units sold

  • Gross revenue

  • Net revenue

  • Discounts

  • Returns

  • Gross margin

  • Ending inventory / current stock

  • Product created date

  • Sell-through speed, for example based on days since the product was created

For the sell-through %, the formula would usually be something like:

Net units sold / (beginning inventory + stock added)

The only tricky part is the beginning inventory. If you need this for past periods, Shopify alone usually cannot recreate that exactly unless inventory snapshots were already stored. If you need this going forward, then the clean solution is to save inventory snapshots so the opening and closing stock can be compared properly for each reporting period.