Home → Docs → Features → Read Catalog Profit

Read Catalog Profit

Last updated: September 23, 2026 By Aron Baczoni

Quick Reference

Inputs

Shopify orders, refunds and product catalog. Your product costs (per-SKU evidence, manual overrides, or store-wide fallbacks). Fulfillment and shipping-label costs from a connected 3PL or carrier. Payment gateway fee settings. Open briefings raised elsewhere in MarginOS

Outputs

A profit class for every product: Top Sellers, Quiet Earners, Margin Watch, Review & Retire, or Unclassified. Four 30-day summary figures: products showing, gross profit, catalog average gross margin, net units. A recommended Next Move per product. A ranked list of products whose margin math is not trustworthy yet, with the gross profit resting on them. A CSV export of exactly the rows on screen.

Outcomes

Know which products to price, promote, restock or retire this week. See how much of your reported profit is sitting on cost inputs MarginOS cannot vouch for, and fix the biggest ones first. Work one profit class at a time instead of scanning a whole catalog. Isolate the products whose returns are eating their margin. Share any filtered view as a link.

Catalog Profit is the screen that answers two questions about your products: where is your catalog’s money, and what do you do next? It sorts every SKU into one of five profit classes, ranks the SKUs whose margin math cannot be trusted yet, and lands your Command Center briefings on the products that produced them. It is organised as three tabs — Decide, Fix data and Briefings — and you work them in that order most days.

What Catalog Profit is

The Command Center tells you how the business did. Catalog Profit tells you which products did it, and which ones to touch this week. It is the SKU-level workboard: one row per product, with the profit figures MarginOS already computed for it, plus a recommended next move.

You reach it from Catalog Profit in the left navigation. Every figure on the screen is read from calculations MarginOS has already run — nothing is computed in your browser, so a number here always matches the same number everywhere else in the product.

The three tabs answer three different questions, and the tab you need depends on what you are doing:

Tab The question it answers What you do there
Decide Where should I work my catalog today? Every product in a profit class. Pick a class and work it — price, promote, restock or retire.
Fix data What data is lying to me? The products whose margin math is not trustworthy yet, ranked by how much reported profit is resting on them.
Briefings What is on fire, or a big opportunity? The product-related subset of your Command Center briefings. Acting on one filters the table to the SKUs behind it.

The Fix data and Briefings tabs carry a count, so you can see at a glance whether either needs you before you start making decisions.

Before you start

  • Your store is connected, so there are orders to measure — see Connect your Shopify store.
  • You have set your cost fallbacks, or MarginOS will have very little to work with — see Set your store-wide COGS, shipping and pick-pack fallbacks.
  • Everything on this screen is a 30-day view unless a column says otherwise.
  • The View control in the top right sets which business line you are looking at. Margin and profit are shown on the DTC lens only, because that is the only line where MarginOS models the full cost stack. Volume and stock are live on every lens.

How to work your catalog

  1. Check the View lens in the top right. DTC is the default and the one that carries margin.
  2. Look at the Fix data count first. If it is high, the classes on the Decide tab are describing products whose numbers you cannot yet stand behind. Repair inputs before you make pricing calls.
  3. Move to Decide and pick one class tab. The strip under the tabs tells you what that class is and what to do with it. Work one class at a time rather than scanning the whole catalog.
  4. Add the High Returns lens if returns are your problem. It narrows whichever class is open to its high-return products and swaps in return columns.
  5. Click a row to open that product’s full cost stack and history in a side drawer.
  6. Use Export view to download exactly the rows you are looking at as a CSV, including the return columns when the High Returns lens is on.
  7. Check Briefings for anything urgent. Acting on a card pins its briefing above the table and filters the table to the products it is about.

Every filter, lens and tab lives in the page address, so any view you build is a link you can bookmark or send to someone else.

The four numbers at the top of Decide

