# Microsoft Teams Trigger

**URL:** <https://community.n8n.io/t/microsoft-teams-trigger/7871>\
**Category:** Feature Requests\
**Tags:** node\
**Created:** [September 15, 2021, 2:50pm UTC](https://community.n8n.io/t/microsoft-teams-trigger/7871 "2021-09-15T14:50:14Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Radiergummi](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/radiergummi/32/6639_2.png) [@Radiergummi](https://community.n8n.io/u/Radiergummi)\
**Post date:** [September 15, 2021, 2:50pm UTC](https://community.n8n.io/t/microsoft-teams-trigger/7871/1 "2021-09-15T14:50:15Z")

</div>

Microsoft Teams supports [incoming webhooks](https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-outgoing-webhook?tabs=urljsonpayload%2Cdotnet#create-an-outgoing-webhook). I would like to propose adding a trigger for incoming webhooks to n8n, allowing to process incoming messages.

> Incoming webhooks work by adding a “virtual user” to a channel you can simply at-mention to invoke:
> 
> ```auto
> @MyWebhook hello world!
> 
> ```
> 
> On writing this message to a channel with a connected incoming webhook, an HTTP request will be sent to the webhook’s endpoint. The endpoint must reply (within 5 seconds) by responding with a message payload.

I think this fits very neatly in n8n.

After implementing this myself (and [hitting some annoyances](http://community.n8n.io/t/access-raw-request-body/7866)), I know how an implementation should look like and what it should be capable of:

1. **Credentials:** Teams signs all requests using [HMAC](https://security.stackexchange.com/a/20301/67818). Creating the HMAC requires to encrypt the raw request body with the base64-decoded binary secret provided by Teams when creating the webhook.  
In n8n, the user should be able to create a Credential containing the secret that is mandatory to use the trigger node.  
The [official Node.js code example](https://github.com/OfficeDev/Microsoft-Teams-Samples/blob/main/samples/outgoing-webhook/nodejs/app.js) does the following to encrypt the message:

2. **Message parsing:** Teams provides lots of meta data for the message. An (redacted) example:

3. **Send responses:** Incoming webhooks _have_ to answer with a reply to the original message. The options of the [Webhook node](https://docs.n8n.io/nodes/n8n-nodes-base.webhook/?utm_source=n8n_app&utm_medium=node_settings_modal-credential_link&utm_campaign=n8n-nodes-base.webhook) were useful for this (particularly _Response Mode_), but it would be neat to have a default option in case no response is created during the workflow. A minimal response looks like the following:

I’m happy to help with this if I can!

---

<div class="post-metadata">

**Author:** ![RicardoE105](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/ricardoe105/32/550_2.png) [@RicardoE105](https://community.n8n.io/u/RicardoE105)\
**Post date:** [September 16, 2021, 3:02am UTC](https://community.n8n.io/t/microsoft-teams-trigger/7871/2 "2021-09-16T03:02:34Z")

</div>

We kinda do the same with the telegram node. It has a resource called “callback” and operations to reply. This helps to simplify the creation of telegram bots.

---

<div class="post-metadata">

**Author:** ![RicardoE105](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/ricardoe105/32/550_2.png) [@RicardoE105](https://community.n8n.io/u/RicardoE105)\
**Post date:** [September 16, 2021, 3:07am UTC](https://community.n8n.io/t/microsoft-teams-trigger/7871/3 "2021-09-16T03:07:24Z")

</div>

I think you want an extension of the current Microsoft node, rather than the creation of a trigger. With the webhook node you can catch the request. The not so fun part it’s to verify the signature and build the message you want to reply with.

---

<div class="post-metadata">

**Author:** ![Radiergummi](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/radiergummi/32/6639_2.png) [@Radiergummi](https://community.n8n.io/u/Radiergummi)\
**Post date:** [September 16, 2021, 5:52am UTC](https://community.n8n.io/t/microsoft-teams-trigger/7871/4 "2021-09-16T05:52:54Z")

</div>

I see where you’re coming from, although “doing something if someone sent a message to my bot” sounds a lot like a trigger to me…  
You’re way deeper into this though. Are webhooks expecting a response really that rare?

---

<div class="post-metadata">

**Author:** ![Zboinek](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/zboinek/32/87649_2.png) [@Zboinek](https://community.n8n.io/u/Zboinek)\
**Post date:** [June 5, 2025, 10:27am UTC](https://community.n8n.io/t/microsoft-teams-trigger/7871/5 "2025-06-05T10:27:25Z")

</div>

Have you managed to do it somehow? I see that his is 4y old but that should be very nice integration

---

<div class="post-metadata">

**Author:** ![Radiergummi](https://dub1.discourse-cdn.com/n8n/user_avatar/community.n8n.io/radiergummi/32/6639_2.png) [@Radiergummi](https://community.n8n.io/u/Radiergummi)\
**Post date:** [June 5, 2025, 12:49pm UTC](https://community.n8n.io/t/microsoft-teams-trigger/7871/6 "2025-06-05T12:49:35Z")

</div>

I did, but then I scrapped n8n altogether since a lot of things didn’t work as expected, were unreliable, and anything more complex than a demo wasn’t supported, not documented, or downright broken. In other cases like this one, I never got a real response, and that didn’t work for us.

Things might have improved since then, but we’ve moved on. Sorry!
