How to send a Microsoft Teams Adaptive Card from Journey Builder (no code)
A 5-step, no-code play to post Adaptive Cards to Teams from Journey Builder—personalized with Journey fields.
In Journey Builder, drop an HTTP step to post a Microsoft Teams Adaptive Card to a channel or chat. Grab a layout from adaptivecards.io, paste the JSON, and click-to-insert Journey fields like FirstName and Email. Keep Timeout = 10s and Retry ×2. Turn Debug on to test, then off for production.
A Journey step that drops a personalized Teams Adaptive Card into a specific channel at the exact moment you choose.
- A Teams webhook/bot/Graph endpoint
- A card layout from adaptivecards.io
- Journey fields to show (e.g., FirstName, Email)
Plan
Think of the card like a rich notification. Pick the moment (new lead/bug/VIP purchase), the message (bold title + 1–2 facts + optional link), and where it lands (the channel behind your endpoint).
Connect
Steps to create a webhook in Microsoft Teams:
- Open Microsoft Teams.
- Go to the channel where you want to post messages.
- Click the three dots (…) next to the channel name → Connectors.
- In the list, find Incoming Webhook → click Configure.
- Give the webhook a name and optionally upload an image (for the message avatar).
- Click Create → Teams will generate a Webhook URL.
- Copy this URL.
You can now send JSON payloads (via POST) to this endpoint.
Configure
Headers: Content-Type: application/json (+ Authorization: Bearer {{token}} if Graph/bot).
Body: paste Adaptive Card JSON and inject Journey fields via the editor. Defaults:Timeout 10s, Retry ×2 (429/5xx), Alert channel: Slack/Teams. Token pattern: add a pre-auth step if your endpoint needs a fresh token.
{
"type": "message",
"attachments": [
{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"type": "AdaptiveCard",
"version": "1.5",
"body": [
{
"type": "TextBlock",
"weight": "Bolder",
"text": "Bug #2837 for {{Journey.FirstName}}"
},
{
"type": "TextBlock",
"text": "Assigned to: {{Journey.Email}}"
}
]
}
}
]
}
Heading 1
<pre><code> <script>
{ "type": "message", "attachments": [{ "contentType": "application/vnd.microsoft.card.adaptive", "content": { "type": "AdaptiveCard", "version": "1.5", "body": [ { "type": "TextBlock", "weight": "Bolder", "text": "Bug #2837 for {{Journey.FirstName}}" }, { "type": "TextBlock", "text": "Assigned to: {{Journey.Email}}" } ] } }] }
<script> </code></pre>
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Block quote
Ordered list
- Item 1
- Item 2
- Item 3
Unordered list
- Item A
- Item B
- Item C
Bold text
Emphasis
Superscript
Subscript
Test
Turn Debug = ON, push one contact, confirm a card appears in Teams and the log shows HTTP 200 + the mapped values. Add a Decision Split (success path vs fallback).