Tool · Power Automate · Teams
Adaptive Card Builder
Build a Microsoft Teams card for Power Automate from a template, see it exactly as Teams shows it, and copy the JSON plus the expressions to read the reply.
Works with
Power Automate
- Teams
Header
Facts
Inputs
Buttons
Teams preview
Use it in Power Automate
- Add the Teams action Post adaptive card and wait for a response (people reply with the buttons or inputs).
- Choose who it goes to, then paste this JSON into the Message / Adaptive Card box. Swap sample text for dynamic content where you need it.
{
"type": "AdaptiveCard",
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"version": "1.4",
"body": [
{
"type": "Container",
"style": "accent",
"bleed": true,
"items": [
{
"type": "TextBlock",
"text": "Purchase request",
"weight": "Bolder",
"size": "Large",
"wrap": true
},
{
"type": "TextBlock",
"text": "Needs your approval",
"isSubtle": true,
"spacing": "None",
"wrap": true
}
]
},
{
"type": "TextBlock",
"text": "Alex Morgan has asked for approval to buy new laptops for the design team.",
"wrap": true
},
{
"type": "FactSet",
"facts": [
{
"title": "Requested by",
"value": "Alex Morgan"
},
{
"title": "Amount",
"value": "$1,250.00"
},
{
"title": "Needed by",
"value": "30 October 2026"
}
]
},
{
"type": "Input.Text",
"id": "comment",
"label": "Comment (optional)",
"isRequired": false,
"isMultiline": true
}
],
"actions": [
{
"type": "Action.Submit",
"id": "approve",
"title": "Approve",
"data": {
"action": "approve"
}
},
{
"type": "Action.Submit",
"id": "reject",
"title": "Reject",
"data": {
"action": "reject"
}
}
]
}Read the reply in later steps
Which button was pressed
body('Post_adaptive_card_and_wait_for_a_response')?['data']?['action']Comment (optional)
body('Post_adaptive_card_and_wait_for_a_response')?['data']?['comment']Who responded (email)
body('Post_adaptive_card_and_wait_for_a_response')?['responder']?['userPrincipalName']Questions
FAQ
Which Power Automate action do I use?
For a card that only shows information, use "Post card in a chat or channel". For approvals and forms, use "Post adaptive card and wait for a response": the flow pauses until someone presses a button, then continues with their answer.
How do I put dynamic content in the card?
Paste the JSON into the action first, then replace the sample text inside the quotes with dynamic content or an expression such as @{triggerBody()?['name']}. Keep the quotes around it.
My card breaks when the data has quotes or line breaks. Why?
Card JSON is text, so a quote inside your data ends the string early. Wrap risky values in an expression that escapes them, for example replace(variables('comment'), '"', '\"').
Why version 1.4?
Teams supports newer features in some places, but version 1.4 works reliably with the Power Automate Teams actions on desktop, web and mobile.
Is the preview exact?
It uses Microsoft’s official Adaptive Cards renderer with colors and spacing close to Teams. Fonts and small details can differ slightly between the Teams desktop, web and mobile apps.