A scheduler's real test is not the post that goes out. It is the one that does not, while everyone is asleep.
Two kinds of failure
Publishing fails in two very different ways, and treating them the same is how tools lose people's trust.
- Recoverable — a rate limit, a timeout, a platform hiccup. Waiting and trying again fixes it.
- Permanent — a rejected token, a video the platform will not accept, a bot removed from a channel. Trying again sends the same request to the same judge.
Retrying the second kind is not persistence, it is noise. It also delays the moment a human finds out, which is the only thing that will actually fix it.
Backoff, and then a person
Recoverable failures deserve a growing gap between attempts — five minutes, twenty, an hour, three. Permanent ones should fail immediately and surface, with the platform's own error text rather than a generic apology.
The rule that matters most
A retry must never publish twice. If Facebook and Telegram accepted the post and Instagram fell over, the retry goes to Instagram alone.
That means recording the outcome per platform, not per post. It is more bookkeeping, and it is the difference between a retry that helps and a retry that posts your announcement to the same audience twice.
Telling you without training you to ignore it
A notification for every retry teaches people to mute notifications. Send one when the tool has actually given up — that message means something, so it gets read.
