See Your Best and Worst Performing Products
The Product Performance tab lists every product (or every SKU) as a sortable, searchable table: sales, payout, margin, and stock health side by side. Sort it to find your best sellers, your worst returns, or stock that hasn't moved in months, then export the whole thing to CSV.
Applies to: Lite and up. On Free you'll see an upgrade option instead of this tab; see How to Upgrade Your Plan. CSV export is included on every plan that can open this tab.

Product view or SKU view: which do I use?
Toggle between By Product and By SKU at the top of the table.
- By Product groups all SKUs of a product into one row. Use this for a top-line view of how each product is doing.
- By SKU shows each variation as its own row, with Seller SKU and Combination in the sticky left columns. Use this to compare variants: sizes, colours, or marketplace-specific SKUs.
What do the columns show?
The table has two column groups, plus the sticky product columns on the left:
- Product image and Product Name. In SKU view, also Seller SKU and Combination.
- Sales & profit: Product GMV, Net Payout, Eff Margin, COGS, Net Profit, Profit Margin, Units Sold, Orders, Avg Price, Return Rate, Cancel Rate, Rev Share.
- Stock & last sale: Last Sold, Days Since Sale, and Capital Tied Up, always visible.
COGS, Net Profit, and Profit Margin depend on cost prices you've set per SKU. A cell shows a dash when some sales behind it have no recorded cost; see Set Your Cost Prices for why that doesn't mean something is broken. For TikTok rows, Net Profit falls back to Gross Profit (marked with an asterisk) since TikTok payout is reported at the shop level, and Profit Margin shows a dash because it isn't available for TikTok at the product level.
For KPI formulas, including the Effective Margin matched-denominator quirk, see Why Your Payout Doesn't Match Your Revenue.
On the last page of results, you may see an Unattributed row. It carries sales that couldn't be tied to one product: the listing was later deleted or relisted, the order predates Indexync tracking internal SKUs, or the order had no net item revenue to split, for example a fully discounted order. These amounts are real and already counted in your totals above; without this row, the visible product and SKU rows would add up to less than expected.
Per-store columns don't appear on screen. A breakdown by individual connected store (for example, Shopee SG's Product GMV separately from Lazada TH's) is available only in the CSV export, described below.
How do I find slow-moving or dead stock?
Tick Slow & dead stock only, next to the search box, to switch the table to a narrower view built for spotting capital sitting idle:
- Choose your window. A "no sales in ⟨N⟩ days" selector appears once ticked: 30, 60, 90, or 180 days.
- Capital tied up appears as a headline card above the table: the total value of stock behind the rows in this view, based on units on hand times cost price. If some rows have no cost price set, the card tells you how many and links to fix it, so the total is never silently understated.
- Columns reorder to lead with Last Sold, Days Since Sale, and Capital Tied Up, since that's what this view is for; sales and profit columns still follow.
- If nothing matches your window, the table says so and suggests shortening it rather than leaving you looking at a blank table.
Example: you tick the box with a 90-day window and find a product with S$3,200 in stock that hasn't sold in over six months. You didn't know that much capital was sitting idle until the headline card totalled it for you.
Which orders does the table count?
A line directly above the table states which orders the figures below cover, so you never have to infer it from a column name.
Every column counts orders by the date they were placed: Product Performance has no Count by control. Net Payout, Net Profit, and the margin columns cover only the part of that set which has been paid out, so a recent date range can understate them. The same line tells you how many of the rows shown have orders that have been paid out.
COGS is the exception: it covers every order in the range, settled or not, which means Net Payout minus COGS does not give you Net Profit (Net Profit uses the cost of the paid-out orders only). Both columns say so in their own tooltips.
Because the table counts by order date, these figures won't match the Financials page, which counts money by the date it landed. The note above the table says this outright and links straight through to Financials, so you can compare the two deliberately rather than by accident.
How do I sort the table?
Use the Sort dropdown for common views:
- Top Revenue: best sellers first.
- Top Net Payout: what's actually earning you the most.
- Highest Effective Margin: your most profitable products.
- Top Units Sold: highest volume products.
- Top Orders: most order count.
- Highest Return Rate: products with quality or fit issues.
- Highest Cancel Rate: products buyers regret.
- Highest Avg Price / Lowest Avg Price: price range scan.
- Longest without a sale: slowest-moving SKUs, oldest first.
- Most capital tied up: SKUs holding the most stock value.
The selected preset shows in the dropdown as the current sort name. You can also click any column header directly to toggle that column's sort direction.
Example: you sort by Highest Return Rate and the first row is a T-shirt at 22% returns versus your 4% average. Click into it; Product Analysis shows the issue is concentrated on one SKU (size S) across both Shopee and Lazada. You check the size chart and fix the listing.

