Set a Maximum-Price Restock Alert in Discord
Published & verified:
1. Verify Store Compatibility with a Live Observation
Before creating a watch rule, run an on-demand HTTPS check against the target product page. RestockLatch fetches the page with a 6-second hard deadline and inspects Schema.org JSON-LD Offer or OpenGraph availability metadata. Below is a sanitized live single-check observation recorded on for https://www.adafruit.com/product/5812 (and verified on https://www.pololu.com/product/4990 on ). Note: A single timestamped check proves structured Offer extraction for that check; the multi-step error-recovery transitions in Section 2 are verified via controlled state-machine test fixtures.
Live single-check observation (2026-11-04 UTC):
{
"ok": true,
"checkedUrl": "https://www.adafruit.com/product/5812",
"httpStatus": 200,
"structuredSource": "json-ld",
"observedState": "IN_STOCK",
"priceCurrency": "USD",
"monitoringSupport": {
"status": "supported",
"reason": "Public Schema.org JSON-LD Offer availability and price verified."
},
"observedAtUtc": "2026-11-04"
}
2. Controlled State-Machine Verification Sequence (Reproducible Test Fixture)
Instead of relying on an unverified external MSRP feed, you set your maximum price (maxPriceCents in USD, GBP, or EUR) for each watched product. Below is the controlled state-machine test fixture sequence verifying how RestockLatch handles baseline seeding, failed checks, and maximum-price filtering:
| Controlled Sequence | Transition Steps (Fixture) | Alert & Baseline Decision |
|---|---|---|
| 1. In Stock → Error → In Stock | Baseline IN_STOCK → failed check (HTTP 503 / 429) → HTTP 200 IN_STOCK |
No Duplicate Restock Alert: The failed check records last_poll_error without overwriting last_confirmed_state = IN_STOCK. Recovery to IN_STOCK does not emit a duplicate alert. |
| 2. Out of Stock → Error → Eligible In Stock | Baseline OUT_OF_STOCK → failed check (HTTP 503 / 429) → HTTP 200 IN_STOCK with observedPriceCents <= maxPriceCents |
Restock Event Dispatched: last_confirmed_state remains OUT_OF_STOCK across the failed check, then transitions OUT_OF_STOCK → IN_STOCK on the eligible observation and queues one Discord alert. |
| 3. Unknown Baseline → In Stock | Initial baseline UNKNOWN (unobserved listing) → first confirmed check returns IN_STOCK |
No Confirmed-Restock Claim: Seeds initial baseline availability without claiming an OUT_OF_STOCK → IN_STOCK restock transition. |
| 4. Out of Stock → In Stock Above Maximum Price | Baseline OUT_OF_STOCK → HTTP 200 IN_STOCK with observedPriceCents > maxPriceCents |
Suppressed (Above Your Maximum Price): Overpriced listings above your maximum price do not trigger a Discord notification. |
3. Store Compatibility Boundaries & Limitations
- Structured Offer Pages Only: Automated background polling requires public HTTPS product pages that expose Schema.org JSON-LD
Offerprice and availability (such as verified product pages onadafruit.comandpololu.com). - Per-Page Evaluation: Compatibility is checked per URL. Storefront layout updates or anti-bot rule changes can affect future polling.
- Unsupported Pages: Storefronts behind Cloudflare Turnstile challenges, CAPTCHAs, or client-only JavaScript rendering are flagged as
manual_check_onlyorunsupportedduring the live URL check.
4. Related RestockLatch Compatibility References
- Storefront Compatibility & Verification Reference Matrix — Full comparison of
supported,manual_check_only, andunsupportedstorefront patterns. - Live URL Check: Pololu #4990 — Test another verified structured-offer hardware page in the workspace.
Try It Live or Request Early Access
Run a live 1-click check on Adafruit #5812 in the workspace, or prefill a Monitor Plan request with your target product URL and maximum price.