{"status":"operational","statusReasons":[],"statusSummary":"Alerts are going out. 418 of 419 stores are answering our checks.","pipeline":{"healthy":true,"lastAlertAgeSec":36},"storeCoverage":{"healthy":true,"stores":419,"answering":418,"notAnswering":1,"notAnsweringBy":{"EMPTY_CYCLES":0,"CURRENCY_GATE_DARK":0,"STORE_LOCKED":1,"WRONG_MARKET":0,"OVER_FAIL_THRESHOLD":0,"NO_RESULT":0},"share":0.998,"floor":0.9},"brands":243,"stores":419,"storesAnswering":418,"brandsCatalogued":252,"sourcesCatalogued":495,"products":421191,"productsCatalogued":533412,"priceReadings":356454,"priceHistoryFirstAt":"2026-05-21T22:53:57.778Z","priceHistoryDays":142,"alertsLast24h":1721,"alertLatency":{"sample":3551,"medianSec":16,"p90Sec":30,"withinOneMinute":97,"withinFiveMinutes":99,"withinFifteenMinutes":99,"withinOneMinuteCount":3431,"withinFiveMinutesCount":3529,"withinFifteenMinutesCount":3543,"windowDays":7},"speedClaim":{"medianMinutes":1,"medianSec":16,"withinFifteenMinutes":99,"withinFifteenMinutesCount":3543,"sample":3551,"windowDays":7,"short":"half inside a minute, 99% inside 15 minutes","sentence":"Half of new listings are on Dropify inside a minute of the store publishing them, 99% inside 15 minutes."},"definitions":{"alertsLast24h":"every alert sent in the last day: drops, restocks, sell-outs, price moves, shows and releases. An alert withdrawn as stale (a first read of a listing announcing state it had held for weeks or months) is left out","alertsLast1h":"every alert sent in the last hour, every kind, leaving out any withdrawn as stale","brands":"brands with at least one live store","brandsCatalogued":"every brand on record, including those whose stores are all paused","stores":"stores that are not paused or hidden and carry at least one visible product","storesAnswering":"of those stores, the ones whose recent checks are returning products: under the failure threshold and carrying none of the sourcesBlind codes","sourcesCatalogued":"every store record on file, including paused ones nothing is watching — not a coverage figure","products":"visible product documents on the stores counted in `stores`; listings on paused or hidden stores are left out","productsCatalogued":"every product document on file, including delisted ones no longer shown","priceReadings":"rows in the price ledger","priceHistoryFirstAt":"the instant of the first row in the price ledger","priceHistoryDays":"whole days from the first ledger row to now, floored","productsWithSeries":"products the ledger has recorded at two or more distinct prices","priceMoves24h":"price-ledger rows in the last 24 hours where a store raised or cut a price from the price it was selling at, however long that price had held. A move whose row records when a read last found the price it started from counts only when that read was within the day before the move. On rows that do not record it, the scraper compared a listing only with a stored reading of it that a read of the store had reached within the day before, and wrote a listing no read had reached for longer from its next read without recording a move; at a store whose currency guard holds a price it cannot confirm, such a read can reach the listing without finding its price, so a move on those rows can start from a price last found more than a day before. A move measured against a reading in another currency is left out. So is a move that cannot be told apart from a switch between two of the listing's variants: one measured from a reading of another variant, or from the previous variant's price carried onto the new one when the listing's price passed to another of its variants, before any read found that price as the new variant's own. So is a move that the listing's next move put straight back within a day, and that next move with it. So is a move between two prices the listing keeps going back and forth between: before the move, it had already gone from the lower of the two back up to the higher at least twice while it could be bought. Sell-outs, restocks and variant swaps at an unchanged price are left out too","sourcesBlind":"stores that are not paused, hidden ones included, under the failure threshold and carrying one of four codes. EMPTY_CYCLES: not returning products on every check, meaning at least half of the checks in one five-minute window came back without products and no window since has returned products on every check; some of these stores return products on other checks and some on none. CURRENCY_GATE_DARK: 20 checks or more in a row were set aside because the store showed prices in a currency other than its own. STORE_LOCKED: the storefront is behind a password page. WRONG_MARKET: almost none of the store's listings are for sale in the country it is checked in, at most one in twenty, so those checks are set aside. Counted over every store that is not paused, so it is not a split of `stores`; storeCoverage.notAnsweringBy splits `stores` by the same codes","sourcesHealthy":"stores that are not paused, hidden ones included, under the failure threshold and carrying none of the sourcesBlind codes. Counted over every store that is not paused, so it is not a split of `stores`; storesAnswering is the same test asked of `stores`","distinctSources":"store records the price ledger holds at least one row for, paused and hidden ones included — not a coverage figure","status":"operational when a product alert went out in the last hour and at least 90% of live stores are answering; degraded when either is not true, and statusReasons says which","storeCoverage":"stores answering as a share of the live stores, with the floor the status verdict holds it to (90%)","notAnsweringBy":"storeCoverage.notAnsweringBy: the live stores in `stores` that are not answering, by reason, read in the same pass as storesAnswering so the parts sum to storeCoverage.notAnswering. EMPTY_CYCLES: not returning products on every check. CURRENCY_GATE_DARK: showing prices in a currency other than its own. STORE_LOCKED: behind a password page. WRONG_MARKET: almost none of its listings for sale in the country it is checked in, so those checks are set aside. OVER_FAIL_THRESHOLD: at or over the failure threshold. NO_RESULT: no failure count on record"},"coverage":{"brands":243,"brandsCatalogued":252,"sources":{"total":495,"healthy":418,"paused":76,"failing":0,"blind":1},"products":421191},"alerts":{"last1h":26,"last24h":1721},"priceIntelligence":{"points":356454},"generatedAt":"2026-10-11T18:45:47.252Z","servedAt":"2026-10-11T18:46:07.039Z"}