Skip to content

Displays a list of related tasks under one title, so readers can follow a multi-step process — such as an AI agent working through a request.

Type plan
Available in Messages, Modals, Home tab
Compatible block elements URL source element

For a single step, use a task card block on its own. Update the message as tasks progress to move them through their statuses.

Field Type Description Required?
type String The type of block. For a plan block, type is always plan. Required
title String Title of the plan, in plain text. Required
tasks Array of Task card block The tasks, in order. Each is a task card without type; each task_id should be unique within the plan. Maximum of 50 tasks. Required
block_id String A unique identifier for the block. Maximum length is 255 characters. It must be unique within the message or view — a duplicate is replaced and reported as a warning. Optional

An agent preparing a renewal — how it renders in Repzo Chat

{
"blocks": [
{
"type": "plan",
"title": "Preparing the Al Noor Trading renewal",
"tasks": [
{
"task_id": "usage",
"title": "Checked seat usage",
"status": "complete",
"output": {
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "23 of 25 seats active in the last 30 days"
}
]
}
]
}
},
{
"task_id": "invoices",
"title": "Reviewed open invoices",
"status": "complete",
"output": {
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "No overdue invoices"
}
]
}
]
}
},
{
"task_id": "quote",
"title": "Drafting the renewal quote",
"status": "in_progress",
"details": {
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "text",
"text": "Applying the 5% loyalty discount"
}
]
}
]
}
},
{
"task_id": "send",
"title": "Send the quote to the account owner",
"status": "pending"
}
]
}
]
}