type property that identifies what kind of element it is, along with additional properties that configure its appearance and behavior.
WYSIWYG Builder
The BlockKit Builder is a visual drag-and-drop editor for creating BlockKit layouts without writing JSON. It includes a block library, live canvas, properties panel, preview mode, and more.Available Elements
Layout
- Section - A container block that groups other block elements together
- Column Layout - Arrange content in configurable column layouts (50/50, 66/33, 75/25, etc.)
- Repeater - Repeat template content for each item in an array
- Remote Block - Load and render BlockKit content from a remote URL
Content
- Heading - A block that displays a heading with a specified level
- Text - A block that displays formatted text with optional replacements
- Alert - A block that displays an alert message with different severity levels
- Callout - A block that displays a callout with an icon, title, and content
- Icon - A block that displays an icon with optional color and alignment
- Block Replacement - A block that serves as a placeholder for dynamic content
Lists
- Bullet List - A block that displays an unordered (bullet) list
- Ordered List - A block that displays a numbered (ordered) list
- Step List - A block that displays a list of steps in a process or workflow
- Step - A block that represents a step in a process or workflow
- List Item - A list item that can be used in bullet or ordered lists
Navigation
- Wizard - A block that displays a multi-step wizard with navigation controls
- Wizard Step - A block that represents a single step in a wizard
Interactive
- Button - An interactive button that triggers an action
- Actions - A container for a horizontal row of action buttons
- Form - An interactive form with configurable fields that submits data to an endpoint
Basic Structure
Every BlockKit element follows this basic structure:Interactive Components
BlockKit supports interactive elements that can POST data to server endpoints and receive new BlockKit content in response. This enables rich, dynamic experiences similar to Slack’s Block Kit.How It Works
- Interactive elements (buttons, forms) live inside
actionsorformblocks - Each element has an
action_idand the container has anaction_url - User interaction triggers an HTTP POST to the endpoint with a structured payload
- The server responds with new BlockKit JSON to replace, update, or append blocks
Server Response Types
Getting Started
- Choose the appropriate element type for your needs
- Review the element’s documentation for required and optional properties
- Compose your JSON structure using the element’s schema
- Test your BlockKit structure using the WYSIWYG Builder
Best Practices
- Always include required properties for each element
- Use meaningful text content that provides value to users
- Consider accessibility when composing your BlockKit structures
- Test your structures with different data to ensure they work as expected
- Use the visual form designer instead of hand-writing JSON Schema for forms
- Use Column Layouts to create responsive multi-column designs
- Use Repeaters for data-driven lists — avoid duplicating blocks manually
Composition
BlockKit elements can be nested to create complex structures:- Sections can contain headings, text, alerts, lists, actions, forms, and column layouts
- Wizards contain wizard steps, each of which can hold any content blocks
- Column Layouts divide content into side-by-side columns
- Actions contain buttons arranged in a horizontal row
- Lists contain list items
