Nightly backup failed
The 02:00 job exited non-zero. Retry it, snooze it, or look.
- Job
- nightly-backup
- Exit code
- 1
- Started
- 02:00 UTC
- Duration
- 8m 12s
A notification that opens into a decision
Every Roundtrip request is one loop: something happens, a person decides on their phone, and the decision lands back in your app, signed.
- 1Trigger
The trigger
A scheduled job, backup, or long-running command finishes in a state that needs a human call — failed, partially succeeded, or waiting on a yes before it continues.
A scheduled job, backup, or long-running command finishes in a state that needs a human call — failed, partially succeeded, or waiting on a yes before it continues.
- 2Ask
The ask
Roundtrip delivers the outcome with the exit status and a link to the run, plus actions like Retry, Snooze, or View logs. The on-call engineer chooses without opening a laptop.
Roundtrip delivers the outcome with the exit status and a link to the run, plus actions like Retry, Snooze, or View logs. The on-call engineer chooses without opening a laptop.
- 3Response
What comes back
The chosen action returns to your webhook and your job runner acts on it, re-running, deferring, or moving on, closing the loop the red checkmark never could.
The chosen action returns to your webhook and your job runner acts on it, re-running, deferring, or moving on, closing the loop the red checkmark never could.
One request out, one signed response back
The card on the phone is rendered straight from the request body, not a mockup. When the recipient responds, Roundtrip POSTs a signed event to your webhook and retries until it lands.
{
"channels": [
"jobs"
],
"notification": {
"title": "Job · nightly-backup",
"body": "The 02:00 job exited non-zero — retry or snooze?"
},
"content": {
"title": "Nightly backup failed",
"description": "The 02:00 job exited non-zero. Retry it, snooze it, or look.",
"status": {
"label": "Failed",
"tone": "danger"
},
"sections": [
{
"type": "keyvalue",
"columns": 2,
"items": [
{
"label": "Job",
"value": "nightly-backup",
"mono": true
},
{
"label": "Exit code",
"value": "1",
"mono": true
},
{
"label": "Started",
"value": "02:00 UTC"
},
{
"label": "Duration",
"value": "8m 12s"
}
]
}
],
"actions": [
{
"id": "retry",
"label": "Retry",
"style": "primary"
},
{
"id": "logs",
"label": "View logs",
"style": "secondary"
}
]
},
"response": {
"mode": "optional",
"webhook": "https://api.example.com/roundtrip"
}
}Nightly backup failed
The 02:00 job exited non-zero. Retry it, snooze it, or look.
- Job
- nightly-backup
- Exit code
- 1
- Started
- 02:00 UTC
- Duration
- 8m 12s
{
"requestId": "req_8Kx2…",
"channel": "jobs",
"kind": "tap",
"action": "retry",
"respondedAt": "2026-06-20T16:41:09Z"
}