How we keep 16+ distributor feeds honest
Every price and stock number you see comes from a file or an API that a distributor publishes. We don't control those feeds. Sometimes they arrive late. Sometimes they arrive half-finished. Once in a while one arrives empty and looks perfectly normal.
This is what happens between their feed and your screen, and two times it went wrong.
How often we check
Each distributor has its own schedule, based on how often they publish. The fastest we check is every 15 minutes, and the slowest once a day. Most are hourly or every two hours. On top of that, every distributor's full catalog, with titles, images and descriptions, gets a complete refresh once a day.
The schedules are staggered by a few minutes each, so sixteen syncs don't all hit at the top of the hour.
Only moving what changed
A distributor catalog runs to tens of thousands of items, and in a typical sync only a few hundred of them change. So we don't rewrite the whole catalog every time.
Each item gets a fingerprint made from the fields that matter for that distributor, like price, quantity and title. On every sync, we compare the new feed to the last one:
- A new SKU gets added.
- A SKU whose fingerprint changed gets updated.
- A SKU that's missing from the new feed gets marked inactive.
- Everything else is left alone.
Every price change and stock change we find is also written to a permanent log, one row per change per product per distributor. That log is what powers price history, Restock Intelligence and the trend on your dashboard. It holds more than 8 million changes so far.
When a feed arrives empty
Comparing each feed to the last one is efficient, but it has a weak spot. It trusts the feed.
On May 8, 2026, Sports South's system had a login problem on their end and returned a perfectly valid, perfectly empty response. No error, just no products. By the rules above, every product missing from the feed gets marked inactive, and that's what happened. Around 58,000 listings disappeared from search.
The fix went out in May. Now, if any distributor's feed comes back with zero items while we still have an active catalog for them, we don't touch the catalog. We keep what we had until a real feed shows up. That check covers every distributor.
When a feed arrives half-finished
That fix only catches a feed with nothing in it. On July 11, 2026 we found the case it misses.
Zanders publishes a stock file every five minutes. That day, one download over FTP was slow enough that we got only part of it, and the rows that came through read as zero quantity. The sync did what it was told and marked about 35,000 Zanders products out of stock.
Then it got worse. The next good file came in, and the sync compared it to the last good file we'd saved, found nothing different, and changed nothing. Our database still said zero. For about ten hours, dealers searching those products saw Zanders as out of stock when Zanders had them.
We shipped two fixes on July 14:
- A circuit breaker. Before applying a Zanders stock update, we count how many in-stock products it would take to zero. If that's more than 20% of what's in stock, with a floor of 50 products so normal day-to-day churn can't trip it, the update doesn't run. The catalog stays as it was, and we get an alert. A normal sync zeroes a few dozen products. That bad file would have zeroed thousands.
- An hourly check against the database. Once an hour, we download Zanders' current stock file and compare it straight to what's in our database, not to the last file. Anything that doesn't match gets corrected. The same circuit breaker runs first, so a bad file can't cause the problem the check exists to fix.
Since late September the circuit breaker runs on every distributor's sync, as does the empty-feed check. The hourly re-download is still Zanders-only, because Zanders is the feed where this happened.
Why we're telling you this
Stock data is only useful if you trust it. You'd trust it less if you found out about outages like these from a customer who couldn't get a gun you said was out.
If a number on your screen doesn't match what a distributor's own site shows, contact support and tell us. That's often how we find the next edge case.
- Behind the data
- Distributors