All posts
·5 min read

Your Bot Webhooks Disappear. Here's How to Keep Them.


A Discord channel is a feed, not a database. Your bots post checkout webhooks into it, you read them in the moment, and then they scroll. To keep them you need a copy taken as they arrive, stored somewhere that is still there next month, running whether or not any app of yours is open. There are three honest ways to get that, and this post is about which one to pick.

What "gone" actually means

Nothing is deleted. The webhooks are still technically in the channel. That is not the same as having the data.

Try to answer a question with a Discord channel. What did you hit on the Ascended Heroes drop, and what did each one cost? Which profile has declined for billing mismatch more than once? Did that order from a fortnight ago ever actually charge? Every one of those means scrolling, reading embeds one at a time, and holding numbers in your head. With three channels across two bots, it is not a five minute job, so it does not get done.

Then there is search. Discord search is built for finding a message you half remember, not for aggregating 400 events into a hit rate. You cannot filter by profile and sum by drop. The information is present and unusable, which is the worst of both worlds because it feels like you have records.

And there is the part nobody plans for: bots get removed, servers get remade, channels get purged when someone tidies up. The feed you were relying on is one admin decision away from being empty.

The three ways to capture

Scrape it yourself later

Sit down after the drop, read your channels, type it into a sheet. It works exactly as well as your discipline does, which is to say it works for about two weeks. The failure mode is not laziness, it is timing: the moment you most want the record is mid-drop, and mid-drop is the moment you have the least attention spare.

A bot that reads the channel

Add something to your server with permission to read the channels your webhooks land in, and let it keep a copy. This is a good option because it changes nothing about your bot setup. Your bots keep posting where they always posted. The catch is that it only sees channels you point it at, and it only sees what was posted after you added it. It cannot go back and rescue history.

A relay in front of the webhook

Instead of your bot posting to a Discord webhook URL, it posts to a relay URL, and the relay both records the event and forwards it on to Discord. You get a permanent copy and your channels still light up exactly as before.

This is the strongest option, because capture happens at the source rather than depending on read permissions on a channel that might change. The cost is a one-time edit in each bot's settings. Worth knowing: you cannot subscribe to a Discord webhook, which is why the relay has to sit in front rather than listening in.

The part people underrate: it has to run when you are not there

Restocks do not respect your sleep. If your capture only runs while a desktop app is open, then a 4am drop is a drop with no record, and you find out when you go looking for it.

So the question to ask of any setup is simple. If my computer is off, does the event still get recorded? If the answer is no, the record has a hole in it, and holes in a record are worse than no record because you will draw conclusions from what remains.

That means the capture layer belongs somewhere always on. Not your machine.

What you can do once you actually have the data

This is the bit that justifies the effort, and it is worth being concrete.

  • Group by drop, not by day. A hit rate blended across a shock drop and a general release is a meaningless average. Grouped by site and product, it is a number you can act on.
  • Declines beside the wins. The failures carry most of the signal. A decline reason that repeats on the same profile across three drops is a profile problem, and you only see it when the declines are kept.
  • Profile breakdowns. Which profiles convert when they reach checkout and which have never landed once.
  • Order numbers, kept. So when a payment does not settle, or a confirmation email never arrives, you have the reference to chase instead of searching your inbox by vibes.
  • Payment issues surfaced. Some sites, Pokemon Center in particular, will take an order and then quietly fail the payment. Having the order numbers in one place is what lets anything watch for that.

How Reseller OS does it

The Checkouts panel supports both capture routes, and you can use either or both. Paste our relay links into your bots in place of the Discord webhook URLs, and your Discord still receives every webhook byte for byte. Or add the reader bot to your server and tick the channels it should watch.

Capture runs in the cloud around the clock, so the 4am restock is recorded with the desktop app closed. Events get sorted into drops by site and product automatically, with per-drop hit rates, profile breakdowns, decline reasons and a payment radar for Pokemon Center orders. It works with any bot that can post a Discord webhook, so you are not tied to one vendor.

It is deliberately read only. Captured checkouts never write into your Orders or Inventory. It is a record of what your bots did, not a bookkeeping entry you have to go back and undo.

Want it? Join the waitlist. Free through the beta, spot in the Discord included.

Start before the next drop, not after it

Whichever route you pick, the value only starts accruing from the moment capture is switched on. Nothing rescues the drops that already scrolled away. Set it up on a quiet day, let it collect through three or four releases, and then go and look at your own numbers. They are usually not what you assumed.

Track every order, fee and flip in one place.

Reseller OS is a desktop app for resellers - your data stays on your machine. Free through the beta.

Join the waitlist