← RestockLatch Overview Open Live URL Checker

Set a Maximum-Price Restock Alert in Discord

Published & verified:

Direct Answer: To prevent overpriced marketplace listings and HTTP 503 false alarms from spamming your Discord channel, RestockLatch compares every live observation against your maximum price (maxPriceCents in USD, GBP, or EUR) and checks availability against last_confirmed_state. A Discord webhook alert is dispatched only when a supported product transitions to IN_STOCK at or below your maximum price.

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 Offer price and availability (such as verified product pages on adafruit.com and pololu.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_only or unsupported during the live URL check.

4. Related RestockLatch Compatibility References

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.