CatalogLint
Checks a CommerceML export before it reaches an online store: prices with no product, duplicates, and a partial export that looks like a mass deletion.
A gate before the warehouse
Products and offers ride in pairs. An offer with no product drops into a tray, and the shrink lever closes the barrier if more than 20% of the catalog vanished.
Why
When an exchange fails, prices arrive without products, an item is duplicated, and a partial export looks like a mass deletion. CatalogLint checks this before import and exits non-zero, which can stop the import.
Catalog shrink
With the previous full export at hand, it compares the two. If more than 20% of previously active products vanished or were marked for deletion, that is an error. The threshold is configurable, and partial exchanges are refused so a missing product isn’t mistaken for a deletion.
Under the hood
- One catalog and one offer package with matching ids.
- Repeated and missing product and offer ids.
- Prices: empty, unknown types, repeated levels.
- A catalog shrink threshold, 20% by default.