Enclessa incoming webhooks give a channel an endpoint that any system able to send JSON can post into: monitoring, CI, a deployment script, a form on your own site. Creating one provisions a bot account and adds it to the room, so the post has a real author and the channel’s own permission model decides whether it is allowed. The payload is Slack-shaped, so most tools that already speak to Slack need a URL change and nothing else.
Open betaThe platform is being built in the open, so parts of it are not there yet, behaviour changes between releases, and no availability figure is committed while it is in beta. What is still being built.
At a glance
- Created by
- Anyone who may manage the channel
- Credential
- A bearer secret, shown once, sent in a header
- Payload
- Slack-shaped: text, username, icon, attachments
- Author
- A bot account provisioned with the hook
- Room type
- Managed rooms only
- Size cap
- 8 KiB, truncated rather than rejected
How do I create an incoming webhook?
From the channel, if you may manage that channel. Creating one returns a URL and a secret, and the secret is shown exactly once. The credential travels in an Authorization header rather than in the URL, because a URL with a credential in it lands in every proxy access log between the caller and here.
- Requires the manage-channel permission on that channel, and nothing wider
- The secret is displayed once and stored only as a hash
- Sent as a bearer token in a header, never as a query string
- An unknown hook, a revoked hook and a wrong secret all answer the same 404
- Revoking a hook deactivates the bot behind it
What can the payload contain?
Message text, a display name that overrides the bot’s own, an icon, and attachments with a title, a link, body text, fields and a footer. Attachments are flattened to plain text on the way in — a title on one line, its URL on the next for the linkifier to pick up, fields as name and value — because the message renderer shows what it is given rather than interpreting markup it did not write.
- text, username, icon and attachments, in the shape Slack established
- One hook can speak for several systems by setting a different username per post
- The room shows a webhook badge beside the name, so nobody mistakes it for a person
- Attachments flatten to readable plain text rather than arriving as raw markup
- A post over 8 KiB is truncated, because an alert at three in the morning must not be lost to a 422
Why does a webhook need a bot account?
Because the alternative is a second, weaker idea of who wrote a message. A hook’s posts are authored by a real account that is a real member of the room, which means the ordinary permission model decides whether the post is allowed, the ordinary audit trail records it, and removing the bot from the room does exactly what removing anybody from a room does.
- The author is an account, not a special case in the message table
- The channel’s permissions govern the hook, with nothing bolted on beside them
- Bot accounts are not counted as billable seats
- Deactivating the bot stops the hook at the next call
What are the rate limits?
Rate limits are applied per organisation across classes of request rather than per endpoint, and they scale with the number of seats. Every rejection carries the headers a well-behaved client needs to back off correctly, so a system that respects them will not need supervision.
- Per-organisation budgets, scaled by seats, with a per-member ceiling
- A 429 carries RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset and Retry-After
- An empty payload is refused with 422 rather than posting an empty message
What this does not do
- Managed rooms only. An end-to-end encrypted room has no server-side key, so the server cannot compose a message in it — that is the point of the room, not a gap.
- Incoming only. There are no outgoing webhooks: nothing pushes Enclessa events to an endpoint of yours.
- A webhook posts. It cannot read history, list members, react or open a thread — use a bot account with a scoped token for that.
- Attachments render as plain text. There are no interactive buttons, menus or forms in a message.
- The secret is a bearer token, not an HMAC signature over the body. Treat the URL and the secret together as a credential.
Related
Incoming webhooks: common questions
Does Enclessa support incoming webhooks?
Can I point a Slack webhook at Enclessa?
Can a webhook post into an encrypted channel?
What happens if a webhook payload is too large?
Are there outgoing webhooks in Enclessa?
Encrypted collaboration, hosted in Europe.
Create a workspace in a couple of minutes. It is yours at your-team.enclessa.app, hosted in the European Union, with encrypted direct messages from the first one you send.
Open beta. Free plan, no payment card to start.