DocumentationIntegrations
Available from the Builder plan

Webhooks and notifications: Webhook (outgoing), Slack, Discord and Telegram

How to make the app notify you or your team outside of it (a Slack channel, a Discord server, a Telegram group) and how to send data to an automation of yours, in Zapier, in Make or at an address of your own.

Costs no credits: no step in this guide uses AI credits.

Without the integration, the notification does not go out: the automation using that channel does not deliver, and the app's action is refused with the notice that the channel is not configured in this app.

Before you start

  • Plan: Slack and Discord work on any plan, Free included. Telegram and Webhook (outgoing) require the Builder plan, and for them the plan is checked on every send: if the account leaves Builder, they stop;
  • Cost: creating webhooks and bots on these services is free. Each send made by the app consumes integration credits, and only when the destination accepts;
  • The webhook address is a password. Anyone who has the URL of a Slack or Discord webhook can post to your channel. Do not publish the URL anywhere.

They all live in the Integrations tab: Slack, Discord and Telegram in the Notifications category, Webhook (outgoing) in Automation.

Slack

Card field: Incoming Webhook URL.

  1. at api.slack.com/apps, create an app in your workspace;
  2. under Incoming Webhooks, turn the feature on and click Add New Webhook to Workspace;
  3. choose the channel that will receive the notifications and authorize;
  4. copy the generated URL (it starts with https://hooks.slack.com/services/);
  5. on the Slack card, paste the URL and click Save and activate.

Each Slack webhook posts to a single channel. For another channel, create another webhook.

Discord

Card fields: Webhook URL, Bot Token (for DMs to users) and Server invite (optional).

For notifications in a channel, only the Webhook URL is needed:

  1. in Discord, open Server Settings → Integrations → Webhooks;
  2. click New Webhook, choose the channel and copy the webhook URL;
  3. on the Discord card, paste the URL and click Save and activate.

Direct messages to the app's users

For the app to send a direct message (DM) to the people who use the app, rather than in a channel, three things are needed:

  1. a bot created at discord.com/developers/applications, with the token pasted into Bot Token (for DMs to users);
  2. login with Discord active in the Authentication tab: that is what links the person in the app to their Discord account;
  3. the person having signed in to the app with Discord.

Anyone who did not sign in with Discord gets the notification inside the app, in place of the DM.

Telegram

Card field: Bot token.

What the app does: sends a message to a Telegram chat, group or channel, through your bot.

  1. in Telegram, open a conversation with @BotFather and send /newbot;
  2. choose the bot's name and username. BotFather replies with the token (something like 123456:ABC-DEF…);
  3. on the Telegram card, paste the token and click Save and activate;
  4. add the bot to the group or channel that will receive the messages. In a channel, it needs to be an administrator. In a private conversation, the person needs to have started the conversation with the bot first.

To send, the app needs the destination chat ID. Give it in the assistant's chat along with the request.

Webhook (outgoing)

Card field: Destination URL.

What the app does: sends a POST with the data as JSON to the URL you registered. It is the way to connect the app to any automation of yours: a Zap in Zapier, a scenario in Make, a flow in n8n or an address of your own.

  1. in the automation service, create a webhook-type trigger and copy the URL it generates;
  2. on the Webhook (outgoing) card, paste it into Destination URL and click Save and activate;
  3. ask in the chat what the app should send and when (for example, "when an order is created, send the order to the webhook").

Two rules on the other side:

  • the URL has to be public. Internal network addresses are refused;
  • the destination has to respond with success (a 2xx code). Any other response, including a redirect, counts as a failure, and failures are not charged.

How to test

These cards do not test the credential on save: Connected means it was saved. You can test the URL before even involving the app.

Slack or Discord, straight from your computer: in a terminal, run the command below replacing the URL. A message should appear in the channel.

# Slack
curl -X POST -H "Content-Type: application/json" -d '{"text":"test"}' "YOUR_SLACK_URL"

# Discord
curl -X POST -H "Content-Type: application/json" -d '{"content":"test"}' "YOUR_DISCORD_URL"

Through the app: ask in the chat for a test button that fires the notification (that costs AI credits, like any building). Use the button and check the channel, the group or the automation service's history. If it fails, the error that appears carries the destination's response.

Common problems

  • curl works and the app does not send. Check that you pasted the same URL into the card and that the integration credit balance has not run out;
  • Webhook (outgoing) fails with "destination refused". The destination service responded with an error or a redirect. Look at the code in the message and at the service's history;
  • "webhook_url invalid or points to an internal network". The URL is not public (local address, internal IP). Use the service's public URL;
  • Telegram does not deliver. The bot is not in the group, is not an administrator of the channel, or the person never started a conversation with it. Check the chat ID too;
  • The Discord DM falls back to a notification inside the app. The person did not sign in to the app with Discord, or login with Discord is not active;
  • A webhook URL leaked. Delete the webhook in Slack or Discord, create another one and paste the new URL into the card. On Telegram, generate a new token with /revoke in @BotFather.
Open Fabapp
Related
Activating integrationsNotion, Airtable and MailchimpBackend functions