Teams Notifications with Adaptive Cards in Power Automate
How Power Automate posts interactive Adaptive Cards via the Teams connector, processes responses, and where the limits lie.
When a flow is triggered in Power Automate, a simple text message in Teams is often not enough. An approval step, a team vote, or feedback on an order need more than plain information, they need a way to respond directly in the chat. That is exactly what Adaptive Cards are for: interactive cards that Power Automate posts directly into a chat or channel via the Microsoft Teams connector, and whose response the flow then waits for.
This article shows which actions the Teams connector offers for Adaptive Cards, how you build your first interactive card, and which limitations you need to keep in mind according to the official Microsoft documentation. That way you stay in control from the start of how your digital employee communicates with your team, instead of having to search the docs after the first error appears.
What sets Adaptive Cards apart from a simple Teams message
According to the Microsoft documentation on adaptive cards for Teams Adaptive Cards are a platform-independent way to share and display blocks of information without having to adjust CSS or HTML. You describe the card in JSON format, and Teams automatically converts this description into a native interface that matches the respective host when displaying it.
The decisive difference from a normal chat message lies in the interactivity: an Adaptive Card can contain text fields, choice lists, and buttons that let recipients respond directly in the chat. Power Automate picks up this response and continues the flow with the entered data, without a separate form or an additional app.
The actions in the Microsoft Teams connector at a glance
According to the documentation, the Teams connector distinguishes between cards for individual people and cards for entire channels, and in each case between a variant with and without a wait function:
- Post your own adaptive card as the Flow bot to a user: The card appears in the chat and in the recipient's activity feed, without the recipient having to be a member of a specific Teams instance. Only URL buttons work here, they simply redirect to an address configured in the flow.
- Post an adaptive card as the Flow bot to a Teams user and wait for a response: The flow pauses until the person has reacted to the card, and afterward returns exactly one response per recipient and card as dynamic content.
- Post your own adaptive card as the Flow bot in a channel: as above, except the card appears in a team channel that you need access to yourself.
- Post an adaptive card as the Flow bot in a Teams channel and wait for a response: the flow waits until any member of the channel responds, and then processes their input.
For proactive messages from a Copilot Studio agent, according to the documentation on proactive Teams messages the actions Post adaptive card in a chat or channel and Post adaptive card and wait for a response are also available. Here you select Microsoft Copilot Studio agent as Post as and specify the recipient as well as the desired agent.
Building your first interactive Adaptive Card
Before you get started, according to the documentation the Workflows app must be installed in Microsoft Teams, otherwise the flow run fails with a clear error message. Here is how you build the first card:
1. Sign in to Power Automate and create an instant cloud flow with the Manually trigger a flow trigger.
2. Add the action Post adaptive card in a Teams channel and wait for a response as a new step and select the team and channel.
3. Paste the JSON code for your card into the Message field. To get started, a structure with a heading, body text, an Input.ChoiceSet for the selection options, and an Action.Submit button at the end is enough.
4. Enter in the Update message field the text the card should display after the response. Without this entry, the card simply resets after each submission, which according to the docs tends to invite unnecessary multiple submissions.
5. Process the response further in a follow-up step, for example via an email that contains the selected value from the dynamic content of the wait-for-a-response action.
When you run the flow, you can see from the wait marker in the run history that Power Automate is actually waiting for the response. Only after the recipient submits does the flow continue with the entered values, as described in detail in the guide to creating your first adaptive card.
Processing the response in the flow
Within an Adaptive Card with wait-for-a-response, every input element returns its value via the ID stored in the JSON, in the documentation's example `acPollChoices` for a choice list. You will find this ID as dynamic content in the following step and can use it directly in emails, list entries, or further conditions.
If you instead use a proactive card via a Copilot Studio agent, according to the documentation the response returns the variable `submitActionId`, whose value corresponds to the title of the selected action. For both variants: additional details such as the user ID of the person who responded are only available as dynamic content after the wait-for-a-response action, for complete profile data you additionally need the Office 365 Users connector.
Known limitations you should be aware of
The documentation lists several points that often cause confusion in practice:
- Without a wait-for-a-response action, no data can be captured from a card, every button except Action.OpenUrl then returns an error.
- Every card with wait-for-a-response can only be submitted once, all further submissions are silently ignored.
- After submission, the card exclusively shows the text from the Update message field, otherwise it remains unchanged and invites another, pointless submission.
- Adaptive Cards with the templating feature from the general Adaptive Cards specification are not supported by Power Automate.
- In the US Department of Defense environment, adaptive cards are generally not available, but this only affects a very specific group of users.
Common sources of errors with adaptive cards
In addition to the structural limitations, Microsoft names three recurring error patterns in its own troubleshooting tips:
- Missing Workflows app: If the Workflows app is not installed in Teams, the flow run fails. The app must be set up in the respective Teams instance before the first test run.
- Incorrectly formatted JSON code: Usually curly quotation marks instead of straight ones, or missing quotation marks around text values, are the cause. A test in the Adaptive Cards Designer reliably reveals such errors before you insert the card into Power Automate.
- Invalid image URLs: Adaptive Cards do not support embedded image files, every image must be included via a publicly accessible URL. If in doubt, check the URL directly in the browser before entering it into the card.
Anyone who works through these three points before going live saves themselves most of the error messages that only show up in practice after the first productive run. Anyone who uses Power Automate as a digital employee and values cleanly built, low-maintenance Teams notifications will find in NordFlux's Power Automate consulting support for building Adaptive Cards and the associated error handling.
Frequently asked questions
Can I use an Adaptive Card without a wait-for-a-response action for input?
No. According to the documentation, cards without this action return an error for all buttons except Action.OpenUrl, so data from input fields can only be captured with one of the two wait-for-a-response variants.
How many times can a single Adaptive Card be answered?
Only once. After the first submission, the flow continues, every further submission of the same card is ignored according to the documentation, without another response occurring.
Why does my card still look exactly the same after the response?
Because the Update message field was not filled in. Without this entry, the card simply resets after each submission, which easily tempts recipients into a pointless second submission.
Do Adaptive Cards work with templating features in Power Automate?
No, the documentation explicitly points out that the templating feature from the general Adaptive Cards specification is not supported by Power Automate. Instead, build the card with fully filled-in JSON without placeholder templates.
Do I have to write the JSON code by hand to design a card?
Not necessarily. The Adaptive Cards Designer offers a visual drag-and-drop interface from which you copy the finished JSON code directly into the message field of the Power Automate action.
NordFlux UG (haftungsbeschränkt)
NordFlux builds digital employees for organisations: automations and AI agents that take over repetitive work. You stay in control.
Concrete questions about automation or AI?
In a free initial analysis we discuss your case directly. No strings attached.