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

# Slack & Teams notifications

> Get a webhook URL from Microsoft Teams or Slack so flows can post alerts into a channel.

A flow's **notify** step can post into a Slack or Teams channel alongside the in-app alert and the email. Doris posts through an incoming webhook, so there is nothing to install and no admin consent to request — you create the webhook in Slack or Teams, they hand you a URL, and you paste it into Doris.

You need the URL before you can add the channel. This page is how to get it.

<Note>
  Doris only ever posts into your own team's channels. No flow sends anything to your buyer.
</Note>

## Microsoft Teams

Teams webhooks come from **Workflows**, Microsoft's replacement for the retired Office 365 connectors. You create one from the channel you want Doris to post into.

<Steps>
  <Step title="Open Workflows on the channel">
    In Teams, find the channel you want the alerts in. Hover its name in the sidebar, choose the **…** menu, then **Workflows**.

    You can also get there from the channel itself: **…** in the top-right, then **Workflows**.
  </Step>

  <Step title="Pick the webhook template">
    Search the template list for `webhook` and choose **Post to a channel when a webhook request is received**.

    This is the template that matters. Others post plain text and will render Doris alerts as raw data — the one above understands the card Doris sends, so you get the title, the labelled facts and the button.

    For a group chat rather than a channel, choose **Post to a chat when a webhook request is received** instead.
  </Step>

  <Step title="Confirm the connection">
    Teams shows which account the workflow will run as. Confirm it and continue.

    Whoever creates the workflow owns it. If they leave the company and their account is removed, the webhook stops working — so a shared or team-owned account is worth considering for a channel the whole team relies on.
  </Step>

  <Step title="Choose the team and channel">
    Select the team and the channel the messages should land in, then **Add workflow**.
  </Step>

  <Step title="Copy the URL">
    Teams shows the webhook URL once, with a copy button. Copy it now — you cannot see it again later, and getting a new one means creating the workflow again.

    It looks like `https://<something>.environment.api.powerplatform.com/powerautomate/automations/direct/...`.
  </Step>
</Steps>

## Slack

<Steps>
  <Step title="Create or open a Slack app">
    Go to [Slack's app directory](https://api.slack.com/apps) and either create an app for your workspace or open an existing one.
  </Step>

  <Step title="Turn on incoming webhooks">
    Under **Features**, open **Incoming Webhooks** and switch them on.
  </Step>

  <Step title="Add a webhook and choose the channel">
    Choose **Add New Webhook to Workspace**, pick the channel, and allow it.
  </Step>

  <Step title="Copy the URL">
    Copy the URL Slack shows. It starts `https://hooks.slack.com/services/`.
  </Step>
</Steps>

## Add the channel in Doris

A channel lives on the step that posts to it. There is no separate list to keep
— open the flow, open its notify step, and the channel is there.

<Steps>
  <Step title="Open the notify step on the flow">
    On the flow, select the step that does the notifying. Its panel shows the chat channel it posts to. While you are building a flow by asking, Doris offers to add a channel in the conversation as soon as the flow has a notify step.
  </Step>

  <Step title="Name it and paste the URL">
    Give it a name that says which room it is — `#revops`, `Deal alerts`. Then paste the webhook URL. Doris works out whether it is Slack or Teams from the URL itself, so there is nothing to choose.
  </Step>

  <Step title="Send a test">
    Press **Test** and go and look at the channel. A webhook URL says nothing about which room it points at, so this is the only way to be sure it is the one you meant. Test posts only to the channel you pressed it on.
  </Step>
</Steps>

## Choosing where a flow posts

Each notify step posts to the one channel it names, and to nowhere else —
pipeline slips to `#revops`, onboarding to `#csm` — so add as many as you need.
A step with no channel sends no chat message; its alert still reaches the person
in Doris and by email.

The step's panel is also where a channel is renamed or removed, and where it
shows what it last delivered and why it last failed. Renaming matters more than
it sounds: the webhook URL is shown once and never again, so the name is the
only thing anyone will ever see of that channel.

Anyone who can change the flow can change its channels. On a flow you share
with your workspace, that is a workspace administrator; on your own, it is you.

## If nothing arrives

<AccordionGroup>
  <Accordion title="Doris says the URL is not one it recognises">
    Doris accepts webhook URLs on Slack's and Microsoft's own hosts and nothing else — pasting any other address is refused. Check you copied the whole URL, including everything after the `?`.
  </Accordion>

  <Accordion title="The test says delivered, but nothing appeared in Teams">
    Teams accepts the request before it posts anything, so a workflow that was built from the wrong template accepts Doris's message and then does nothing useful with it. Open **Workflows** on the channel, check the run history, and confirm the workflow came from **Post to a channel when a webhook request is received**.
  </Accordion>

  <Accordion title="It worked and then stopped">
    Open the flow's notify step — a failing channel shows the reason there. The usual causes are the workflow being deleted in Teams, the Slack app being removed from the channel, or the account that created the Teams workflow being deactivated.
  </Accordion>

  <Accordion title="Nothing arrives in chat, but the email does">
    The step has no channel named. Open the notify step on the flow and pick one — a step posts only to the channel it names, so adding a channel to the workspace does not by itself make an existing step use it.
  </Accordion>
</AccordionGroup>
