# Chat Integrations (/platform/integrations/chat)

Configure and manage chat providers like Slack, Microsoft Teams, WhatsApp, and Discord with Novu's notification infrastructure.

The Chat channel delivers messages to your subscribers via their preferred chat platforms and application.

## Messaging platforms vs. Messaging applications

* **Messaging platforms**: Ideal for structured, workplace communication. Use these to notify teams or users in collaborative environments. Examples: Slack, Teams
* **Messaging apps**: Best for consumer-facing messaging. Engage users directly through personal or group chats. Examples: WhatsApp, Telegram, Discord

## How chat delivery works in Novu

Here’s the typical flow for sending a chat notification through Novu:

<Steps>
  <Step>
    ### Add a chat provider

    Start by adding a chat provider in the integration store on your Novu dashboard.\
    You can connect one or more integrations for different or even the same providers, for example, multiple Slack workspaces.

    To learn how to add a chat provider, refer to [the setup guide](/platform/integrations/chat#supported-providers) for that provider.
  </Step>

  <Step>
    ### Add the chat channel to your workflow

    Next, include a Chat step in your workflow.\
    This step defines when and how a chat message should be sent as part of your notification workflow.
  </Step>

  <Step>
    ### Define the chat content

    Within the Chat step editor, write the message body.\
    The editor supports dynamic data for personalized and contextual messages.
  </Step>

  <Step>
    ### Store subscriber credentials

    Each subscriber must have valid chat credentials, such as a `webhookUrl` or unique identifier, to receive chat notifications.\
    You can store or update these credentials using the Novu dashboard, API, or SDKs.
  </Step>

  <Step>
    ### Trigger the workflow

    Trigger the workflow using your application code. Novu automatically:

    * Resolves the subscriber.
    * Retrieves the correct credentials, for example, the `webhookUrl`.
    * Selects the appropriate provider.
    * Renders the message.
    * Delivers it to the chat platform.
  </Step>
</Steps>

## Configuring chat providers

When you add a chat provider in the Integration Store, you'll configure credentials specific to that provider.

### Provider authentication

You may need to provide credentials specific to your chat provider, such as an API key, Client ID, or Client Secret. However, some providers, like Discord, may not require any global credentials to be set in the Integration Store.

Each provider has different requirements.

<Callout type="info"> For detailed setup guides for each provider integration, refer to the supported chat providers list at the end of this page .</Callout>

## How to manages Chat credentials

The chat channel works by storing specific credentials for each subscriber. This credential is typically a `webhookUrl` that tells Novu where to send a message for that specific subscriber.

Before triggering a chat notification, you must update the subscriber with this `webhookUrl`.

### Storing subscriber credentials

Use the `subscribers.credentials.update` method to store the `webhookUrl` for a specific subscriber and provider.

Checkout the [API reference](/api-reference/subscribers/update-provider-credentials) for more details.

<Tabs items={['Node.js', 'cURL']}>
  <Tab value="Node.js">
    ```typescript
    import { Novu } from '@novu/api';
    import { ChatOrPushProviderEnum } from "@novu/api/models/components";

    const novu = new Novu({
      secretKey: "<NOVU_SECRET_KEY>",
      // Required if using EU region
      // serverURL: "https://eu.api.novu.co",
    });

    await novu.subscribers.credentials.update(
      {
        providerId: ChatOrPushProviderEnum.Discord,
        credentials: {
          webhookUrl: "<WEBHOOK_URL>",
        },
        integrationIdentifier: "discord-MnGLxp8uy",
      },
      "subscriberId"
    );
    ```
  </Tab>

  <Tab value="cURL">
    ```bash
    curl -L -X PUT 'https://api.novu.co/v1/subscribers/<SUBSCRIBER_ID>/credentials' \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'Authorization: ApiKey <NOVU_SECRET_KEY>' \
    -d '{
      "providerId": "slack",
      "credentials": {
          "webhookUrl": "<WEBHOOK_URL>"
      },
      "integrationIdentifier": "slack-MnGLxp8uy"
    }'
    ```
  </Tab>
</Tabs>

## Supported providers

Here are the chat providers that are currently supported by Novu. Select any provider to see its detailed setup guide.

<Cards>
  <Card title="Discord" href="/platform/integrations/chat/discord"> Learn how to use the Discord provider to send chat notifications using Novu. </Card>
  <Card title="Mattermost" href="/platform/integrations/chat/mattermost"> Learn how to use the Mattermost provider to send chat notifications using Novu.</Card>
  <Card title="Microsoft Teams" href="/platform/integrations/chat/ms-teams"> Learn how to use the Microsoft Teams provider to send chat notifications using Novu.</Card>
  <Card title="Slack" href="/platform/integrations/chat/slack"> Learn how to use the Slack provider to send chat notifications using Novu.</Card>
  <Card title="WhatsApp Business" href="/platform/integrations/chat/whats-app"> Learn how to use the WhatsApp Business provider to send chat notifications using Novu.</Card>
  <Card title="Zulip" href="/platform/integrations/chat/zulip"> Learn how to use the Zulip provider to send chat notifications using Novu.</Card>
</Cards>
