Skip to content

Displays structured information in a simple table. For sorting, filtering, paging or buttons, use a data table block.

Type table
Available in Messages, Modals, Home tab

The first row is shown as the header. Cells are raw_text ({ "type": "raw_text", "text": "…" }), raw_number ({ "type": "raw_number", "value": 12, "text": "12" }) or rich_text for formatted text, links, emoji and mentions.

Field Type Description Required?
type String The type of block. For a table block, type is always table. 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
rows Object[] An array of rows, each an array of cells. Maximum 100 rows and 20 cells per row. Required
column_settings Object[] Per-column settings, in column order; use null to skip a column. Each item may set align (left, center or right, default left) and is_wrapped (Boolean). Columns without an item keep the defaults. Maximum 20 items. Optional

A price list with right-aligned numbers — how it renders in Repzo Chat

{
"blocks": [
{
"type": "table",
"column_settings": [
null,
{
"align": "right"
},
{
"align": "right"
}
],
"rows": [
[
{
"type": "raw_text",
"text": "Product"
},
{
"type": "raw_text",
"text": "Unit price (SAR)"
},
{
"type": "raw_text",
"text": "In stock"
}
],
[
{
"type": "raw_text",
"text": "POS Terminal X2"
},
{
"type": "raw_number",
"value": 2450,
"text": "2,450"
},
{
"type": "raw_number",
"value": 64,
"text": "64"
}
],
[
{
"type": "raw_text",
"text": "Thermal receipt printer"
},
{
"type": "raw_number",
"value": 650,
"text": "650"
},
{
"type": "raw_number",
"value": 120,
"text": "120"
}
],
[
{
"type": "rich_text",
"elements": [
{
"type": "rich_text_section",
"elements": [
{
"type": "link",
"url": "https://example.com/products/SCN-2D",
"text": "Wireless barcode scanner"
}
]
}
]
},
{
"type": "raw_number",
"value": 420,
"text": "420"
},
{
"type": "raw_number",
"value": 0,
"text": "0"
}
]
]
}
]
}