The client consists of a script and a style sheet. The script is an IIFE that registers the initComments function in the global scope which can be called from within any other script. Calling it initialised the comment section given by the provided argument.

If guest posting is enabled, then the client registers a guest account with the homeserver on initialisation and stores the access token in HTML5 localStorage which is re-used across pages and sessions. Note, the homeserver needs to allow guest registrations for this to work until peek-over-federation has landed.


The initComments function takes an object as argument with the following options:

Name Type Required Default Description
node HTML Element or string Yes - The HTML element on the page that will be replaced with the comment section. A string is passed as the selector to document.querySelector (from v0.9.0).
defaultHomeserverUrl string Yes - The URL of the Matrix homeserver with Cactus Comments appservice. It must not contain a trailing slash.
serverName string Yes - The server name of the Matrix homeserver with Cactus Comments appservice. This is usually just the domain part of defaultHomeserverUrl.
siteName string Yes - The unique identifier of your site that you registered with the Cactusbot.
commentSectionId string Yes - The unique identifier of your comment section. It must not contain slashes and underscores.
pageSize int No 10 The number of comments to load initially and with every press of “View More”.
loginEnabled bool No true If true, users can log in on the page using their Matrix credentials. If false, the Login button becomes a link to redirect them to a Matrix client. Introduced in v0.7.0.
guestPostingEnabled bool No true If true, users can post as a guest without logging in. Introduced in v0.7.0.
updateInterval float No 0 Number of seconds after which new comments are fetched. If zero or negative, updates are never fetched. Introduced in v0.8.0.

When using data attributes, the node parameter becomes optional. It defaults to replacing the script element itself with a comment section. Also the data attributes are prefixed with data- and use kebab-casing, where initComments uses camelCasing.


The Cactus Comments web client is written in Elm. It is is a proper Matrix client, and as such implements the Client-Server API. You can read and contribute to the entire source code here.