How do I search the table?
The search box (Search by product name or SKU...) filters in real time. In Product view it matches product name only. In SKU view it also matches Seller SKU, but not the Combination text, so searching a variant description like "Red, L" won't find it; search by product name or Seller SKU instead. Matching is partial and case-insensitive. Combine with sorting and date range to drill in.
Default is 25 rows per page. Use the Rows per page dropdown to switch to 50 or 100. Page controls are at the bottom of the table.
What does "Compare to previous period" change?
When you tick Compare to previous period in the page header, every metric cell shows a small delta line below the value:
- Magnitudes (revenue, units, orders, payout): percentage change versus the previous period.
- Rates (return rate, cancel rate): percentage-point change, which avoids a misleading "100% growth" when you go from 0.5% to 1%.
See See Which Marketplace Actually Makes You Money for how the comparison range is computed.
How do I drill into one product?
Click any row to open the Product Analysis tab, pre-filtered to that product (or SKU). Useful when you spot something here and want to understand why. See See How a Single Product Performs Across Every Store for the heatmap and trend charts available there.
What's in the CSV export?
Click Export CSV in the page header to download the table data. The dropdown has three options:
- By Product: one row per product. File name:
indexync-analytics-performance-by-product-{start}-to-{end}.csv. - By SKU: one row per SKU, including Seller SKU and Combination. File name:
indexync-analytics-performance-by-sku-{start}-to-{end}.csv. - Both (2 files): downloads both at once.

Each file carries more than what's on screen:
- Every on-screen metric, plus Last Sold, Days Since Sale, and Capital Tied Up.
- Per-store breakdown columns (for example, "Shopee SG Product GMV" or "Lazada TH Units Sold") for each connected store. This is the only place per-store figures appear; there's no on-screen equivalent.
- Total Fees, Effective Fee Rate, and Avg Payout / Order, which also don't appear on screen.
- Fees Exceed Revenue, marked "Yes" on any row whose fees for the period exceeded the revenue behind them: usually a refund, an adjustment, or an attribution issue worth a closer look.
- Profit Note, marking any row where Net Profit is really Gross Profit (the TikTok case above).
COGS, Net Profit, and Profit Margin are blank on rows where the figure isn't available on screen either, for example when some sales have no recorded cost. A blank cell means "we cannot state this," never zero.
Selling in more than one currency. Blended columns such as Product GMV, Avg Price, and the profit columns are converted to your main currency, matching the page. Per-store columns stay in each store's own currency, since that's what the marketplace actually paid you. A blended cell is left blank if a currency in it has no conversion rate available, rather than silently dropping that store from the total.
Below the data rows, each file ends with a short provenance block: the date range it covers, which orders are included, and how currency was treated. It sits below the table so the header row stays first and the numeric columns stay summable.
Troubleshooting
My product isn't in the table. It's outside the current date range, filtered out by your store or marketplace selection, or has zero orders in the period. Adjust filters and check the date range. If product rows look right but totals don't seem to add up, check the Unattributed row on the last page: it carries sales that couldn't be tied to one product, and is already counted in your totals above.
A column shows a dash. For most metric columns, this means the store's currency couldn't be converted to your main currency for that aggregate; see Managing Your Account to set your main currency. For COGS, Net Profit, or Profit Margin specifically, a dash usually means some of the sales behind that cell have no recorded cost; see Set Your Cost Prices.
I can't find a variant by searching its color or size. Search doesn't match the Combination text. Search by product name or Seller SKU instead, then scan the Combination column in the results.
The delta lines aren't showing. The Compare to previous period toggle is off, or the selected date range exceeds 3 months (comparison is disabled beyond that). Shorten the date range or tick the toggle from the page header.
FAQ
How do I find my best-selling products?
Sort by Top Revenue or Top Net Payout in the Sort dropdown. Top Revenue ranks by Product GMV; Top Net Payout ranks by what actually landed in your payout after fees.
How do I find stock that isn't selling?
Tick Slow & dead stock only, choose a no-sales window (30, 60, 90, or 180 days), and sort by Most capital tied up or Longest without a sale. The headline card totals the capital sitting in that stock.
Why can't I search by color or size?
The search box matches product name, and in SKU view, Seller SKU. It doesn't match the Combination column, so a search for "Red, L" won't find that variant. Search by product name or Seller SKU instead.
Why don't I see per-store columns on screen?
Per-store breakdowns exist only in the CSV export. On screen, blended columns like Product GMV already combine every store's figures into your main currency.
What's the difference between By Product and By SKU view?
By Product groups every SKU of a product into one row, for a top-line view. By SKU shows each variation separately, so you can compare sizes, colours, or marketplace-specific listings against each other.
Related Articles
- See Which Marketplace Actually Makes You Money
- Why Your Payout Doesn't Match Your Revenue
- Set Your Cost Prices
- See How a Single Product Performs Across Every Store
- Managing Your Account
- How to Upgrade Your Plan
Need More Help?
Visit our Feedback page, WhatsApp us, or email hello@indexync.com with your account details and any questions about the Product Performance tab.