Skip to content
automation recipe

Gate a deploy on a chat button, not a dashboard tab

Pause the pipeline, post approve/reject buttons to the channel that's already watching the release, and let the click — not someone babysitting a tab — resume or cancel the run.

Engineering managersPlatform engineersDevOps leads

Most deploy gates still mean someone tabbing back to a CI dashboard every few minutes to see if a run is waiting on them. Dailybot moves the gate into the channel that’s already watching the release: approve or reject from a button, and your CI server picks up the click through a signed callback — no tab, no polling.

This page covers the gate itself — approve/reject buttons wired to callback_url with callback_auth, confirmed with a response auto-reply, and optionally chained into a callback_workflow button for whatever comes next.

Build it step by step

  1. Pause the pipeline at the gate

    When the pipeline reaches a deploy gate, have it POST to /v1/send-message/ instead of waiting on a dashboard. Target the channel that already watches the release — Slack, Microsoft Teams, Discord, or Google Chat all work the same way.

  2. Attach approve/reject buttons with a signed callback

    Add two interactive buttons, each with callback_url pointing at your CI server and callback_auth for bearer, basic, or custom-header transport auth. callback_auth is only valid together with callback_url — it has no effect on the other four callback types.

  3. Resume or cancel from the click

    Approve posts its value ("approve", or whatever you chose) to callback_url; Reject posts its own value. Your CI server verifies the signed request and resumes or cancels the run — the click is the automation, not a notification about one.

  4. Confirm it in the channel

    Add a response auto-reply to each button so the channel sees confirmation immediately — "Approved — deploying now" or "Rejected — deploy cancelled" — without anyone refreshing a pipeline page.

  5. Chain in a workflow button for the next stage

    Mix a callback_workflow button into the same message — for example a "Redeploy staging" button that fires an api_trigger workflow — so the next stage is one click away too.

See it in action

A simulated approval flow — no messages are actually sent.

dailybot APP

Deploy 4.12.0 to production?

What the click actually does

Click a button above to see what the signed callback does.

Copy-paste recipes

curl -sS -X POST 'https://api.dailybot.com/v1/send-message/' \
  -H 'X-API-KEY: $DAILYBOT_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"message":"Deploy 4.12.0 to production?","target_channels":["C0123456789"],"buttons":[{"label":"Approve","button_type":"interactive","value":"approve","callback_url":"https://ci.example.com/hooks/deploy","callback_auth":{"type":"bearer","token":"$DEPLOY_CALLBACK_TOKEN"},"response":{"message":"Approved — deploying now."}},{"label":"Reject","button_type":"interactive","value":"reject","callback_url":"https://ci.example.com/hooks/deploy","callback_auth":{"type":"bearer","token":"$DEPLOY_CALLBACK_TOKEN"},"response":{"message":"Rejected — deploy cancelled."}}]}'

Ready to transform how your team works?

Join thousands of teams that use Dailybot to save time, boost engagement, and make better decisions.