Tile What it counts Worth knowing
Showing Products matching your current filters, and how many of them actually sold in the last 30 days. The second number is usually much smaller than the first. That gap is normal — most catalogs have a long tail that did not move.
Gross Profit (30d) 30-day gross profit summed across the products shown. Follows your filters. If a Product Status filter is hiding products, the tile says so and tells you which way the hidden ones move the figure.
Avg Gross Margin (30d) Revenue-weighted 30-day gross margin after returns, across your whole catalog. Deliberately not filter-scoped — it is your catalog benchmark, so it does not move when you narrow the table.
Units (30d) Net units sold across the products shown, with returns deducted. Net, not gross. A product that sold 100 and had 20 come back counts 80 here.

On any lens other than DTC, the two money tiles read — rather than a number. That is the same principle as everywhere else in MarginOS: a figure we cannot model honestly is shown as absent, not as zero. See why MarginOS shows N/A instead of a made-up number.

The five profit classes

On the Decide tab every product sits in exactly one class, and the classes are tabs you open one at a time. The counts on the tabs come from the same classification that labels each row, so a tab count can never disagree with the table under it.

Class What it means What to do
Top Sellers High volume and strong margin. Keep them in stock, then test price increases and scale spend.
Quiet Earners Healthy margin, moderate volume. Feature, bundle or promote them to grow profit without adding discounts.
Margin Watch High volume but thin or negative margin. Fix costs or raise prices first — every sale here is leaking cash.
Review & Retire Low volume with weak or negative margin, or no sales at all. Clear inventory, then demote, replace or delist.
Unclassified The margin math is not trustworthy yet. Fix these in the Fix data tab before making pricing or scaling decisions.

High Returns is not a sixth class. It is an overlay lens that layers on top of whichever class is open, narrowing it to the products that come back most and adding columns for returned units, return rate and the profit those returns cost you.

Each row also carries a Next Move — a short instruction such as Fix cost data, Confirm fees, Investigate returns or Liquidate or retire. MarginOS picks one move per product, in a fixed order of priority: repair the data before you interpret the number, decide whether to keep the product before you investigate its returns, and only then touch price.

How MarginOS decides where a product goes

A product’s class is a read on two things at once: how much it sells and how much profit each sale leaves you. High on both is a Top Seller; strong margin without the volume is a Quiet Earner; volume without margin is Margin Watch; neither is Review & Retire.

The profit side of that read is Gross Profit (CM1) — revenue after the variable cost of actually delivering the order, not just product cost — expressed as Gross Margin % and as profit per unit. The volume side is real orders and net units over the last 30 days, with returns already deducted.

The important part is the fifth class. MarginOS will not classify a product whose cost inputs it cannot stand behind. If the landed cost is missing, or the resulting economics are implausible, or the inputs are too weakly evidenced to trust, the product lands in Unclassified instead of being given a class it has not earned. This is the same stance that governs the rest of the product: an unmeasured number is reported as unknown, never as zero, and never as a confident-looking guess. How MarginOS grades the strength of a cost is covered in the Defensible Profit Model and Data Trust levels.

Two product flags have their own methodology articles, because they are judgement calls rather than plain arithmetic: High Velocity, Low Yield and Too Close to Cost.

What the Fix data tab is ranking

Fix data sorts the untrustworthy products by GP in question — the 30-day gross profit currently resting on inputs MarginOS cannot vouch for. The sign tells you which way it leans: a negative figure is a suspicious loss, a positive one a suspicious gain. The ranking uses the size of the figure and ignores the sign, because a product overstating profit by four thousand dollars is exactly as wrong as one understating it by the same amount.

The tab separates real defects from disclosures. Missing cost, Suspect economics and Low trust are problems to fix, and a product is counted under the first one that applies, so the buckets never double-count. Store defaults and Has override sit beside them as separate lenses rather than issues — a store-wide assumption or a deliberate manual correction is a statement about where a cost came from, not a fault.

