Skip to content

Multi-Channel Notifications

Configure where and how you receive approval requests so you never miss critical decisions.

Edition notes

  • Open Source: notifications via email + mobile app.
  • Enterprise: adds Slack and Mattermost notifications.
  • Mobile & watch apps: proprietary (not open source) clients that can be used with self-hosted/open-source Preloop deployments.

Overview

When an approval is required, Preloop can notify you through multiple channels simultaneously:

  • 📧 Email - Instant email with approve/decline buttons
  • 📱 Mobile - Push notifications to iOS/Android app
  • 💬 Slack - Messages in your Slack workspace (Enterprise)
  • 💬 Mattermost - Messages in your Mattermost instance (Enterprise)
  • 🌐 Web Dashboard - Real-time notifications in the UI

Key benefit: Receive notifications where YOU are, not where the system expects you to be.


Notification Channels

Email Notifications

Always enabled by default - Email is the most reliable notification channel.

How It Works

  1. Approval request created
  2. Email sent to all approvers within seconds
  3. Email includes:
  4. Tool name and description
  5. All arguments (formatted)
  6. Who requested it
  7. When it was requested
  8. Direct Approve and Decline buttons
  9. Link to full details in web dashboard

Example Email

Subject: Approval Required: pay

Tool Call: pay
Description: Send a payment to a recipient

Arguments:
  • recipient: alice@example.com
  • amount: $1,000

Requested by: claude-code-agent (via bob@acme.com)
Requested at: Jan 25, 2025 at 2:30 PM

[Approve] [Decline]

View full details: https://preloop.ai/approvals/req_abc123

📸 Screenshot needed: approval-email.png

One-Click Approval

Click Approve or Decline directly in the email: - No login required (secure token in URL) - Instant decision recorded - Confirmation email sent - Tool executes (if approved) or errors (if declined)

Email Settings

Configure in SettingsNotificationsEmail:

  • Enabled: ON (cannot be disabled - required fallback)
  • From address: hello@preloop.ai
  • Reply-to: Your support email (optional)
  • Include arguments: ON (show full tool arguments in email)
  • Include context: ON (show who requested and when)

Mobile Notifications

Available on iPhone, iPad, Apple Watch, and Android

How It Works

  1. Approval request created
  2. Push notification sent to all registered mobile devices
  3. Tap notification to open approval details in app
  4. One-tap approve or decline with Face ID/Touch ID authentication

iOS App Features

iPhone:

  • Rich push notifications with tool details
  • Open the request in the app for full context
  • Approve or decline directly from mobile
  • Biometric authentication where supported by the device

Apple Watch:

  • Wrist notifications for time-sensitive approvals
  • Approve or decline from watch
  • Haptic feedback confirmation
  • Force touch for additional options

Setup

Step 1: Install App

Install the Preloop mobile app from the relevant store:

Step 2: Register Device

  1. Open the Preloop mobile app
  2. Sign in with your Preloop account
  3. If you use a self-hosted deployment, enter your server URL before signing in
  4. Grant notification permissions when prompted

See Mobile Apps for the current mobile setup flow and visuals.


Slack Notifications

Available with Slack integration

How It Works

  1. Approval request created
  2. Message posted to configured Slack channel
  3. Interactive buttons for Approve/Decline
  4. Threaded discussion for team collaboration
  5. Real-time updates when decision is made

Example Slack Message

🔔 Approval Required

Tool: pay
Recipient: alice@example.com
Amount: $1,000

Requested by: claude-code-agent (Bob Smith)
Requested at: 2:30 PM

[Approve] [Decline]

When someone approves:

✅ Approved by Alice Johnson at 2:32 PM
Payment executed successfully.

📸 Screenshot needed: slack-notification.png, slack-approval-thread.png

Setup

Step 1: Install Slack App

  1. Go to IntegrationsSlack
  2. Click Add to Slack
  3. Select workspace
  4. Authorize permissions:
  5. Post messages
  6. Read channels
  7. Add interactive components
  8. Click Allow

