Browse documentation

How do I get notified when an agent needs approval?

A require_approval verdict is only useful if a human actually sees it. Every held call emails the key's approver group automatically; notification configs add Slack, Microsoft Teams, and Telegram on top — one reusable, org-scoped setup.

Two layers: email always, chat channels by config

Email is not something you configure per key.Whenever a call is held for approval, Enforgate emails the members of the key's approver group, unconditionally. Which provider sends that email is an org-wide choice on Settings → Notifications (admin only): Enforgate's built-in sender (no setup) or your own custom SMTP server.

Notification configs are the second layer: a named, reusable setup for the chat channels — Slack, Microsoft Teams, and Telegram. A config must enable at least one of the three. Each API key can be assigned at most one config; configure Slack once and assign the same config to every key that should post there, instead of re-entering the webhook URL per key. A key with no config still emails its approver group — nothing goes silent.

Set up Slack

Slack delivery uses an incoming webhook. Enforgate posts a Block Kit message with the call details and Approve/Deny buttons.

  1. Go to api.slack.com/apps and click Create New App From scratch. Name it (e.g. "Enforgate Approvals") and pick your workspace.
  2. In the app's sidebar, open Incoming Webhooks and toggle Activate Incoming Webhooks on.
  3. Click Add New Webhook to Workspace, choose the channel approvals should post into, and click Allow.
  4. Copy the generated URL — it looks like https://hooks.slack.com/services/T…/B…/… — and paste it into the config's Incoming webhook URL field.

Set up Microsoft Teams

Teams delivery also uses an incoming webhook URL, created through the Workflows app (Power Automate). Microsoft has retired the old Office 365 Connectors, so Workflows is the way to do it; legacy connector URLs that still work are accepted too.

  1. In Teams, go to the channel that should receive approvals, click the menu next to the channel name, and choose Workflows.
  2. Pick the template "Post to a channel when a webhook request is received"(searching for "webhook" finds it — templates named "Send webhook alerts to a channel" work the same way).
  3. Confirm the team and channel, then click Add workflow.
  4. Copy the HTTP URL the workflow shows you and paste it into the config's Incoming webhook URL field. Enforgate posts an approval card with Approve/Deny buttons.

Set up Telegram

Telegram delivery needs two values: a bot token and the chat ID of the group or chat to post into. Enforgate sends the approval with an inline Approve/Deny keyboard.

  1. In Telegram, message @BotFather, send /newbot, and follow the prompts. BotFather replies with the bot token — it looks like 123456:ABC-DEF….
  2. Add your new bot to the group that should receive approvals (or open a direct chat with it).
  3. Send any message in that group, then find the chat ID by visiting https://api.telegram.org/bot<TOKEN>/getUpdates in a browser and reading chat.id from the response:
getUpdates response (trimmed)
{
  "result": [{
    "message": {
      "chat": { "id": -1001234567890, "title": "Ops approvals", "type": "supergroup" }
    }
  }]
}

Group chat IDs are negative numbers (like -1001234567890); a direct chat with the bot has a positive ID. Paste the token and chat ID into the config's Bot token and Chat ID fields.

Fan-out and resolution

Turn on more than one channel and a single approval request goes out on all of them in parallel, alongside the approver-group email. Whichever button or link gets used first resolves the request; the others just stop mattering.

Use Send test on a config to fire a sample notification through every enabled channel before you assign it to a real key.

Secrets are encrypted, never round-tripped

Slack/Teams webhook URLs and the Telegram bot token are encrypted at rest (AES-256-GCM). The dashboard never sends a stored secret back to your browser. Edit the config and leave a secret field blank to keep the existing value; type a new value to rotate it.

The Slack/Teams/Telegram channels, and custom SMTP for the org email provider, are Pro and Scale features. On the Free plan, approvals still notify by email through Enforgate's hosted sender.

How this fits with approvals

Notification configs only control where the chat alert goes. Who receives the email — and who is expected to act — is the key's approver group; see routing approvals to the right person.