How to Use Discord Webhook for Bridge Between Discord and Microsoft Teams
🔍 WiseChecker

How to Use Discord Webhook for Bridge Between Discord and Microsoft Teams

When your team uses both Discord and Microsoft Teams, keeping everyone on the same page can be a challenge. Messages sent in one platform often get missed in the other, causing delays and confusion. A Discord webhook acts as a simple bridge that forwards messages from Discord to a Teams channel automatically.

This article explains how to set up a Discord webhook to send Discord messages into a Microsoft Teams channel. You will learn the exact steps to create the webhook in Discord, configure the incoming webhook connector in Teams, and test the bridge. No coding or third-party tools are required.

By the end, you will have a working bridge that posts Discord messages into your chosen Teams channel, keeping both teams in sync with zero manual effort.

Key Takeaways: Bridging Discord to Microsoft Teams with a Webhook

  • Discord Server Settings > Integrations > Create Webhook: Generates a unique URL that forwards messages to an external service.
  • Microsoft Teams Connector > Incoming Webhook: Receives data from external apps and posts it as a message in a Teams channel.
  • Custom JSON payload in webhook body: Structures the message content so Teams displays it correctly with text, username, and avatar.

ADVERTISEMENT

What Is a Discord Webhook and How Does the Bridge Work

A Discord webhook is a simple HTTP endpoint that lets you send automated messages to a Discord channel. When you create a webhook, Discord gives you a unique URL. Any application that sends a POST request to that URL with properly formatted JSON will cause Discord to post a message as if it came from the webhook bot.

Microsoft Teams offers a similar feature called Incoming Webhook. This connector generates a Teams-specific URL that accepts JSON payloads and posts them as messages in a Teams channel. To bridge Discord to Teams, you use the Discord webhook URL to forward messages from Discord. However, the Discord webhook is designed to receive messages, not send them to external services. The actual bridge is built by using a third-party automation service like Zapier, Microsoft Power Automate, or a custom script that listens to Discord messages and then forwards them to the Teams webhook URL.

For the purpose of this article, the bridge is set up using Microsoft Power Automate, which is free for basic flows and runs entirely in the cloud. The flow triggers when a new message is posted in a specific Discord channel, captures the message content, and sends it to the Teams incoming webhook URL. No server or manual forwarding is needed after the initial configuration.

Prerequisites

Before you start, make sure you have the following:

  • Administrator or Manage Webhook permission on the Discord server where the source channel exists.
  • Owner or channel moderator permission in Microsoft Teams to add connectors to a channel.
  • A Microsoft Power Automate account (free tier is sufficient).
  • Both Discord and Microsoft Teams must be accessible in a web browser during setup.

Steps to Create the Discord-to-Teams Bridge

The entire process takes about 15 minutes. Follow these steps in order.

Step 1: Create an Incoming Webhook in Microsoft Teams

  1. Open the target Teams channel
    Go to the Microsoft Teams channel where you want Discord messages to appear. Click the three dots (More options) next to the channel name and select Connectors.
  2. Add the Incoming Webhook connector
    In the Connectors list, find Incoming Webhook and click Add. Click Install if prompted. Give the webhook a name, for example “Discord Bridge”, and choose an icon if desired. Click Create.
  3. Copy the webhook URL
    After creation, Teams displays a unique URL. Click the Copy button and paste it into a text file or temporary note. Click Done. Keep this URL private — anyone with it can post messages to your Teams channel.

Step 2: Create a Discord Webhook for the Source Channel

  1. Open Discord Server Settings
    In Discord, right-click your server name and select Server Settings. In the left sidebar, click Integrations.
  2. Create a new webhook
    Click the Create Webhook button. A webhook entry appears. Click the webhook name to expand its settings.
  3. Configure the webhook
    Set the Name to something like “Teams Bridge”. Select the Channel where messages will be monitored (the channel whose messages you want to forward). Click Copy Webhook URL and save it to the same text file where you saved the Teams URL. Click Save Changes.