Step 2: Configure Channels

Option A: Default Channel (All Approvals)

# Send all approval requests to #approvals channel
default_channel: "#approvals"

Option B: Tool-Specific Channels

# Send deployment approvals to #deploys
tool: deploy
channel: "#deploys"

# Send payment approvals to #finance
tool: pay
channel: "#finance"

Option C: Team-Based Channels

# Send SRE team approvals to #sre
approvers: [sre_team]
channel: "#sre"

Step 3: Configure Notifications

  • Enabled: ON
  • Default channel: #approvals
  • Mention approvers: ON (tag @user in message)
  • Thread replies: ON (use threads for discussion)
  • Show arguments: ON (include full tool arguments)

Slack Features

Interactive Buttons:

  • Click Approve/Decline directly in Slack
  • No need to open web dashboard
  • Authenticated via Slack user ID

Threaded Discussions:

  • Team can discuss before approving
  • All comments visible in approval history
  • Decision maker clearly identified

Status Updates:

  • Real-time status changes (pending → approved → executed)
  • Tool execution results posted to thread
  • Errors posted if execution fails

Mentions:

  • @user mentions for specific approvers
  • @channel for urgent approvals (optional)
  • @here for high-priority requests (optional)

Slack notifications are configured from the notification settings and approval workflow surfaces in the console.


Mattermost Notifications

Available with Mattermost integration

Similar to Slack, but for Mattermost:

  1. Install Mattermost app
  2. Configure webhook URL
  3. Select channels for notifications
  4. Interactive buttons for approval

Mattermost follows the same workflow pattern: connect the workspace, choose the destination channel, and let approvers respond from chat.


Web Dashboard Notifications

Always available - Real-time notifications in the web UI.

How It Works

  1. Approval request created
  2. Notification bell badge increments (top-right corner)
  3. Dropdown shows pending requests
  4. Click to view full details
  5. Approve or decline in modal

Dashboard Features

Notification Bell:

  • Badge count shows pending requests
  • Red badge for urgent/escalated requests
  • Click to open dropdown

Pending Requests List:

  • Sorted by time (oldest first)
  • Shows tool name, requester, time
  • Color-coded by priority
  • Click to open details

Request Details Modal:

  • Full tool information
  • All arguments formatted
  • Request timeline
  • Approve/Decline buttons
  • Add reason for decision

📸 Screenshot needed: approval-request-list.png, approval-request-detail.png

Real-Time Updates

Dashboard uses WebSocket for live updates: - New requests appear instantly - Status changes update in real-time - Badge count updates automatically - No page refresh needed


Notification Priority

Configure different notification channels based on priority:

Priority Levels

Low Priority:

  • Email only
  • No mobile push
  • Web dashboard only

Normal Priority (Default):

  • Email + Mobile
  • Web dashboard
  • Slack (if configured)

High Priority:

  • Email + Mobile + Slack
  • Critical alert on iOS
  • @mention approvers in Slack

Urgent/Escalated:

  • All channels
  • Critical alerts on mobile
  • @channel in Slack
  • SMS (coming soon)

Configuring Priority

Option 1: Per-Tool Priority

tool: deploy_production
priority: high
notification:
  email: true
  mobile: true
  slack: true

Option 2: Conditional Priority

tool: pay
priority: |
  args.amount > 10000 ? "high" : "normal"

Option 3: Time-Based Priority

tool: rollback_deployment
priority: |
  timestamp(now()).getHours() < 9 || timestamp(now()).getHours() > 17 ? "urgent" : "normal"


Notification Settings

Global notification settings in SettingsNotifications:

General Settings

Quiet Hours:

quiet_hours:
  enabled: true
  start: "22:00"  # 10 PM
  end: "08:00"    # 8 AM
  timezone: "America/Los_Angeles"
  exceptions: ["urgent"]  # Still notify for urgent

Do Not Disturb:

