Content & publish approval
A last look before it goes out the door, and out to everyone.
Newsletter ready to send
Queued and waiting for a final yes before it goes out.
- Audience
- 12,400
- Subject
- June product update
- From
- team@acme.co
- Scheduled
- Now
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
Something is staged to go public: a newsletter, an announcement, a scheduled post, a price change. It is ready, but it should not ship without a person signing off first.
Something is staged to go public: a newsletter, an announcement, a scheduled post, a price change. It is ready, but it should not ship without a person signing off first.
- 2Ask
The ask
The owner gets a card with what's about to send, the audience size, and a preview link, plus Send / Hold. They can give the final yes from their phone, or hold it if something looks off.
The owner gets a card with what's about to send, the audience size, and a preview link, plus Send / Hold. They can give the final yes from their phone, or hold it if something looks off.
- 3Response
What comes back
The decision returns to your system, so the send fires or stays paused. The approval, who released it and when, is captured, which matters when the thing went to thousands of people.
The decision returns to your system, so the send fires or stays paused. The approval, who released it and when, is captured, which matters when the thing went to thousands of people.
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": [
"content"
],
"notification": {
"title": "Newsletter · ready",
"body": "Queued to 12,400 people — waiting for a final yes."
},
"content": {
"title": "Newsletter ready to send",
"description": "Queued and waiting for a final yes before it goes out.",
"status": {
"label": "Staged",
"tone": "info"
},
"sections": [
{
"type": "keyvalue",
"columns": 2,
"items": [
{
"label": "Audience",
"value": "12,400",
"mono": true
},
{
"label": "Subject",
"value": "June product update"
},
{
"label": "From",
"value": "team@acme.co"
},
{
"label": "Scheduled",
"value": "Now"
}
]
}
],
"actions": [
{
"id": "send",
"label": "Send now",
"style": "primary"
},
{
"id": "hold",
"label": "Hold",
"style": "secondary"
}
]
},
"response": {
"mode": "required",
"webhook": "https://api.example.com/roundtrip"
}
}Newsletter ready to send
Queued and waiting for a final yes before it goes out.
- Audience
- 12,400
- Subject
- June product update
- From
- team@acme.co
- Scheduled
- Now
{
"requestId": "req_8Kx2…",
"channel": "content",
"kind": "tap",
"action": "send",
"respondedAt": "2026-06-20T16:41:09Z"
}