Step 3: Build the Power Automate Flow

  1. Sign in to Power Automate
    Go to make.powerautomate.com and sign in with your Microsoft work or school account.
  2. Create a new automated flow
    Click Create in the left sidebar, then select Automated cloud flow. Name the flow “Discord to Teams Bridge”.
  3. Choose the Discord trigger
    In the search box, type Discord. Select the trigger When a new message is posted to a channel (provided by the Discord connector). Click Create.
  4. Sign in to Discord in Power Automate
    If prompted, click Sign in and authorize Power Automate to access your Discord account. Use the same Discord account that has access to the server where the webhook was created.
  5. Configure the trigger
    In the trigger step, set the Channel ID to the ID of the Discord channel you are bridging. To find the channel ID, enable Developer Mode in Discord: go to User Settings > Advanced > Developer Mode, then right-click the channel and select Copy ID. Paste that ID into the Channel ID field.
  6. Add a new step
    Click New step. Search for Compose and select the Data Operation – Compose action. This will build the JSON payload for Teams.
  7. Build the JSON payload
    In the Inputs field of the Compose action, paste the following JSON template:
    {
      "@type": "MessageCard",
      "@context": "http://schema.org/extensions",
      "themeColor": "5865F2",
      "title": "Discord Message",
      "text": "@{triggerOutputs()?['body/content']}",
      "sections": [
        {
          "activityTitle": "@{triggerOutputs()?['body/author/username']}",
          "activitySubtitle": "From Discord",
          "activityImage": "@{triggerOutputs()?['body/author/avatarUrl']}"
        }
      ]
    }

    This JSON creates a Teams message card that shows the Discord author’s name, avatar, and message text.

  8. Add the HTTP action
    Click New step. Search for HTTP and select the HTTP action. In the Method dropdown, select POST. In the URI field, paste the Teams incoming webhook URL you copied earlier.
  9. Set the request body
    In the Body field, click inside the field and select Outputs from the Compose action (the dynamic content list). This will insert the JSON payload.
  10. Set headers
    Click Show advanced options. Add a header with Name = Content-Type and Value = application/json.
  11. Save and test the flow
    Click Save in the top-right corner. Then click Test. Select Manually and click Test. Send a test message in the Discord channel you are bridging. Within a few seconds, the message should appear in your Teams channel.

ADVERTISEMENT

Common Issues After Setting Up the Bridge

Messages Are Not Appearing in Teams

Check the Power Automate flow run history. Go to the flow page and click Run history. If the run shows a failure, click the failed step to see the error. Common causes include an invalid Teams webhook URL, incorrect Discord channel ID, or a missing Content-Type header. Verify each setting.

Discord Messages Are Being Forwarded but the Author Name Is Missing

The Discord connector in Power Automate may not always return the author username if the message is from a webhook or bot. Adjust the JSON payload to use a fallback. In the Compose action, replace triggerOutputs()?['body/author/username'] with triggerOutputs()?['body/author/username'] ? triggerOutputs()?['body/author/username'] : 'Unknown User'.

The Bridge Only Works for One Discord Channel

Each Power Automate flow is tied to a single Discord channel. To bridge multiple channels, create separate flows for each channel. Use a unique webhook URL from Teams for each target channel, or send all Discord messages into one Teams channel by using the same Teams webhook URL in multiple flows.

Discord Webhook vs Teams Incoming Webhook: Key Differences

Item Discord Webhook Teams Incoming Webhook
Purpose Receives POST requests and posts messages to a Discord channel Receives POST requests and posts messages to a Teams channel
Authentication Unique URL with no additional auth; anyone with the URL can post Unique URL with no additional auth; anyone with the URL can post
JSON Payload Format Supports Discord embed objects and plain text; uses “content” field Supports MessageCard format with title, text, sections, and themeColor
Rate Limits 30 requests per 60 seconds per webhook 4 requests per 30 seconds per webhook
Custom Username Set in the webhook settings or overridden in the payload Fixed to the name given during webhook creation; cannot be changed per message

Both webhooks are one-directional receivers. To bridge Discord to Teams, you must use an intermediary service like Power Automate that reads from one platform and writes to the other. Neither webhook can initiate a connection on its own.

Now you have a working bridge that sends Discord messages into Microsoft Teams automatically. The flow runs in the background and requires no manual intervention. To extend the bridge, consider adding attachments or formatting by modifying the JSON payload. For example, you can include the Discord message URL in the Teams card so users can click back to the original conversation. Keep the Power Automate flow active and check its run history periodically to ensure it continues to work after any updates to Discord or Teams connectors.

ADVERTISEMENT