dnd:
  enabled: false
  until: "2025-01-26T08:00:00Z"  # Specific end time
  exceptions: ["deploy_production"]  # Still notify for these tools

Notification Digest:

digest:
  enabled: false
  frequency: "hourly"  # hourly, daily
  channels: ["email"]  # Only digest email, not mobile/Slack

Per-Channel Settings

Email:

  • ✅ Enabled (always)
  • ✅ Include arguments
  • ✅ Include context
  • ✅ One-click approval links

Mobile:

  • ✅ Enabled
  • ✅ Sound
  • ✅ Badge
  • ✅ Critical alerts for urgent

Slack:

  • ✅ Enabled
  • ⚪ Default channel: #approvals
  • ✅ Thread replies
  • ✅ Mention approvers
  • ⚪ Urgent: @channel

Mattermost:

  • ⚪ Enabled (requires integration)
  • ⚪ Webhook URL
  • ⚪ Channel

Web:

  • ✅ Enabled (always)
  • ✅ Real-time updates
  • ✅ Badge count
  • ✅ Browser notifications

Multi-Channel Strategy

For Individual Users:

# Primary: Mobile (fastest response)
mobile: true

# Fallback: Email (if mobile missed)
email: true

# Visibility: Web dashboard
web: true

For Teams:

# Team visibility: Slack channel
slack: true
channel: "#team-approvals"

# Individual alerts: Mobile + Email
mobile: true
email: true

# Backup: Web dashboard
web: true

For High-Stakes Operations:

# All channels for critical operations
tool: deploy_production
notification:
  email: true
  mobile: true
  slack: true
  web: true
escalation:
  enabled: true
  channels: ["mobile", "slack"]  # Escalation gets mobile + Slack only

Notification Content

What's Included

Every notification includes:

Required Information:

  • Tool name
  • Tool description
  • All arguments (formatted)
  • Requester (user or agent)
  • Request timestamp

Optional Information:

  • Why approval is required (policy/condition)
  • Historical context (previous calls)
  • Estimated impact (if available)
  • Rollback plan (if applicable)
  • Related documentation links

Formatting

Arguments:

Arguments:
  • environment: production
  • version: v2.3.0
  • dry_run: false

Complex Arguments:

Arguments:
  • config:
      - replicas: 3
      - cpu: "2000m"
      - memory: "4Gi"
  • tags: [hotfix, urgent]

Sensitive Arguments:

Arguments:
  • database: prod_users
  • password: ********  # Redacted for security

Testing Notifications

Test All Channels

In Web Dashboard:

  1. Go to SettingsNotifications
  2. Click Test Notifications
  3. Select channels to test
  4. Click Send Test
  5. Verify you receive test notifications

Expected result:

  • Email arrives within 30 seconds
  • Mobile push within 10 seconds
  • Slack message posted instantly
  • Web badge increments

Test Approval Flow

Create Test Approval:

  1. Configure a test tool with approval required
  2. Call the tool from MCP client or API
  3. Verify notifications arrive on all configured channels
  4. Approve from ONE channel
  5. Verify other channels update with approval status

Expected result:

  • Notifications arrive on all channels
  • Approval from any channel works
  • All channels show "Approved" status
  • Tool executes successfully

Advanced Configuration

Custom Webhooks

Send notifications to custom endpoints:

tool: deploy
notification:
  webhook:
    url: "https://my-service.com/approvals"
    method: "POST"
    headers:
      Authorization: "Bearer token"
    body: |
      {
        "tool": "{{tool.name}}",
        "args": {{tool.args}},
        "requester": "{{user.email}}"
      }

Conditional Channels

Different channels based on conditions:

tool: pay
notification:
  email: true
  mobile: args.amount > 1000  # Only mobile for large amounts
  slack: args.amount > 10000  # Only Slack for very large

Multiple Slack Channels

Post to different channels based on tool:

# Deployments to #deploys
tool: deploy_*
channel: "#deploys"

# Payments to #finance
tool: pay
channel: "#finance"

# Database to #database
tool: drop_table
channel: "#database"