Home Help centre Results and history

What "For review" means, and how to clear it

Results and historyUpdated 3 September 2026

"For review" means Everstock found records it could not act on safely, so it listed them instead of guessing. Nothing was written to Shopify for those records, and no existing stock level was changed. A run can finish with status Success and still have items for review.

Where review items live

There is no separate review queue. Review items belong to the run that produced them.

The quickest way in is the Dashboard. When a recent run left review items, the Needs attention section shows a Review badge and a count for the last 7 days, linked straight to the run that produced them.

You can also start from Sync history, where the Review column carries a count per run. Open the run, scroll to the audit table at the bottom of the page, and set the Item status filter to Review. The table then shows only those rows, and its heading counts them. The Change column names the reason (Unmatched, Duplicate, Not found in supplier, or Not stocked at location) and the Message column repeats it in words. Download CSV exports every audited row for that run, whatever the filter is set to, but it carries the stored values rather than the words the table prints: look for unmatched, duplicate, not-found-in-supplier, not-stocked-at-location and review in the reason and status columns.

Review items also appear in the preview that opens after Preview changes, carrying the same Review status badge, so you can see them before running a real sync. That preview has no reason column, so open the run itself when you need to know why a record was listed.

Review is the safety mechanism, not an error

Everstock matches records on barcode first, then SKU. That key is fixed and there is nothing to configure. When a record cannot be matched, or when a product in your store is not in the supplier feed, it goes to review rather than to a write. This is why a short or empty feed can never zero your stock: unmatched store rows are surfaced for a human, never turned into a write.

Unmatched

The record had nothing to match on. A supplier row with no SKU and no barcode lands here, and so does a variant in your store that has neither. The message reads "no matching key".

This is usually mapping, not the supplier. Open the connection, go to Field mapping, check that a supplier field is mapped to SKU and, if the feed carries one, to Barcode, then choose Save mapping. To confirm, use Preview changes: it runs the whole pipeline and writes nothing, so you can see whether the same records come back for review. On a saved connection, Test connection only checks the credentials and the base URL. The per-record preview that flags "no matching key" row by row belongs to the Connect a supplier page, where Test connection also previews the sample it fetched. If the feed genuinely carries no identifiers, ask your supplier for them. If your own variants are missing a SKU or barcode, add them in Shopify.

Duplicate

Two supplier records resolved to the same key. The message reads "duplicate supplier key". Everstock uses the first record it saw and flags the rest, so it never has to guess which quantity is the right one.

Ask the supplier to deduplicate the feed. Also check your mapping: a field that is not unique per item, such as a model or part number mapped to SKU, will produce duplicates on every run.

Not found in supplier

The product exists in your store but was not in this supplier's feed. The message reads "present in store, absent from supplier feed", and its stock is left exactly as it was.

Everstock reads every variant in your store, so products from other suppliers, and your own products, appear here on every run. That is expected and needs no fixing.

When an item should have been in the feed, compare the identifiers on both sides. Because barcode is tried first, a store variant that has a barcode will not match a supplier row that only carries a SKU, even when the SKUs are identical. The fix is to make the barcode present on both sides or on neither. Otherwise the item may simply have been discontinued or dropped from the supplier's catalogue.

Not stocked at location

The supplier record matched a product in your store, but that variant holds no stock at the location this connection syncs to. The message reads "matched in store, but not stocked at this connection's location", and nothing was written.

Everstock reads and writes stock at one location per connection, shown as Shopify location in the Sync scope & schedule section of the connection page. A variant that has never been stocked there has no quantity to compare against, and writing one would start stocking it at a location you did not choose to stock it at. That is your decision to make, not the sync's.

Two fixes, depending on what you meant. If the variant should be stocked at that location, add it there in Shopify from the product's inventory settings; the next run then syncs it normally. If it belongs at a different location, change the connection's Shopify location, or add a second connection for that location.

If a variant sits at a different location for every run and you do not want to see it again, add its SKU or barcode to the ignore list below.

Using the ignore list

Use Ignore list (optional), in the Sync scope & schedule section of the connection page, for supplier records you never want Everstock to touch. Enter comma-separated supplier SKUs or barcodes, matched exactly as they appear in the feed, with the placeholder showing the format e.g. SKU-123, 0123456789012. Save through the Shopify save bar at the top of the page. Ignored records are dropped before the comparison, so they are never written.

One thing to know: the ignore list filters the supplier side only. Your store product is still read on every run, so it can still appear as Not found in supplier afterwards.

Need help? Visit the support page or email hello@usenormalize.com.