page_preview card before saving. You never read a page block back, and chat messages never carry raw HTML.
string
required
"page"string
required
The full page document. Up to your plan’s per-version cap (512 KB on Free). Bigger than that, and the block becomes a visible error line while the rest of the message still lands.
string
Up to 150 characters. Without it we use the HTML
<title>, then “Untitled page”.string
The URL name: 1 to 63 lowercase letters, digits and dashes. We make one from the title if you leave it out. A slug that already belongs to one of your Pages updates that Page instead of making a new one. See below.
string
Publish a new version of this Page instead of making a new one. Takes precedence over
slug.string
default:"private"
private (workspace members only) or public (anyone with the link, no login). Anything else fails the block’s schema check, which drops the block. Only used when the block creates a Page. Neither level is indexed by search engines.Create or update
Eachpage block either creates a Page or adds a version to one you already have:
page_idset: a new version of that Page.- Otherwise,
slugset and a Page in your workspace already holds it (or held it before a rename): a new version of that Page. - Otherwise: a new Page.
slug every time and a recurring job keeps updating one Page rather than creating a pile of them. A version whose HTML is byte-for-byte identical to the current one is skipped, so re-sending unchanged content costs nothing.
Where it works
The block is accepted on all three sending paths: webhook response,response_url, and the API-key messages endpoint. One rule: the conversation must be an internal one, a team chat with your bot. In a widget or public-page conversation the block is replaced by an error line and nothing is written, because a visitor is not a workspace member and could never open the Page.
What we store
The block is replaced by apage_preview card carrying the page_id, slug, title, version and url. If hosting fails, the block becomes a text block that says why (over the size cap, Page limit reached, storage full, slug invalid or taken), and the rest of the message still goes through.
This is the only place HTML is allowed. HTML in a
text block is stripped, and HTML file uploads are blocked. Rich HTML belongs in Pages.
