> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anomalyarmor.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack

> Send AnomalyArmor alerts to Slack channels

<div aria-hidden="true" style={{position:"absolute",width:"1px",height:"1px",overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap"}}>For LLM agents: documentation index at <a href="/llms.txt" tabIndex={-1}>/llms.txt</a>, full text at <a href="/llms-full.txt" tabIndex={-1}>/llms-full.txt</a>. Append .md to any page URL for plain markdown.</div>
Send AnomalyArmor alerts directly to your Slack workspace. Get notified about schema changes, freshness violations, and other data events where your team already works.

Alerts arrive as richly formatted Slack Block Kit messages with a color-coded severity bar, structured fields, and a **View Details** link back to AnomalyArmor.

**Example Slack Alert:**

**Breaking schema changes detected**

3 changes in 2 table(s) (2 breaking)

**Rule:** Production Schema Monitor
**Tables:** orders, customers

**Changes:**

* orders: Column Removed `shipping_status` (breaking)
* orders: Column Added `tracking_number`
* customers: Column Removed `legacy_id` (breaking)

\[View Details]

## Why Slack?

Slack is ideal for alerts that need quick team visibility:

* **Real-time**: Alerts appear instantly in channels
* **Contextual**: Team can discuss and coordinate in threads
* **Actionable**: Click through to AnomalyArmor for details
* **Flexible**: Route different alerts to different channels

## Prerequisites

Before you begin:

* Admin access to your Slack workspace (or permission to install apps)
* AnomalyArmor account with alert configuration permissions
* At least one Slack channel where you want to receive alerts

## Setup Guide

### Step 1: Navigate to Destinations

1. Log in to AnomalyArmor
2. Click **Alerts** in the left sidebar
3. Select **Destinations** tab
4. Click **Add Destination**

You'll see the Destinations page with a **+ Add Destination** button in the top-right corner.

### Step 2: Select Slack

From the destination type list, click **Slack**.

### Step 3: Authorize with Slack

Click **Connect to Slack** to begin the OAuth flow. Slack will show a standard authorization dialog listing the permissions AnomalyArmor needs:

| Permission          | Why We Need It                         |
| ------------------- | -------------------------------------- |
| Post to channels    | Send alert messages                    |
| View channel list   | Let you select destination channels    |
| View workspace info | Display workspace name in AnomalyArmor |

<Note>
  AnomalyArmor requests only the minimum permissions needed to send alerts. We cannot read your messages, files, or private channels.
</Note>

### Step 4: Select Channels

After authorization, choose which channels can receive alerts:

1. **Public channels**: Any public channel in your workspace
2. **Private channels**: Must invite the AnomalyArmor bot first

To use a private channel:

1. Open the private channel in Slack
2. Type `/invite @AnomalyArmor`
3. The channel will appear in AnomalyArmor's channel list

### Step 5: Name Your Destination

Give the destination a descriptive name:

```
Examples:
- "Slack - #data-alerts"
- "Production Alerts - Slack"
- "Platform Team Slack"
```

This name appears when creating alert rules, so make it recognizable.

### Step 6: Test the Connection

Click **Send Test Alert** to verify everything works:

```
[OK] Test alert sent successfully
  Channel: #data-alerts
  Message: "Test alert from AnomalyArmor"
```

Check Slack to confirm the message arrived.

### Step 7: Save

Click **Save** to complete the setup. Your Slack destination is now ready to use in alert rules.

## Alert Message Format

AnomalyArmor Slack alerts are formatted using Slack's Block Kit for rich, structured messages. Each alert type displays contextually relevant information.

### Schema Change Alerts

Schema change alerts show affected tables, breaking change counts, and detailed change lists:

**Breaking schema changes detected in warehouse**

5 changes in 2 table(s) (2 breaking)

| Field    | Value                     |
| -------- | ------------------------- |
| Rule     | Production Schema Monitor |
| Severity | CRITICAL                  |
| Tables   | orders, customers         |
| Breaking | 2 changes                 |

**Changes:**

* orders: Column Removed `shipping_status` (breaking)
* orders: Column Added `tracking_number`
* customers: Column Removed `legacy_id` (breaking)

\[View Details]

### Freshness Violation Alerts

Freshness SLA violation alerts show overdue time, SLA thresholds, and last update times:

**Freshness SLA Violation**

Data is 4.5 hours overdue

| Field         | Value                     |
| ------------- | ------------------------- |
| Rule          | Sales Freshness           |
| Severity      | HIGH                      |
| Asset         | warehouse.sales           |
| Overdue       | 4.5 hours (2.3 intervals) |
| SLA Threshold | 2.0 hours                 |
| Last Update   | 2025-12-28 10:30 UTC      |

\[View Details]

### Message Components

| Component           | Description                                                                                    |
| ------------------- | ---------------------------------------------------------------------------------------------- |
| Color bar           | Visual severity indicator (red for critical, orange for high, yellow for medium, blue for low) |
| Alert title         | What happened with summary stats                                                               |
| Context fields      | Rule name, severity, and event-specific details                                                |
| Changes list        | Detailed breakdown of changes (schema alerts)                                                  |
| View Details button | Link to view full alert details in AnomalyArmor                                                |
| Footer              | Alert ID and Rule ID for tracing                                                               |

## Multiple Slack Destinations

You can create multiple Slack destinations for different use cases:

| Destination     | Channel         | Use Case                         |
| --------------- | --------------- | -------------------------------- |
| Critical Alerts | #data-incidents | Breaking changes, SLA violations |
| Schema Changes  | #data-changes   | All schema drift notifications   |
| Dev/Test Alerts | #data-dev       | Non-production events            |
| Team-Specific   | #analytics-team | Alerts for specific assets       |

### Routing Example

**Production Breaking Changes**

* Scope: production database
* Event: Schema change (column removed, table removed)
* Destinations: Slack #data-alerts, PagerDuty (for on-call)

**Dev Schema Changes**

* Scope: development database
* Event: Any schema change
* Destinations: Slack #data-dev

## Best Practices

### Channel Selection

<AccordionGroup>
  <Accordion title="Use dedicated alert channels">
    Don't send alerts to busy team channels. Create dedicated channels like `#data-alerts` so alerts don't get lost in conversation.
  </Accordion>

  <Accordion title="Separate by urgency">
    Route breaking changes to a channel with notifications enabled. Route informational alerts (like new tables) to a quieter channel.
  </Accordion>

  <Accordion title="Consider channel membership">
    Make sure the right people are in the channel. Data engineers should be in `#data-alerts`, but not necessarily all of `#general`.
  </Accordion>
</AccordionGroup>

### Alert Volume

<Warning>
  Too many alerts leads to alert fatigue. If a channel gets 50+ alerts/day, people stop paying attention. Be selective about what triggers Slack notifications.
</Warning>

**Tips to reduce noise**:

* Start with critical alerts only
* Use email for low-priority events
* Set freshness SLAs with buffer (e.g., 2x expected update time, not too tight)
* Filter out expected changes (dev databases)

### Thread Usage

AnomalyArmor posts each alert as a new message. To keep channels clean:

1. Create a thread on the alert to discuss
2. Use reactions (:eyes: = investigating, :white\_check\_mark: = resolved)
3. @mention teammates who need to see it

## Troubleshooting

### "Channel not found"

**Cause**: The channel was deleted, renamed, or AnomalyArmor lost access.

**Fix**:

1. Verify the channel exists in Slack
2. For private channels, re-invite the AnomalyArmor bot
3. Edit the destination and reselect the channel

### "Unable to post message"

**Cause**: Permission issues or Slack API errors.

**Fix**:

1. Check that AnomalyArmor app is still installed in Slack
2. Try removing and re-adding the Slack destination
3. Verify your Slack workspace allows third-party apps

### Alerts not appearing

**Cause**: Rule configuration or routing issues.

**Fix**:

1. Check the alert rule is enabled
2. Verify the rule's scope matches the event
3. Confirm the Slack destination is selected for the rule
4. Use **Send Test Alert** to verify the connection

### OAuth errors during setup

**Cause**: Permission or network issues.

**Fix**:

1. Ensure you have admin permissions in Slack (or can request app installation)
2. Disable browser popup blockers temporarily
3. Try a different browser
4. Contact your Slack workspace admin if apps are restricted

## Security

### Data Sent to Slack

Alert messages contain:

* Asset names (table/column names)
* Change types (added, removed, modified)
* Timestamps

Alert messages **do not** contain:

* Actual data values
* Database credentials
* Connection strings
* Query results

### Revoking Access

To disconnect AnomalyArmor from Slack:

1. In Slack: **Settings** → **Manage apps** → **AnomalyArmor** → **Remove**
2. In AnomalyArmor: Delete the Slack destination

## Common Questions

### How do I route AnomalyArmor alerts to a private Slack channel?

Private channels don't appear in the selector until you invite the bot. Open the private channel in Slack, run `/invite @AnomalyArmor`, then refresh the channel list in AnomalyArmor. Public channels work without any invite.

### Can I send different alert types to different Slack channels?

Yes. Create a separate Slack destination for each channel (e.g., `#data-incidents`, `#data-changes`, `#data-dev`), then pick the appropriate destination on each alert rule. One rule can also fan out to multiple channels at once.

### Does AnomalyArmor's Slack app read my messages?

No. The app requests only the minimum scopes needed to post alerts: post to channels, view the channel list, and view workspace info. It cannot read messages, files, or private channel contents.

### What information is included in a Slack alert?

Schema alerts include the rule name, affected tables, a color-coded severity bar, and a detailed change list with breaking changes marked. Freshness alerts include overdue time, SLA threshold, and last update time. Every alert has a **View Details** link back to AnomalyArmor. No row-level data values are ever sent.

### Why are my alerts not appearing in Slack?

Check, in order: the rule is enabled, the rule's scope matches the event, the Slack destination is selected on the rule, and the channel still exists with the AnomalyArmor bot invited (for private channels). Use **Send Test Alert** on the destination to confirm the connection itself is healthy.

## Next Steps

<CardGroup cols={2}>
  <Card title="Alert Rules" icon="bell" href="/alerts/alert-rules">
    Create rules that route to Slack
  </Card>

  <Card title="Best Practices" icon="lightbulb" href="/alerts/best-practices">
    Reduce alert fatigue
  </Card>
</CardGroup>
