You can now pause a Workflow run on a Chat SDK card and resume it when someone clicks a button. The same flow works for form submissions. Buttons and modals accept a new callbackUrl prop, and the event payload is sent to that endpoint.
Slack approval card for a status report request
To build a card like this, create a workflow webhook and pass its URL to each button's callbackUrl prop inside your <Card> component:
import { createWebhook } from "workflow" ;
import { Card , CardText , Actions , Button } from "chat" ;
export async function statusReport (
thread ,
content : { title : string ; message : string } ,
) {
"use workflow" ;
using hook = createWebhook < { action : "approve" | "approve-and-send" | "deny" } > ( ) ;
await thread . post (
< Card title = " Status Report Communications " >
< CardText > Title: { content . title } </ CardText >
< CardText > Message: { content . message } </ CardText >
< Actions >
< Button callbackUrl = { hook .…