A table is useful when the comparison across rows matters: service health, a small inventory, or a digest of account activity. The first choice is the format. Slack’s native table block and LithoBlocks’ table authoring format are related, but they are not interchangeable.
The native Slack table
The current native block uses type: "table", an array of rows, and optional column_settings. Here is a complete Slack message payload with two columns:
{
"text": "Service status: API healthy, worker delayed.",
"blocks": [
{
"type": "table",
"column_settings": [
{ "is_wrapped": true },
{ "align": "right" }
],
"rows": [
[
{ "type": "raw_text", "text": "Service" },
{ "type": "raw_text", "text": "Status" }
],
[
{ "type": "raw_text", "text": "API" },
{ "type": "raw_text", "text": "Healthy" }
],
[
{ "type": "raw_text", "text": "Worker" },
{ "type": "raw_text", "text": "Delayed" }
]
]
}
]
}
Use this payload with Slack’s API, not as the body of LithoBlocks’ template-send endpoint. That endpoint takes a saved template ID, data and a destination.
Slack documents up to 100 rows, 20 cells per row, and 10,000 characters across table cells in a message. Columns support left, center or right alignment and configurable wrapping. See the current table reference for the complete schema.
An earlier version of this article described a nested rich_text_table structure and said alignment and wrapping were unavailable. The example above replaces that guidance.
Building the table in LithoBlocks
Choose Table in the toolbox. LithoBlocks uses slack_table for its authoring representation and compiles it to native Slack table output. For rows driven by your data, configure an array path and the properties to use as columns:
{
"type": "slack_table",
"arrayPath": "items",
"columnConfig": [
{ "key": "service", "header": "Service" },
{ "key": "status", "header": "Status" }
]
}
Supply sample data such as:
{
"items": [
{ "service": "API", "status": "Healthy" },
{ "service": "Worker", "status": "Delayed" }
]
}
This block is part of a LithoBlocks template, not a complete create-template request. The table authoring guide covers static rows, dynamic columns and the separate Data Table format. Existing templates using an older table authoring type should be reviewed rather than renamed in place.
Table, Data Table, or a list?
| Your content | Start with |
|---|---|
| A compact comparison with a few columns | Table |
| Typed numeric data and pagination | Data Table |
| Each item needs buttons or a longer explanation | Repeated sections or cards |
For a digest, collect and aggregate the events first, then render the resulting data into the table. A template directive formats an existing array; a queue collects events over time. See the digest workflow.
Test the shape, not just the happy path
Try an empty array, one row, long names and the largest realistic dataset. Keep the most important information readable on mobile and link to a fuller report when needed. Authoring validation provides free diagnostics; a standalone compile produces rendered output and uses 1 credit.