These integrations are outgoing only: Kaneo posts to your URL when events occur. They are separate from GitHub integration, which syncs issues and repositories.
Where to configure
- Open Settings in the sidebar.
- Under Projects, select the project.
- Open the Integrations tab.
Task links in notifications
Notification messages and generic webhook payloads include links to the task in the web app. SetKANEO_CLIENT_URL to your public Kaneo web URL so those links point to your instance (for example https://kaneo.example.com).
Events you can subscribe to
For Slack, Discord, Telegram, and generic webhooks you can toggle the same event types:| Event | Default on | Description |
|---|---|---|
| Task created | Yes | New task in the project |
| Task status changed | Yes | Status column changed |
| Task priority changed | No | Priority changed |
| Task title changed | No | Title edited |
| Task description changed | No | Description edited |
| Task comment created | Yes | New comment on a task |
Slack
Use a Slack incoming webhook URL. It must match Slack’s format:https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
Paste the URL in the Slack section, optionally set a channel label for your own reference, choose events, and save.
Kaneo sends formatted messages to Slack when enabled events occur.
Discord
Create an incoming webhook for a Discord channel (Channel settings → Integrations → Webhooks). The URL must look like:https://discord.com/api/webhooks/000000000000000000/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
(or the discordapp.com hostname). Paste it into the Discord section, optionally add a channel name label, select events, and save.
Telegram
Create a Telegram bot with@BotFather, then add that bot to the destination chat, group, channel, or topic. Telegram requires:
- A bot token
- A chat ID
- Optionally a topic thread ID for forum-style group topics
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates
Look for message.chat.id or channel_post.chat.id. If you are posting into a forum topic, also copy message.message_thread_id.
Paste those values into the Telegram section, optionally add a chat label, choose events, and save.
Generic HTTP webhook
Use a generic webhook when you want a JSON POST to your own service, automation, or middleware.Delivery health
After delivery attempts, Kaneo stores basic health metadata (for example last success, last failure message, failure count) so you can see whether recent posts succeeded. This does not replace monitoring on your endpoint.Payload shape
Each POST hasContent-Type: application/json. Top-level fields:
event: string, one of:task.created,task.status_changed,task.priority_changed,task.title_changed,task.description_changed,task.comment_createdtimestamp: ISO 8601 time when Kaneo sent the requestintegration:{ "type": "generic-webhook" }project:id,name,workspaceIdtask:id,number,title,status,priority,url(link to the task in the web UI)actor:idandnameof the user when available, or nulls for automated actionsdata: event-specific fields (for exampleoldStatus/newStatusfor status changes,commenttext for comments)
Signature verification
If you configure a secret for the generic webhook integration, Kaneo signs each request and sends the result in theX-Kaneo-Signature header.
- Header:
X-Kaneo-Signature - Algorithm:
HMAC-SHA256 - Signed input: the exact raw request body Kaneo sends
- Encoding: lowercase hex digest
- Read the raw request body before parsing or re-serializing JSON.
- Compute an
HMAC-SHA256using your integration secret and that raw body. - Compare your computed lowercase hex digest with
X-Kaneo-Signatureusing a constant-time comparison. - Reject the request if the signatures do not match.