# Slack alerts

{% hint style="info" %}
Paradime integrates natively with Elementary CLI to enable you to generate report and/or send alerts using the Bolt scheduler out of the box. **No additional installation required.**
{% endhint %}

## Configuring Slack <a href="#execute-the-cli" id="execute-the-cli"></a>

### 1. Create a Slack app

Go to the [Slack page to create apps](https://api.slack.com/apps?new_app=1) and create a new app (from scratch). You can call this it "Paradime Alerts" and connect it to the workspace of your choice. You can add the Paradime logo for the Bot. **Download this** [**here**](https://20146536.fs1.hubspotusercontent-na1.net/hubfs/20146536/logo-no-text-light-transparent-3x.png)**.**

### 2. Create a Slack token

Go to the "OAuth & Permissions" page for your newly-created app, and add the following scopes under "Bot Token Scopes":

* `channels:join` - Join public channels in a workspace
* `channels:read` - View basic information about public channels in a workspace
* `chat:write` - Send messages as \<app>
* `files:write` - Upload, edit, and delete files as \<app>
* `users:read` - View people in a workspace
* `users:read.email` - View email addresses of people in a workspace
* `groups:read` - View basic information about private channels that your slack app has been added to

### 3. Install app at your Workspace and add to your alerts Slack Channel

At the "OAuth & Permissions" page, click "Install to \[workspace\_name]" in order to generate Slack token.

## Configure a Bolt schedule with Elementary CLI <a href="#execute-the-cli" id="execute-the-cli"></a>

{% hint style="info" %}
You can use a runtime environment variable to pass your Slack token to the `edr` command at runtime. [Check our docs here.](/app-help/documentation/bolt/special-environment-variables/runtime-environment-variables.md)
{% endhint %}

### Alert on tests and models <a href="#alert-on-source-freshness-failures" id="alert-on-source-freshness-failures"></a>

Configure a [Bolt schedule](/app-help/documentation/bolt.md) with the `edr monitor` CLI command at the end. Ideally this should be the command after your dbt runs and tests:

```bash
dbt run
dbt test
edr monitor --slack-token <your_slack_token> --slack-channel-name <slack_channel_to_post_at>
```

### Alert on source freshness failures <a href="#alert-on-source-freshness-failures" id="alert-on-source-freshness-failures"></a>

To alert on source freshness, you will need to run `edr run-operation upload-source-freshness` right after each execution of `dbt source freshness`. This operation will upload the results to a table, and the execution of `edr monitor` will send the actual alert.

```bash
dbt source freshness
edr run-operation upload-source-freshness --project-dir .
edr monitor --slack-token <your_slack_token> --slack-channel-name <slack_channel_to_post_at>
```

{% hint style="info" %}
`Note:`

* `dbt source freshness` and `upload-source-freshness` needs to run from the same machine.
* `upload-source-freshness` requires passing `--project-dir` argument.
  {% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.paradime.io/app-help/documentation/integrations/observability/elementary-data/sending-alerts/slack-alerts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
