# 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.](https://docs.paradime.io/app-help/documentation/bolt/special-environment-variables/runtime-environment-variables)
{% endhint %}

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

Configure a [Bolt schedule](https://docs.paradime.io/app-help/documentation/bolt) 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 %}