A separate chip, Shipping costs to review, covers a different kind of gap: shipping labels your carrier billed you for but could not match to any product, so their cost sits outside every SKU’s economics rather than inside one. It is not part of All issues and does not carry a GP-in-question figure, because there is no product to attach that figure to yet — see Connect ShipStation for how a label ends up here and how to write one off once it will never resolve. Unlike the rest of Fix data, this chip works on every business-line lens, not just DTC, since an unmatched label is a data gap regardless of which line the order belongs to. Costs that could not be attributed to any product at all in other ways are handled elsewhere: see why a cost landed in Unmapped Costs.

Example

You open Catalog Profit on a Monday. The Fix data tab reads 41, and its third tile shows roughly $12,000 of gross profit under review — so before touching prices, you spend twenty minutes there. Most of the 41 are under Missing cost: a supplier’s costs never landed. You add them, and those products drop out of the bucket.

Now you switch to Decide. The tiles read 1,240 products showing, 190 of which sold in the last 30 days, $86,400 of gross profit and a catalog average margin of 41.2%. You open the Margin Watch tab: 23 products, high volume, thin margin. Sorting by Gross Profit 30d puts a bestseller at the top with 610 units and a margin of 8% — it is moving a lot of stock and returning almost nothing per sale. Its Next Move reads Confirm fees, so you open the row and find the gateway fee assumption is a store-wide default rather than this product’s own evidence.

Finally you turn on the High Returns lens while still inside Margin Watch. Three of the 23 products account for most of the returns impact in the class. You export that view as a CSV and send it to your ops lead.

The numbers above are illustrative.

Common questions

Why do some products show a dash instead of a margin?

Because you are on a business-line lens other than DTC. MarginOS models the full cost stack — product cost, fulfillment, payment fees, refund fees — for direct-to-consumer orders. Wholesale, marketplace and retail lines carry costs MarginOS does not see, such as marketplace commissions and wholesale discount terms, so showing a margin there would be a guess dressed up as a measurement. Volume and stock still work on every lens.

Why does the Gross Profit tile not match the rows I can add up?

Usually because a Product Status filter is hiding part of your catalog. When that happens the tile tells you so directly, and states both the size of the hidden amount and which direction it moves the number — hidden losses mean the tile reads higher than reality, hidden profit means it reads lower.

Why does Avg Gross Margin not change when I filter?

By design. That tile is your whole-catalog benchmark, weighted by revenue and measured after returns, so you can compare the class you are working against the catalog as a whole. The other three tiles follow your filters; this one deliberately does not.

What is the difference between Unclassified and the Fix data tab?

They are two views of the same problem. Unclassified is where an untrustworthy product sits on the Decide tab; Fix data is the workbench where you repair it, with the specific diagnosis and a link straight to the part of the product record that fixes it.

Does closing a pinned briefing resolve it?

No. Close Signal View removes the pinned card and the filters it applied, and returns you to the unfiltered tab. The briefing itself stays open until it is genuinely resolved — this control changes your view, not your alerts.

Can I share a filtered view with someone else?

Yes. Every filter, class tab, lens and sort is held in the page address, so copying the URL reproduces exactly what you are looking at. Deep links from the Command Center work the same way in reverse — a briefing that mentions affected products opens Catalog Profit already filtered to them.

What happens if the catalog fails to load?

You get an explicit error with a Retry button, not an empty table. A failed load and a genuinely empty catalog look identical if you only show zeros, so MarginOS refuses to let a loading failure read as “you have no products”.

Related

About the author

Aron Baczoni

Founder of MarginOS, a Profit & Inventory OS for Shopify DTC brands who live and die by margin. Previously 11 years at Google across Ads and Global Business Operations, building large-scale systems. Now focused on giving DTC operators true profit by product, channel, and customer after COGS, 3PL, shipping, returns, and fees, and on showing exactly how much to trust every number behind those decisions.

Read Aron's story

Get Your Profit & Inventory Command Center

See your real margins in real time, not in spreadsheets.

Get your Profit & Inventory Command Center

Or email sales@marginos.com to see your real margins on your own data.