# Outputs

Brist pipes alerts and filtered & enriched event data to designated destinations. Currently, we support Discord, Telegram, and custom webhooks.&#x20;

### Discord

Brist uses Discord webhooks to send messages to Discord channels. You can learn more about how to set up webhooks in the "Setting up Discord Output" guide.&#x20;

{% content-ref url="../guides/setting-up-discord-output" %}
[setting-up-discord-output](https://docs.usebrist.com/guides/setting-up-discord-output)
{% endcontent-ref %}

Note that anyone can POST to your Discord channel's webhook to create a message. If you'd like to guard against bad actors by requiring a signature, please reach out to <jagathvythee@gmail.com>

### Telegram

Brist operates a Telegram bot that can send messages to chats. To output Brist alerts to Telegram, you'll need to add the bot as an admin to a chat and find the chat URL. You can learn more about setting this up in the "Setting up Telegram Output" guide.&#x20;

{% content-ref url="../guides/setting-up-telegram-output" %}
[setting-up-telegram-output](https://docs.usebrist.com/guides/setting-up-telegram-output)
{% endcontent-ref %}

### Custom Webhooks

Brist also lets you enable your own custom actions through sending POST requests to user-defined webhook URL's for each filter-matched transfer event.

#### Webhook Payload Properties

| Key               | Type              | Description                                                                                                        |
| ----------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------ |
| `transactionHash` | `string`          | Hash of the transaction in which the event took place                                                              |
| `transferEvents`  | `[]TransferEvent` | The transfer events that took place in the transaction. At least one of these matched the criteria from the filter |
| `textMessage`     | `string`          | The alert message formulated by Brist                                                                              |

#### TransferEvent Properties

| Key               | Type            | Description                                                                                 |
| ----------------- | --------------- | ------------------------------------------------------------------------------------------- |
| `sender`          | `string`        | The address of the sender                                                                   |
| `receiver`        | `string`        | The address of the recipient                                                                |
| `amount`          | `int`           | The (unadjusted) number of tokens transferred. Only applies to ETH or ERC20 transfers       |
| `nftMetadata`     | `NFTMetadata`   | Enriched information about the NFT. Only applies if the transferred asset was ERC721        |
| `tokenMetadata`   | `TokenMetadata` | Enriched information about the ERC20 token. Only applies if the transferred asset was ERC20 |
| `contractAddress` | `string`        | Address of the contract underlying the transfer                                             |
| `contractType`    | `string`        | One of `ETH Transfer`, `ERC20 Transfer`, or `ERC721 Transfer`                               |

#### NFTMetadata Properties

Note that the NFT Metadata object is only present if the transferred asset in this event was an NFT.

| Key                | Type     | Description                                                  |
| ------------------ | -------- | ------------------------------------------------------------ |
| `tokenID`          | `uint`   | The ID of the token in the NFT collection                    |
| `collectionName`   | `string` | The name of the NFT collection (e.g. `Bored Ape Yacht Club`) |
| `collectionSymbol` | `string` | The symbol of the NFT collection (e.g. `BAYC`)               |

For information on how to set up the Webhook output, see the relevant Guide below.

{% content-ref url="broken-reference" %}
[Broken link](https://docs.usebrist.com/fundamentals/broken-reference)
{% endcontent-ref %}

{% hint style="warning" %}
Brist's POST requests are not authenticated, though this feature will be released soon. If you need authentication to ensure that the requests come from Brist, please reach out to <jagath@usebrist.com>, and we'll add keys to your alerts. One workaround is to add a secret string to your webhook path.
{% endhint %}
