Workflow Guide — DevX Teams Message
Use Webhook together with DevX Message Connector to receive an incoming payload in n8n and send a Microsoft Teams message through the DevX Connector API.
What This Node Supports
The DevX Message Connector node has three message types:
| Type | When to use it | Extra options |
|---|---|---|
Template | Transform a known webhook payload into a supported DevX template | Source, Payload, Mode |
Text | Send plain text directly to Teams | Text, Mode |
HTML | Send sanitized HTML directly to Teams | Html, Mode |
When Type is set to Template, these Source values are available:
| Source | Expected payload |
|---|---|
Rocket.Chat | Rocket.Chat message payload with text and optional attachments |
GitHub | GitHub pull_request or workflow_run webhook payload |
Backup Container | Backup Container webhook payload |
Sysdig | Sysdig alert webhook payload |
Status Cake | StatusCake webhook payload |
Uptime.com | Uptime.com alert webhook payload |
Generic | A simple custom payload you shape yourself |
The Mode field is available for all types:
| Mode | Behavior |
|---|---|
Send | Sends the message to the configured Teams channel |
Preview | Calls the preview endpoint instead of posting to Teams |
Before You Start
Prepare these items first:
- Access to n8n.
- A Microsoft Teams channel where the message should be delivered.
- The full Teams channel link from
Copy link to channel. - A payload source, such as GitHub, Sysdig, StatusCake, Uptime.com, Rocket.Chat, or another webhook sender.
Create The Workflow
-
Log in to n8n.
-
Click
Create workflow. -
Add a
Webhooknode. -
In the
Webhooknode, setHTTP MethodtoPOST. -
Connect the
Webhooknode to a newDevX Message Connectornode. -
Search for
DevX Message Connectorand add it.
Configure Credentials
-
In the
DevX Message Connectornode, clickSet up credential. -
In
Teams Channel Link, paste the full value copied from Microsoft TeamsCopy link to channel.Do not paste only the channel ID. The node parses the full Teams link to extract both the group ID and channel ID.
-
Save the credential.
Configure The DevX Message Connector Node
Template Mode
Use this when the incoming webhook already follows one of the supported payload formats.
-
Set
TypetoTemplate. -
Set
Sourceto the system sending the webhook. -
Set
Payloadto an expression from theWebhooknode, usually{{ $json.body }}. -
Set
Mode:Sendto post to Teams, orPreviewto inspect the transformed message first.
Text Mode
Use this when you want to send a plain text message without a template.
-
Set
TypetoText. -
Enter the message in
Text, or use an expression such as{{ $json.body }}or{{ $json.body.message }}. -
Set
ModetoSendorPreview.
HTML Mode
Use this when you want to send HTML directly.
- Set
TypetoHTML. - Enter the markup in
Html, or use an expression from the previous node. - Set
ModetoSendorPreview.
The node sanitizes HTML before sending it. Common tags such as headings, paragraphs,\ lists, links, tables, code blocks, and images are allowed, but unsupported tags and attributes are removed.
Supported Input Payloads
This section focuses on the input structures you may provide yourself from your backend service or directly in the n8n node.
Text
Type: Text expects a single string value.
You can either:
- Enter a constant value directly in the
Textfield. - Map a string field from the incoming webhook payload.
Example constant value entered directly in the node:
Deployment completed successfully.
Example webhook body from your backend service:
{
"message": "Deployment completed successfully."
}
Recommended expression:
{{ $json.body.message }}
If you pass an object instead of a string, the node converts it to JSON text before sending.
HTML
Type: HTML expects a single HTML string.
You can either:
- Enter constant HTML directly in the
Htmlfield. - Map an HTML string from the incoming webhook payload.
Example constant value entered directly in the node:
<div>
<strong>Deployment completed</strong>
<p>The production release is now live.</p>
</div>
Example webhook body from your backend service:
{
"html": "<div><strong>Deployment completed</strong><p>The production release is now live.</p></div>"
}
Recommended expression:
{{ $json.body.html }}
The node sanitizes the HTML before sending it to Teams.
Template - Rocket.Chat
Use Type: Template and Source: Rocket.Chat when your service sends a Rocket.Chat-style payload.
Expected shape:
{
"text": "Deployment completed",
"attachments": [
{
"title": "my-app",
"title_link": "https://example.com",
"text": "Version 1.2.3 is now live",
"color": "#36a64f",
"fields": [
{
"title": "Environment",
"value": "prod",
"short": true
}
]
}
]
}
Notes:
textis the main message body.attachmentsis optional.- For each attachment,
title,text,title_link,color,image_url,thumb_url, andfieldsare supported. - Each entry in
fieldsshould containtitle,value, andshort.
You can send this payload from your backend service as JSON and usually map it with:
{{ $json.body }}
Template - Generic
Use Type: Template and Source: Generic when you want to build a simple custom template from your own service.
Expected shape:
{
"title": "Service degraded",
"body": "The API error rate is above threshold.",
"severity": "warning",
"url": "https://example.com/incidents/123",
"urlLabel": "Open incident",
"source": "custom-monitor"
}
Field rules:
titleis required.bodyis optional.severityis optional and must be one ofcritical,warning,info, orsuccess.urlis optional and must be a valid URL if provided.urlLabelis optional.sourceis optional.
You can send this payload from your backend service as JSON and usually map it with:
{{ $json.body }}
Other Template Sources
The remaining template sources are designed to receive webhook payloads directly from their designated third-party services. In normal usage, you do not need to handcraft or memorize their payload structures.
GitHub
Supported webhook types:
pull_requestworkflow_run
For these events, the node extracts key fields and builds a DevX template message. If you connect GitHub webhooks to n8n, use the incoming request body directly, usually with {{ $json.body }}.
Backup Container
This source is intended for Backup Container webhook payloads. If you connect it through n8n, use the incoming request body directly, usually with {{ $json.body }}.
Sysdig
This source is intended for Sysdig alert webhook payloads. If you connect it through n8n, use the incoming request body directly, usually with {{ $json.body }}.
Uptime.com
This source is intended for Uptime.com alert webhook payloads. If you connect it through n8n, use the incoming request body directly, usually with {{ $json.body }}.
Status Cake
This source is intended for StatusCake webhook payloads. If you connect it through n8n, use the incoming request body directly, usually with {{ $json.body }}.
Common Payload Expressions
Use the expression that matches the output of your previous node:
- Entire webhook body object:
{{ $json.body }} - A plain text field:
{{ $json.body.message }} - Prebuilt HTML content:
{{ $json.body.html }}
If your sender posts JSON to the Webhook node, {{ $json.body }} is usually the right starting point.
Test The Workflow
- Set
ModetoPreviewfirst. - Open the
Webhooknode and copy theTest URLshown there. - Click
Listen for test eventin theWebhooknode. - Send a test
POSTrequest to theTest URL. - Confirm the
Webhooknode receives the payload and theDevX Message Connectornode returns a valid preview response. - Change
ModetoSendwhen the message looks correct.
Webhook URLs
The Webhook node exposes two URLs:
Test URLUse this while building or debugging the workflow. In n8n, open theWebhooknode and copy theTest URL. This URL works while the node is listening for a test event.Production URLUse this for live integrations. In n8n, open theWebhooknode and copy theProduction URL. This URL is intended for real traffic and normally requires the workflow to be activated before it will receive requests.
A common rollout flow is:
- Build and validate the workflow with the
Test URL. - Activate the workflow.
- Update the external system to send requests to the
Production URL.
Troubleshooting
Invalid Microsoft Teams channel link providedThe credential does not contain a valid full Teams channel link.- No message is generated
The selected
TypeorSourcedoes not match the incoming payload shape. - Template parsing fails
Check that
Payloadpoints to the correct webhook field and that the JSON structure matches the selected template source. - HTML formatting is missing The node sanitizes HTML and removes unsupported tags or attributes.