Channels
A channel is a delivery destination: where reports and agent messages arrive. Set one up once under Channels and reuse it across any number of reports and agents.
A channel names where a message goes; the accounts it is sent through are set up separately. Slack, Telegram bots and file servers are connected once under Connectors, and channels use those connections. Email is sent from Discontinue's own sender.
Channel types
There are five: Email, Slack, Telegram, SFTP / FTP, and Webhook. Microsoft Teams is a format of the Webhook type.
Enter one or more recipient addresses (up to 10 per channel). Reports arrive as a short email with your logo, the key figures and the report attached as a file (PDF, Excel, or CSV); no setup is needed on the recipients' side.
Slack
Slack channels post through the workspace's Slack connection. Connect your Slack workspace once under Connectors (the Slack channel form links there while Slack is not connected), then pick the target channel from a list. Messages post as native Slack messages from the app; reports arrive as a message followed by the report file.
Telegram
Telegram channels send through your own Telegram bot, connected once under Connectors:
- Create a bot with @BotFather (
/newbot) and copy its token (123456789:AA…). - Under Connectors, add Telegram and paste the token. The token stays there; channels never see it.
- Send the bot any message from the chat that should receive deliveries. For a group or a channel, add the bot to it.
- Create the Telegram channel: pick the Telegram connection (the only one is picked for you) and the chat from the list of chats the bot heard from. Telegram lists a chat for 24 hours after it wrote to the bot; for an older one, or a bot that uses a webhook, type the chat id instead.
Works for direct messages, groups, and channels. Reports arrive as the report file, with the message as its caption. If Telegram refuses the bot token, the Telegram connection shows Reconnect needed under Connectors (replace the token there); a chat that blocked the bot or no longer exists shows as a failed delivery of that channel. A Telegram connection can't be removed while a channel uses it: delete the channel or move it to another connection first.
SFTP / FTP
Delivers reports as files (Excel unless you choose PDF or CSV) to a server of yours. The server itself (host, credentials, protocol: SFTP, FTPS, or FTP) is configured once under Connectors; the channel then picks a server, a remote path, and an optional filename pattern such as {{report_slug}}_{{date}}.xlsx. This is the standard way to feed downstream systems that watch a directory.
Webhook
Posts each message to a URL of yours. The channel's format decides what the URL receives:
- Microsoft Teams: the message as a card in a Teams channel. In Teams, add the "Post to a channel when a webhook request is received" workflow to the target channel, copy the URL it gives you, and paste it here.
- JSON: the message as JSON, for automation tools such as Make, n8n, or Zapier, or for your own systems. The fields are listed below; map them on the receiving side.
Webhooks carry no files. A report arrives as its message with a link to the run, in both formats. Channels that were set up as Microsoft Teams channels before are now webhook channels in the Teams format, with the same schedules and delivery history.
If the URL can't be reached or answers with a server error (5xx), the message is sent once more; a rejection (4xx) is not retried. A failed delivery shows its error in the delivery history.
The URL is the secret
Anyone who has a webhook URL can post to it, so the URL is treated as a credential, and there is no separate authorization header:
- It must start with
https://and point to a public address. Private, loopback, and link-local addresses are refused. - It is stored encrypted and shown once, when the channel is created. After that the channel shows only the URL's host.
- To change it, enter a new URL. The stored URL can't be read back or edited.
The JSON message
Every webhook message has the same fields. The Teams format shows them as a card: the title, the text, a link line, and a note that the content is AI-generated when it is.
| Field | Content |
|---|---|
version | 1, the version of this message shape |
kind | report for a scheduled report, agent_message for a message from an agent, notification for a platform message such as the channel test |
title | For a report, the report name |
text | The message, at most 4,000 characters; a longer message fails with an error instead of being cut. For a report: the line naming the properties and when the data was read, a notice when the data may be incomplete, then one label: value line per key figure |
url | A link into Discontinue (for a report, the run), or null |
source | What sent the message: type (report, agent, or platform), plus its id and name, each of which can be null |
sent_at | When the message was sent, as an ISO 8601 timestamp |
ai_generated | true when the content was generated by AI |
Managing channels
Each channel row on the Channels page offers:
- Test: sends a test message so you can verify the wiring before a schedule depends on it. On a JSON webhook it arrives with
kindset tonotification. - Mute / unmute: a muted channel stays configured, and deliveries to it are recorded as skipped rather than failing the run.
- Delivery history: everything that was sent through the channel, with status.
- Rename and delete.
A channel can also be on the Notify list of an agent or a report. It then gets a short message with a link about the events it chose, such as an approval the agent needs or a failure. Every channel type can be on a Notify list except FTP/SFTP. Deleting a channel takes it off every list.