As conversational AI becomes central to user engagement, capturing granular feedback is crucial for continuous improvement. Microsoft Copilot Studio simplifies chatbot development, but its built-in analytics only operate at the session level. To truly optimise performance, businesses need visibility into how users respond to individual bot messages- and that’s where Adaptive Cards come in.
This post outlines how to use Adaptive Cards, Power Automate, Excel Online, and Power BI to build a response-level feedback loop, giving chatbot teams the insights they need to enhance user satisfaction.
Why Adaptive Cards?
Unlike traditional quick replies, Adaptive Cards offer rich formatting, multi-input options, and seamless integration into Microsoft Teams. They are especially powerful for chatbots deployed across enterprise environments where Teams is the primary collaboration platform.
Key benefits:
- User-Friendly UI: Cards are visually structured and support direct interactions.
- Custom Workflows: Cards can trigger flows with context-rich payloads.
- Security-First: Data is structured and easier to validate, ensuring governance.
- Omnichannel Ready: Ideal for Teams but can be adapted for other surfaces.
Solution Overview
The architecture for Adaptive Card-based feedback for generative responses is as follows:
- Generative Answers: A meaningful message is sent by the Copilot Studio bot if the user query is not available in the data sources provided
- Adaptive Card Display: The bot follows up with a feedback prompt using an Adaptive Card (e.g., 👍 / 👎).
- User Input: User submits feedback via the card.
- Power Automate Flow: The card submission triggers a flow that logs the data in Excel Online.
- Visualisation in Power BI: Feedback is reported and analysed in Power BI dashboards.
User ⟶ Copilot Studio Bot
↳ Sends Response
↳ Appends Feedback Prompt (Yes/No or Rating)
↳ User Responds
⟶ Triggers Power Automate
⟶ Writes to Excel Online
⟶ Consumed by Power BI for Analytics
Step 1: Create the Conversational Boosting Topic
The trigger for this topic will be “On Unknown Intent”.
Select the Create generative answers card under Advanced section.
Add the data sources for your bot. After this, under Advanced section, select Complete (recommended) under Save LLM response. Also make sure to save bot response as a record.
Now create a condition for AnswerGen variable is Blank or not.
Step 2: Adaptive Card from Copilot Studio
Use Copilot Studio’s “Send an adaptive card” action after sending a generative response from the bot.
In the message variations, add the AnswerGen.Text.MarkdownContent variable. Make sure to select Topic (limited scope).
Here’s a sample Adaptive Card payload for basic feedback:
type: “AdaptiveCard”,
version: “1.5”,
body: [
{
type: “TextBlock”,
text: “Generated answer, please rate it”,
weight: “lighter”,
size: “Small”,
color: “Accent”
},
{
type: “ColumnSet”,
columns: [
{
type: “Column”,
width: “auto”,
items: [
{
type: “ActionSet”,
actions: [
{
type: “Action.Submit”,
title: “👍 Looks Good”,
style: “positive”,
data: {
MessageEvent: “AnswerFeedback”,
Like: true,
Prompt: System.Activity.Text,
Response: Topic.AnswerGen.Text.MarkdownContent
}
}
]
}
]
},
{
type: “Column”,
width: “auto”,
items: [
{
type: “ActionSet”,
actions: [
{
type: “Action.Submit”,
title: “👎 Needs Work”,
style: “destructive”,
data: {
MessageEvent: “AnswerFeedback”,
Like: false,
Prompt: System.Activity.Text,
Response: Topic.AnswerGen.Text.MarkdownContent
}
}
]
}
]
}
]
}
]
}
Test your topic and save it.
Below is the output:
Step 3: Create a Power Automate Flow to Capture Feedback
Use the trigger: “When Message received”
Inputs from the Adaptive Card (via Bot → Flow):
- Activity.Value as a record
Flow:
- Add a condition to check if the feedback is positive (true) or negative (false)
- Accordingly display a message to the user
Action to invoke Power Automate:
Pass below variables as inputs and outputs
Create a Power Automate flow and call it as Copilot User Feedback.
- It should be triggered when an agent calls the flow.
- Pass all the above inputs as parameters
- Add an action to add a row into a table (using Excel Online connector)
- Respond to Copilot and pass above outputs as parameters
Sample chat:
Step 4: Build a Power BI Dashboard
Connect to your Excel Online from Power BI:
- Get Data > Excel Online > CopilotUserfeedback
- Clean your data using Power Query:
- Format timestamps
- Filter out test users or empty rows
DAX Measures to try:
FeedbackCount = COUNTROWS(‘CopilotUserfeedback’)
PositiveRate =
DIVIDE(
CALCULATE(COUNTROWS(‘CopilotUserfeedback’), ‘ CopilotUserfeedback’‘[Feedback] = “True”),
[FeedbackCount]
)
Recommended visuals:
- Feedback trends over time
- Topic-wise satisfaction
- Word cloud of comments
- Alerts for high negative rates
Governance & Enhancements
- Privacy: Anonymize emails as needed.
- Alerting: Notify owners when feedback exceeds negative thresholds.
- Retraining: Use low-rated responses to inform model or dialog refinements.
- Sentiment Analysis: Run Azure Cognitive Services on comments for richer insight.
Final Thoughts
Adaptive Cards offer a scalable, professional way to collect structured feedback directly within your Microsoft Teams-based chatbot experiences. By combining Copilot Studio, Power Automate, Excel Online and Power BI, you can close the feedback loop and build bots that continuously evolve based on real user input.
About Skillfield
At Skillfield, we help organisations turn ideas into impact by combining deep expertise in AI, data, and security with hands-on delivery. Our team has extensive experience building intelligent, feedback-driven solutions using Microsoft technologies like Copilot Studio, Power Automate, Power BI and beyond. Whether you’re looking to enrich your chatbot experiences, strengthen governance, or unlock new insights, we can guide you from concept to measurable value. Curious about how this could work in your business? Let’s chat.
Further Reading:
https://skillfield.com.au/blog/agentic-ai-the-next-frontier-for-data-driven-enterprises/
https://skillfield.com.au/blog/why-every-business-needs-an-ai-strategy/







