Skip to content

Report delivery monitoring

Prove the report was delivered, not just generated.

Cron firing and report rendering are not the customer promise. For scheduled reports, exports, and digests, the promise is that the right output reached the right place on time.

Operating spine

The workflow operating spine.

A rendered report is not enough. The proof path should end where the customer would look for the report.

01 / Promise

Name the outcome

The expected report, export, digest, or file reaches the right destination inside its scheduled window.

02 / Signal

Send the signal

Open the run before query/render and close success only after provider accepted id, storage object, or delivery receipt exists.

03 / Drill

Break it on purpose

Make the provider or upload step fail while generation succeeds, so the alert proves delivery rather than cron execution.

04 / Incident

Inspect the bad day

The incident should show report id, account id, provider response, output pointer, schedule window, and retry safety.

05 / Handoff

Leave an operator path

Route the owner to resend, regenerate, or notify customers with retained evidence of what did and did not happen.

The failure

The cron ran and the report rendered, but the email provider rejected the message or the delivery step never executed. Customers notice the missing report before your dashboard does.

The Luota proof

Open a run before query/render work starts. Close success only after delivery evidence exists: provider accepted id, storage object, webhook receipt, or another customer-visible proof.

Evidence to attach

Attach account id, report id, schedule window, provider message id, output object URL, duration, and a short summary. Avoid full report contents unless the data is intentionally safe to store.

Failure drill

Send a generated-but-not-delivered test by forcing the provider step to fail. Confirm the incident says delivery failed, not simply that a cron job missed a ping.

Need a concrete migration or monitoring pattern? Start with the docs, then adapt the payload to the evidence your operator needs.

Open integration docs