A scheduled job has two possible outcomes: it ran and delivered; or it ran, said
“completed” and nobody received anything. The second is the common one — and the hardest to see,
because the status is green.
What makes a job “complete” without delivering
- Platform not configured in the processYou enable the channel in the config, but the
delivering process was already running and read the old config. The job finishes with “platform not
configured” and a success status.
- Manual run ≠ scheduled runRunning the job by hand uses a different delivery path
than the scheduler's. The manual test is green and the scheduled one never delivers.
- Output file instead of the channelThe job writes the text to a file instead of
talking to the channel's API. It looks like delivery; it is a log.
- Token in the wrong placeThe credential exists in your shell's environment, not in
the scheduler's — and the error shows up as “no permission”, not “no token”.
The proof that does not lie
There is exactly one proof of delivery: the identifier the channel returned when it
accepted the message. Store it and show it in the job report.
OK sendMessage message_id=48293 chat=-100...
Job status, exit code and a “success” log are all compatible with the message never leaving.
The id is not.
How to actually test it
- Force the delivery conditionA job that “has nothing to do” tests nothing. Run it
once with guaranteed content.
- Read the result from the channel's sideConfirm on the channel (or via its API)
that the message arrived — not in the scheduler's log.
- Log which path was used“Run by the scheduler” and “run by hand” must appear in the
log: without that, you are testing the wrong path.
If the job is silent when there is nothing to do
Silence by design needs proof that the job ran: one log line per execution. Without it,
“I received nothing” and “the job did not run” are indistinguishable — and you find out weeks
later.
See the complete pack
See all skills
Want this wired into your project? Guided setup from
R$ 1.500, with the first cycle run together.
← all skills
Get the next article
Sent when I publish, together with the free skill used here. No spam, one-click unsubscribe.
Payment processed by
Stripe — no card data touches this server. Instant delivery once confirmed. Prices in BRL (Brazilian real) — you are charged in BRL.
Terms, delivery and refund.