Read the per-record audit trail
The run detail page is the record of what one sync actually did, line by line. Open it from Sync history by clicking the supplier name in a run's row, from the run timestamp under Last run in a connection's Activity panel, or from the Open full run details link in the preview modal.
What is on the page
The heading names the run kind and the connection: it reads Preview before the connection name for a dry run and Run for a real one, with a status badge beside it. A dry run also shows an information banner reading "This run was a preview" and "Nothing was written to Shopify."
Run summary carries the outcome counts (Fetched, Applied, Skipped, For review, Failed) alongside Duration, and a line with Started and Finished. Dates are shown in UTC. It also names the fields the run deliberately left alone, for example "This run did not change: title, description, vendor, product type, tags, images.", and leaves that line out when everything is syncing. If the run recorded any notices or errors, they appear in a banner here.
Fetch log appears when the run logged supplier calls. It lists Endpoint, Duration, Rows, and Cache, where the Cache badge reads either Hit or Miss.
Per-record audit is the table itself. Its columns are Item, Change, Quantity, Price, Fields changed, Status and Message. Item shows the SKU, with the barcode under it. Quantity and Price are shown as before and after values, so a stock move reads 5 → 12. Prices are shown in your store's currency. Fields changed lists one line per other field that moved, like Title: Old name → New name. Message carries any note the run recorded for that record. While a run can still be undone, a last Revert column appears too. When a run saved no rows at all, the section shows an empty state in place of the table.
Runs recorded before supplier write-back was removed can still appear in your history: Run summary shows a Push badge on one of those. No new run of that kind can be created.
Reading the Change column
Change says why the record is in the audit. These are the values you will see most:
- Quantity changed: the supplier's stock was different from your store's. This is the ordinary stock write.
- Price changed: the stock did not change, but the price did. This only happens when price sync is on.
- Product fields changed: only other fields changed, such as the title or the SEO description.
- New item: the supplier's SKU or barcode is not in your store.
- New variant: a new size, colour or other option for a product you already have. See Sync products with variants.
- Collections: the product was added to one or more collections. See Add products to collections from supplier categories.
- Not in this feed: a product this connection synced before was not in the feed. It goes to review, and its stock is never zeroed. Products the connection never synced, such as another supplier's or your own, get no row.
- No SKU or barcode in the feed: the record had nothing to match on.
- Duplicate SKU or barcode in the feed: a second supplier record had the same key as one already seen. Everstock sets the later one aside instead of guessing. The first one still syncs.
- Already in your store under another identity and More than one match in your store: Everstock was about to create a product but found its SKU or barcode already in your store.
- No matching collection and Collection adds products automatically: a category could not be placed in a collection.
A group of variants that Shopify cannot build reads Too many options or Inconsistent options, and a new variant whose product Everstock could not pick reads Ambiguous group. The Message column explains each one in a full sentence. See What "For review" means.
Records that matched and needed no change are counted in the Skipped total on the run summary. They are not saved as rows, so the table does not list them.
The run's CSV also has an action column that names what Everstock did with each record, such as inventory-set, price-update, product-update, create or review.
Statuses and the Item status filter
Status is the per-record outcome. Applied was written to Shopify, or, on one of the historical push runs described above, accepted by the supplier. Planned is a write that was not sent: on a preview it says what a real sync would do right now, and on a held run it is a change Everstock stopped before writing. Review needs your judgement. Skipped means nothing was written for that record, for example a new item when Create missing products is off. Failed means the write that record belonged to did not succeed.
The Skipped count in Run summary covers both kinds of record the run left alone: the rows badged Skipped here, and the unchanged records the run had no reason to touch, which are never saved as rows. So the count can be higher than the number of Skipped rows, but never lower. Collection rows are not counted again, because their product is already counted.
Use the Item status dropdown above the table to narrow it. It defaults to "All statuses" and offers Applied, Planned, Review, Skipped, and Failed. While a filter is active, the table heading says how many items carry that status, and the table pages 25 rows at a time. Under the table, a footer line reconciles the rows with the run, saying how many came from the fetched records and how many were flagged for review; it is hidden while a filter is active or when the run left some review or skipped lines out, because in both cases the rows are no longer the whole run. Download CSV in the page header exports every audit row saved for the run whatever the filter says, with a matching key column the table does not show.
What a very large run keeps
Every change a run makes is saved, however large the feed. That covers each write, each write that failed, each planned change on a preview or a held run, and each product the rule for products not in this feed tagged or set to Draft. A revert of a large run therefore covers as much as a revert of a small one.
Review and skipped lines are saved up to 5,000 per run. A large distributor feed can produce far more, because every supplier item you do not sell becomes a skipped New item line while Create missing products is off. Review lines are kept first, then skipped lines, each in the order the run met them. When a run leaves some out, the banner in Run summary says how many, for example "Audit trail shortened: 12,340 review and skipped lines not kept. Every change this run made or planned is kept." The table footer then reads "This run's audit lists every change it made or planned. It keeps up to 5,000 review and skipped lines, so some of those are not listed. The outcome counts above still cover the whole run."
Only those lines are left out. The Fetched, Applied, Skipped, For review, and Failed counts in Run summary still describe every record the run handled, and the sync itself was not shortened. If you need every line for a very large feed, use the connection's ignore list so fewer records enter the audit.
An older run, saved before Everstock kept every change, kept its first 5,000 lines in the order the run met them instead, changes included. Its footer reads "This run reached the 5,000-record audit cap. Any records beyond it were not saved; the outcome counts above still cover the whole run."
Revert a run or one product
A sync can go wrong for reasons outside your store: a supplier export that reports zero for everything, a mapping pointed at the wrong column, a price list in the wrong currency. Revert run undoes what one run wrote, and Revert product undoes it for a single product. Both are on the run detail page: Revert run in the page header, and Revert product in the Revert column at the end of each audit row that wrote something. That includes a row for a product no longer in the feed that the run set to Draft or tagged. A revert works from the run's audit, which keeps every change the run made however large the feed, so a large run is covered as fully as a small one.
Revert is always previewed. Clicking either button opens a confirmation that asks whether to undo the changes and says what will happen. Preview revert then checks your store as it is now and builds a revert preview without writing anything. This page updates when the preview is ready; open it to see, row by row, what would change back and what would be left alone. If it looks right, click Revert now on the preview and confirm. Only then is anything written. The revert appears in Sync history with a Revert badge, it has its own audit trail, and it can itself be reverted.
What a revert changes
Stock moves back by the amount the run changed it. If a run took an item from 40 to 0 and you have received 2 since, the revert sets it to 42, not 40. If a run added 10 and 8 have sold since, the revert takes away what is left of those 10 and stops at zero rather than going negative, and the row says so. Stock is written with the same check a sync uses, so a sale that lands while the revert is writing makes the stock write fail instead of overwriting the sale. Nothing is written for stock that failed, so you can preview and revert again.
Prices and product details go back to their earlier values, but only if they still hold what the run wrote. This covers the price, the compare-at price, the cost, the weight, the title, the description, the vendor, the product type, the tags and the SEO title and description. If you or a later sync changed one of them after the run, that field is left as it is and the row reads "changed since this run". A revert never overwrites your own edits.
Products the run created are set to draft. They are never deleted, and their stock, price and details are left as they are, so you can check them and delete them yourself if you want to.
Products no longer in the feed get back what the rule changed. If the run's rule for products no longer in this feed set a product to Draft, the revert gives it back the status it had before the run, such as Active, unless its status changed after the run. If the rule tagged a product, the revert removes the everstock-not-in-feed tag and nothing else, so tags you added, before or after the run, stay. A product that was already a draft, or already had that tag, was not changed by the run, so the revert leaves it as it is.
Added variants, images and collections stay. A revert never removes something a run added. A variant the run added reads Skipped with the message "Everstock cannot undo an added variant yet", because Everstock cannot tell whether it has sold since. Collection changes read Skipped with "Everstock never removes products from collections or deletes collections". Images the run added are left in the gallery, and their row reads Skipped with "Everstock never removes images it added". Remove any of these in Shopify yourself if you want them gone.
Settings are not reverted. Price rules, field choices and schedules stay as they are now. Only values the run wrote to your store change back.
When a row is not reverted
Every row or field left alone is listed in the revert with the Skipped status, and the Message column says why. The usual reasons are that the value changed since the run, that the product is no longer in your store, that more than one product now shares the SKU or barcode, or, for stock, that an earlier revert of the same run already undid it, so it is never moved back twice. Stock is also left alone when the connection now syncs stock to a different location than the run did, and for runs made before revert was available, which did not record their location. A description or other long field is left alone when the run did not keep its full earlier value; runs from before revert was available kept only the first 200 characters.
How long you can revert
A run can be reverted for 30 days after it finished. The run detail page shows the date under the run summary. After that the full earlier values are cleared and the page reads "Revert unavailable: before-values expired". Previews, held runs and runs that wrote nothing have nothing to revert, so they do not offer it.
Need help? Visit the support page or email hello@usenormalize.com.