Skip to content
automation recipe

Turn a chat button into an incident intake form

Skip the dedicated incident tool tab: a Report incident button opens a short modal right in chat, and the answers land wherever you route them.

Incident commandersOps leadsSRE teams

Incidents don’t wait for someone to open the on-call tool. A Report incident button collects exactly what the response needs — severity, service, a one-line summary — in a modal that opens right where the incident was first noticed, then forwards the answers wherever your incident process lives.

This page covers the modal contract (modal_body, its blocks, the required flag on each field) and both places you can route the submission: your own callback_url, or straight into an api_trigger workflow via callback_workflow.

Build it step by step

  1. Add a Report incident button

    Attach modal_body to an interactive button. On Slack the modal renders natively; on Microsoft Teams, Discord, and Google Chat, Dailybot collects the same fields conversationally instead.

  2. Design the modal's fields

    modal_body is { title, submit_label?, blocks[] } — 1 to 10 blocks of type text, input, or divider, serialized under 8 KiB. Each input block needs a name matching ^[a-z][a-z0-9_]{0,62}$ that's unique within the modal, plus a label; mark it required to enforce it's filled in.

  3. Route the answers

    Submitted values arrive as modal_fields.<name> on whichever callback the button carries — callback_url for your own incident-management server, or callback_workflow to hand the incident straight to an api_trigger workflow. Only one of the two, same as any other button.

  4. Confirm receipt

    Add a response auto-reply so the reporter sees confirmation immediately — "Incident logged, on-call notified" — without waiting on whatever system picks up the callback.

How it flows

A static diagram — nothing here is clickable or live.

dailybotAPP

Something broken? Report it here.

Report incident

Illustrative — forwarded answers

{
  "button_id": "[button-id]",
  "modal_fields": {
    "severity": "sev2",
    "service": "checkout-api",
    "summary": "Elevated 500s on checkout"
  }
}

Illustrative only — forwarded to callback_url or callback_workflow depending on how the button is configured. See the send-message API reference for the full contract.

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":"Something broken? Report it here.","target_channels":["C0123456789"],"buttons":[{"label":"Report incident","button_type":"interactive","value":"report_incident","callback_url":"https://ops.example.com/hooks/incident","callback_auth":{"type":"bearer","token":"$INCIDENT_CALLBACK_TOKEN"},"modal_body":{"title":"Report an incident","submit_label":"Submit","blocks":[{"type":"input","name":"severity","label":"Severity (sev1-sev4)","required":true},{"type":"input","name":"service","label":"Affected service","required":true},{"type":"input","name":"summary","label":"Summary","multiline":true,"required":true}]},"response":{"message":"Incident logged, on-call notified."}}]}'

Ready to transform how your team works?

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