{"templateId":"markdown","sharedDataIds":{},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Allowed HTML for Conversation Replies: Tables","projectTitle":"Intercom and Fin Developer Platform","description":"Faster resolutions, higher CSAT, and lighter support volumes with the only platform to combine the power of automation and human customer support.","siteUrl":"https://developers.intercom.com","image":"/assets/og-image.9c9ef3a6cedbceee0e1d52fae2ffcce97f5a189639cf24e473331da9ad02c5f8.b1bff462.png"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"allowed-html-for-conversation-replies-tables","__idx":0},"children":["Allowed HTML for Conversation Replies: Tables"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Preview API only"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Table support in conversation replies is available only on the unreleased ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Preview"]}," API version, and it is not yet enabled for all workspaces. Until your workspace has access and you're calling on a version that includes this change, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<table>"]}," markup in a reply ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["body"]}," continues to be flattened to plain text, as it is today."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you send a reply to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /conversations/{id}/reply"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /tickets/{id}/reply"]}," with an HTML ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<table>"]}," in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["body"]},", the table is preserved as a real, structured table in the conversation instead of being flattened into a single paragraph of concatenated cell text. This applies to both ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type: comment"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type: note"]},". On a ticket, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type: comment"]}," is rejected for tracker tickets and for back-office tickets that are not shared with the customer — those accept ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message_type: note"]}," only. That restriction is existing ticket-reply behaviour and is not specific to tables."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Over time we may add support for new table elements or attributes. This will not constitute a breaking change — we advise client code to tolerate markup it doesn't yet recognize. Removing element support, or otherwise changing the API in a way that causes previously supported HTML to become unsupported, will be considered a breaking change."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"supported-html","__idx":1},"children":["Supported HTML"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Tag"},"children":["Tag"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"What does it do?"},"children":["What does it do?"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Additional details"},"children":["Additional details"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<table>"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Table"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Defines the table."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<thead>"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<tbody>"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Row grouping"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Recognized and used to group rows."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<tr>"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Row"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Defines a table row."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<td>"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Cell"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Defines a standard data cell."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<th>"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Header cell"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Defines a header cell."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["colspan"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rowspan"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Cell spanning"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Supported on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<td>"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<th>"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"size-limits","__idx":2},"children":["Size limits"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A table-bearing reply is checked against these limits before anything is converted:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Limit"},"children":["Limit"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Value"},"children":["Value"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Rows per table"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["200"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Columns per table (counting ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["colspan"]},")"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["50"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Tables per reply"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["20"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Table cells per reply (counting ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["colspan"]}," × ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rowspan"]}," expansion)"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["10,000"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If a reply exceeds any of these limits, the request is rejected outright with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400 Bad Request"]}," naming the limit that was exceeded. Nothing is silently truncated or partially converted — either the whole table structure is preserved, or the request fails validation up front. Resubmit with a smaller table, or split it across multiple replies, to work around this."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"nested-tables","__idx":3},"children":["Nested tables"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<table>"]}," nested inside another ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<table>"]}," is not supported. If a reply body contains a nested table anywhere, the entire request is rejected with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400 Bad Request"]}," before any conversion happens. Flatten nested tables into a single table, or into separate tables, before sending the reply."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"known-limitations","__idx":4},"children":["Known limitations"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a reply body contains a table, the processing path for the ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["entire"]}," body changes — not just the table. The following apply to the whole reply, not only to content inside the table:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Behavior"},"children":["Behavior"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"What do we do?"},"children":["What do we do?"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["slack:"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["discord:"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["msteams:"]}," links anywhere in the body"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Removed. Only ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["http"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mailto"]},", and relative links survive in a table-bearing reply."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<caption>"]}," text on a table"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Not retained anywhere in the resulting conversation part."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["A link (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<a href=\"...\">"]},") inside a heading (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<h1>"]},"–",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<h6>"]},")"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The heading text is kept, but it stops being a link."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["An ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["&quot;"]}," entity inside an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["href"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Truncates the URL at that point. Avoid encoded quotes in link destinations within a table-bearing reply."]}]}]}]}]}]},"headings":[{"value":"Allowed HTML for Conversation Replies: Tables","id":"allowed-html-for-conversation-replies-tables","depth":1},{"value":"Supported HTML","id":"supported-html","depth":2},{"value":"Size limits","id":"size-limits","depth":2},{"value":"Nested tables","id":"nested-tables","depth":2},{"value":"Known limitations","id":"known-limitations","depth":2}],"frontmatter":{"excludeFromSearch":true,"title":"Allowed HTML for Conversation Replies","description":"Which table markup survives in a conversation reply body, the size limits, and what changes elsewhere in the body","seo":{"title":"Allowed HTML for Conversation Replies: Tables"}},"lastModified":"2026-10-06T10:53:07.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/guides/conversations/supported-html","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}