Saltar al contenido principal

Bot Cards & Buttons

Cards with a colour, fields, images and a status, plus buttons that change the card for everyone.

What a webhook, a slash command or a bot account posts doesn't have to be plain text. It can be a card, a structured message you take in at a glance, with buttons underneath.

Cards

A card can have:

  • a coloured edge: blue (the default), green, red, orange, yellow or purple
  • a title (optionally a link), a subtitle and a description in markdown
  • fields: label and value rows that members copy with one tap
  • images: one image or a gallery
  • a loader: a spinner with your own line, such as "Thinking…", that you swap for the result when it is ready

The answer to a slash command can show more: a status pill such as Open, Merged or Passing, a badge in the header, lines added and removed, and reasoning folded away behind a toggle. A card posted through a webhook leaves those out, and its header always shows the webhook's own name.

Think pull requests, deploys and support tickets: glanceable instead of a wall of text.

Buttons

Buttons sit under the card. Their type decides what a press does:

  • url:{url} opens a link.
  • webhook_action runs the steps you stored with the button: update the card, remove it, add a reaction or post a reply. They run on the mssgs server and everyone in the channel sees the result, so "Approve" or "Open gate" needs no server of your own.
  • trigger:{guid} fires one of your community's triggers with the button's data, as if someone had typed the command. The answer arrives as a new card.

Hearing back

A webhook post with buttons gets a stream_url back, and every slash command request carries one: a live stream of the presses, reactions and replies on that message. It stays open for 10 minutes (an hour on request, for webhook posts) and keeps nothing for later, so connect straight away. To change the message afterwards, use its callback_url, which works for 30 minutes. A bot account hears about its cards through the MCP server instead.

Built on the old docs? Buttons of type button with ws:send steps, local:update_message, local:remove_message, conditions such as previous:success and expire_in_seconds no longer work for outside senders. Use webhook_action with the steps above: they reach everyone, not only the person who pressed.

Every card field, with a live card builder, is on message cards. Button steps, events and errors are on buttons, the stream and the callback URL on live updates.

Was this article helpful?

Didn’t find what you were looking for? We’re happy to help.

Ask your question

Still need help?

Our support team usually replies within 24 hours.

Contact support