How it works
From the card you watch to the alert you act on.
GrailPing sits on top of the same TCGplayer market data that grading forums and price-trackers cite. The difference: instead of asking you to refresh a chart all day, it watches in the background and pings you the moment your conditions are met.
01
You build a watchlist
Search by card name, narrow by set, and pick the printing you care about. We resolve every entry to a canonical TCGplayer product so prices stay consistent across variants and reprints.
02
We pull market history
On add, GrailPing fetches recent market / low / mid / high history from PokemonPriceTracker so your chart isn't empty on day one. New scrape snapshots layer on top as time goes by.
03
You set thresholds
Pick an absolute price target ($170), a percent move (−5% in 24h), or both. Thresholds are evaluated against the freshest snapshot, so a single dip doesn't fire repeatedly — alerts only re-arm once the market crosses back.
04
A scheduled scrape refreshes the data
Inngest runs the scrape on a recurring schedule. Each fetch is retry-bounded, timeout-guarded, and rate-limit-aware so we never get throttled by upstream APIs. You can also force-refresh a single card from its detail page.
05
Alerts fire to where you actually look
Per-user Discord webhook + transactional email. Discord pings are tagged with the card, the move, the comp, and a one-click link out. Failures are recorded — you can see what got delivered and what didn't.
06
Lists stay shareable, securely
Every list can publish a read-only share link with a rotating token. The raw token is shown once at creation; only a SHA-256 hash is stored. Rotate or revoke any time.
Data sources, briefly
- PokemonPriceTracker — TCGplayer market/low/mid/high snapshots and 90-day history.
- pokemontcg.io — canonical card metadata, set/variant data, fallback TCGplayer price block when PPT can't resolve a product.
- eBay Browse API — active-listing comps (roadmap; not yet live).
Ready to set up your first watch?
Sign in with Google or GitHub. Add a card. You're done.