Want to know if your Copilot Studio agent is actually helping people? Usage numbers won’t tell you. Session counts show that people showed up. Only feedback tells you whether they got their answer or gave up and called the helpdesk anyway.
I learned this the hard way. A few months ago, I rolled out an IT helpdesk agent in Microsoft Teams for a 450-employee logistics company. Two weeks after launch, the IT manager asked me, “Is it actually helping anyone?” I had plenty of usage stats, but I couldn’t give him a straight answer.
In this step-by-step guide, you’ll learn how to collect user feedback in Copilot Studio using the same setup I now use on every project: thumbs up/down reactions, the built-in CSAT survey, a follow-up question for unhappy users, and three ways to store the results (Dataverse, a SharePoint list, and Azure Application Insights). By the end, you’ll know exactly which answers need fixing and have real data to prove your agent is working.
Last updated: September 2026. Menu names and steps reflect the current Copilot Studio interface.
Why You Need More Than One Type of Feedback in Copilot Studio
Copilot Studio gives you feedback at two different levels. Mixing them up is the most common mistake I see.
Reactions are the thumbs up and thumbs down buttons under each agent message. They tell you how people feel about one specific answer. If the VPN answer gets five thumbs down this week, you know which reply needs work.
CSAT (customer satisfaction) is a short survey at the end of a conversation. The user rates the whole experience from 1 to 5.
On top of those, I add a small follow-up. When someone gives a low CSAT score, the agent asks what went wrong. That single question has given me more useful fixes than any dashboard.
| Feedback type | Level | Setup effort | Where it shows up |
|---|---|---|---|
| Thumbs up / down reactions | Per agent message | None (on by default) | Monitor page, Reactions tile |
| CSAT survey | Per session | Low (redirect to a system topic) | Monitor page, Customer satisfaction tile |
| Low-rating follow-up | Per unhappy session | Medium (topic edits) | Your own storage: Dataverse, SharePoint, or Application Insights |
For this whole guide, I’ll use one example: Contoso IT Help Desk Agent, an internal IT helpdesk agent built in Copilot Studio and published to Teams. If you haven’t built an agent yet, start with this guide on how to create an agent in Microsoft Copilot Studio and come back.
Step 1: Enable Thumbs Up and Thumbs Down Reactions in Copilot Studio
Good news first. Reactions are On by default for all channels except the Microsoft 365 Copilot channel. So your agent is probably collecting them already. Still, check the setting and add a disclaimer.
Here’s how:
- Open your agent in Copilot Studio and select Settings.
- Find the User feedback section.
- Make sure Collect user reactions to agent messages is turned On.
- Add a short disclaimer that tells users how you’ll use their feedback.
- Save your changes.

A clear disclaimer makes employees more honest. Here’s the text I used for the Contoso IT Help Desk Agent:
Your rating and comments help the IT team improve this agent.
Comments are reviewed by the IT service desk only. Please don't
include passwords or personal details in your feedback.
After a thumbs up or thumbs down, users can also type an optional comment. “It told me to restart the VPN client, but I’m on a Mac” is exactly the kind of note that leads to a fast fix.
Where Reactions Show Up in Analytics
Copilot Studio now calls its analytics area the Monitor page. Older guides still call it Analytics, so don’t be confused if you see both names. For the full list of tiles and metrics, see Microsoft’s official guide to monitoring conversational agents in Copilot Studio.
- Open your agent and select Monitor on the top menu bar.
- Scroll to the Effectiveness section.
- Find the Reactions tile. It counts thumbs up and thumbs down across all answers.
- Select See details to see how positive and negative reactions trend over time.
- Select the Comments icon on the tile to read what users actually wrote.

You can also select the thumbs down slice of the chart to drill into the list of agent responses that got negative reactions. That’s where I spend most of my time.
One catch: to see comments, you need the Bot Transcript Viewer security role. Only an admin can grant it, usually while sharing the agent. Makers with the Environment Maker role don’t get it automatically.
If you publish to the Microsoft 365 Copilot channel (see how Microsoft 365 Copilot compares with Copilot Studio), an admin also has to allow feedback sharing in the Microsoft 365 admin center. Otherwise, you won’t see reactions from that channel.
Step 2: Set Up the CSAT Survey in Copilot Studio
The CSAT survey lives inside a built-in system topic called End of Conversation. A system topic is a topic that Copilot Studio adds to every agent automatically. You can edit most of them, and you can turn them off, but you can’t delete them.
The important thing to know: End of Conversation doesn’t fire on its own. It only runs when another topic redirects to it. If nothing redirects there, users never see the survey, and your CSAT tile stays empty.
By default, the topic asks the user whether their question was answered. If they say yes, it shows the 1 to 5 satisfaction survey. If they say no, it offers to try again or escalate.
How CSAT Scores Are Grouped
Copilot Studio turns the 1 to 5 ratings into three groups on the Customer satisfaction tile:
| Score | Category |
|---|---|
| 1 or 2 | Dissatisfied |
| 3 | Neutral |
| 4 or 5 | Satisfied |
The Satisfaction score is the average out of 5 for sessions where users answered the survey. The tile also shows a stacked bar of Dissatisfied, Neutral, and Satisfied sessions.
CSAT Also Drives Your Resolution Numbers
This part surprised me the first time. The End of Conversation topic doesn’t just collect CSAT. It also decides how a session gets counted in your outcomes chart.
A session becomes Resolved confirmed when End of Conversation runs and the user confirms the issue was solved. If you skip that topic, you lose confirmed resolutions and your reports look worse than reality.
Redirect to End of Conversation From Your Topics
For the Contoso IT Help Desk Agent, I redirect to End of Conversation at the end of every topic that fully solves a problem. Password reset, VPN setup, and printer mapping all end this way.
- Open a custom topic, for example Reset Password.
- Go to the last step, right after the agent gives the final instructions.
- Select the + icon to add a node.
- Choose Topic management, then Go to another topic.
- Pick End of Conversation.
- Save the topic.

If you’re new to building topics, this walkthrough on how to create a custom topic in Copilot Studio covers the canvas basics.
Pro Tip: I don’t redirect every topic to End of Conversation. I only add it where the agent actually finishes a task. Asking “Did that help?” after a quick FAQ answer feels robotic, and users start ignoring the survey. In my experience, fewer surveys at the right moment give you better data than surveys everywhere.
Step 3: Customize the Copilot Studio CSAT Flow
The default End of Conversation topic works, but I always make three small changes. They make the survey feel like part of your agent, and they let you reuse the rating later.
Open the System Topic
- Go to the Topics page of your agent.
- Switch to the System list.
- Open End of Conversation.

Change 1: Rewrite the Wording
The default question is generic. For an IT agent, I changed the first question to: “Did that fix the problem you were having?” It’s more specific and matches how people talk about IT issues.
Keep the answer options as a simple yes or no. Don’t add a “maybe” option. It muddies the resolution data.

Change 2: Save the CSAT Rating to a Variable
By default, the rating goes into analytics but isn’t easy to reuse inside the topic. You want it in a variable so you can branch on it.
- Select the CSAT question node in the topic.
- Open its properties.
- Save the user’s rating to a new topic variable. I named mine
Topic.HelpdeskCsat.

A variable is just a named container that holds a value during the conversation. Topic variables only live inside the current topic, which is perfect here.
If you prefer the code editor, open it from the topic’s More menu. The CSAT node shows up as kind: CSATQuestion. You’ll see the variable reference there after you set it in the canvas.
Change 3: Don’t Remove the CSAT Node
You can reword things around it, but keep the built-in CSAT question node itself. The Monitor page reads its results. If you replace it with your own rating question, your CSAT tile stops updating.
Step 4: Add a Follow-Up Question for Low CSAT Ratings
This is where the setup really pays off. When someone rates 1 or 2, I want to know why while it’s still fresh in their mind.
Add a Condition Right After the CSAT Node
- Below the CSAT node, add a Condition node.
- Set it to check
Topic.HelpdeskCsatis less than or equal to 2. - Leave the “All other conditions” branch alone so happy users continue as normal.

If you like writing it as a formula, choose Edit formula on the condition and use this Power Fx expression:
Topic.HelpdeskCsat <= 2
Power Fx is the same low-code formula language used across the Power Platform, including Power Apps.
Ask One Simple Question
Inside the low-rating branch, add a Question node:
- Message: “Sorry about that. What went wrong?”
- Identify: Multiple choice options.
- Options: “The answer was wrong”, “It didn’t understand me”, “It took too long”, “Something else”.
- Save the response as
Topic.LowRatingReason.

Then add a second Question node for an optional comment:
- Message: “Want to add any details? Type ‘skip’ if not.”
- Identify: User’s entire response.
- Save it as
Topic.LowRatingComment.

I keep this to two questions maximum. A third question almost always gets abandoned.
Offer a Real Next Step
Feedback without action annoys people. After collecting the reason, I add a message like: “Thanks. I’ve shared this with the IT team. Would you like me to connect you with a person?” If the user says yes, I redirect to the Escalate system topic.
I’m keeping this follow-up to plain Question nodes on purpose. They’re easier to maintain and work on every channel, including Teams and Microsoft 365 Copilot. If you want a star rating or a single-screen form later, you can swap in an Ask with adaptive card node without changing the rest of this flow.
Step 5: Store Copilot Studio Feedback in Dataverse, SharePoint, or Application Insights
Feedback is only useful if your IT team can review it. I use three storage options, each for a different audience.
Option A: Conversation Transcripts in Dataverse
This one requires no work. Copilot Studio saves conversations to a Dataverse table called ConversationTranscript. Dataverse is the database behind the Power Platform. If you’re new to it, read what Microsoft Dataverse is first.
Reactions and their comments are stored in this table. CSAT answers show up too, as activities with the value type CSATSurveyResponse inside the transcript’s Content JSON column.
To export transcripts:
- Sign in to Power Apps.
- Select Tables, then All.
- Search for “conversation” and open ConversationTranscript.
- Select Export, then Export data.
- Wait a few minutes and select Download exported data.
The file downloads as a ZIP archive. For a simpler table export, this guide on how to export a Dataverse table to Excel also applies.
Two things to know. A bulk-delete job removes transcripts older than 30 days by default, but you can replace it with a longer one. And transcripts aren’t written for Dataverse for Teams environments or Microsoft 365 Copilot agents.
You can also download a simpler CSV from the Monitor page with Download Sessions. It includes a CSAT column and a Comments column for thumbs feedback, covering the last 28 days. Microsoft documents every column in understanding downloaded session data from Copilot Studio.
Option B: A SharePoint List for the IT Team
The IT manager doesn’t want to parse JSON. He wants a list he can filter. So I send every low rating to a SharePoint list called “Helpdesk Agent Feedback”.
Here are the columns I use:
| Column | Type | Example value |
|---|---|---|
| Title | Single line of text | Low CSAT – Reset Password |
| Rating | Number | 2 |
| Reason | Choice | The answer was wrong |
| Comment | Multiple lines of text | Steps don’t work for contractors |
| Channel | Single line of text | msteams |
| ConversationId | Single line of text | a1b2c3… |
Next, build an agent flow that writes to this list. An agent flow is a Power Automate flow that your agent can call as a tool. If you haven’t built one, follow this guide to create an agent flow in Copilot Studio.
The flow is short:
- Trigger: When an agent calls the flow, with inputs for Rating (number), Reason (text), Comment (text), ConversationId (text), and Channel (text).
- Action: SharePoint Create item, mapping each input to its column.
- Action: Respond to the agent, with no outputs needed.
Back in the End of Conversation topic, add the flow as a tool inside the low-rating branch, after the comment question. Map the inputs like this:
Rating -> Topic.HelpdeskCsat
Reason -> Topic.LowRatingReason
Comment -> Topic.LowRatingComment
ConversationId -> System.Conversation.Id
Channel -> System.Activity.ChannelId
If Copilot Studio complains about a type mismatch on the choice variable, wrap it in Text() in a formula. The ConversationId value is the one I care about most. It lets the IT team find the full transcript later.
If you’ve done something similar before, this is close to how you’d create a SharePoint list item from Copilot Studio. Not sure whether a list or Dataverse suits your team better? This comparison of Dataverse vs SharePoint list will help you decide.
I also added a second step to the flow that posts a Teams message to the helpdesk channel when the rating is 1. Here’s a general guide to using Power Automate with Microsoft Teams if you want to do the same.
Option C: Application Insights Custom Telemetry
For bigger deployments, I also send feedback to Application Insights, Azure’s monitoring service. It’s great for trend charts and alerts. It needs an Azure subscription, so check that before you promise it to anyone.
First, connect the agent:
- In Azure, create an Application Insights resource and copy its Connection string.
- In Copilot Studio, go to Settings, then Advanced.
- In the Application Insights section, paste the connection string.
- Leave Log sensitive Activity properties off unless you have a clear reason to turn it on.
Next, inside the low-rating branch, add a Log custom telemetry event node. Give it an event name like HelpdeskLowCsat. In the properties field, use a Power Fx formula that bundles the feedback into one string:
"rating=" & Text(Topic.HelpdeskCsat)
& " | reason=" & Text(Topic.LowRatingReason)
& " | comment=" & If(IsBlank(Topic.LowRatingComment), "none", Topic.LowRatingComment)
& " | channel=" & System.Activity.ChannelId
In Application Insights, open Logs and query the customEvents table. I always exclude test chat traffic with the designMode dimension:
customEvents
| where name == "HelpdeskLowCsat"
| extend isDesignMode = tostring(customDimensions['designMode'])
| where isDesignMode == "False"
| project timestamp, customDimensions
| order by timestamp desc
Run it once with take 10 first and look at customDimensions. That shows you exactly where your properties text lands, so you can extract it into its own column.
Step 6: Test Your Copilot Studio Feedback Setup End to End
Don’t wait for real users to find out something is broken. Before I hand an agent over, I run one full test from the published channel, not the test panel, because test chat sessions don’t show up on the Monitor page.
- Publish the agent and open it in Microsoft Teams.
- Ask a question that triggers a task topic, such as “How do I reset my password?”
- Give the answer a thumbs down and add a short comment.
- When the End of Conversation survey appears, answer Yes to the first question, then rate the conversation 1.
- Pick a reason and type a short comment in the follow-up questions.
- Check the Helpdesk Agent Feedback SharePoint list for a new item with the rating, reason, comment, channel, and ConversationId.
- Confirm the Teams alert was posted to the helpdesk channel.
- In Application Insights, run the customEvents query and confirm the HelpdeskLowCsat event appears.
- After about an hour, open the Monitor page and check that the Reactions and Customer satisfaction tiles show your test session.
If the SharePoint item is missing, open the agent flow’s run history in Power Automate first. In my experience, most failures come from a mismatched input type or a connection that needs to be signed in again.
Privacy Notes You Shouldn’t Skip
Feedback often contains personal details like error messages or employee IDs. Here’s what I check on every project:
- Tell users what happens to feedback. Use the disclaimer in the User feedback settings.
- Limit who sees comments. Only give the Bot Transcript Viewer role to people who actually review feedback.
- Know the environment controls. Admins can stop transcripts from being saved to Dataverse in the Power Platform admin center, under the environment’s Features settings.
- Lock down your SharePoint list. Break inheritance so only the IT service desk can read it.
- Keep Application Insights lean. Don’t log user names or message text unless you truly need them.
- Set a retention period. Don’t keep feedback forever just because you can.
How to Avoid Survey Fatigue
Ask too often and people stop answering, or click 5 just to make the survey go away. Here’s what works for me:
- Only redirect to End of Conversation from topics that complete a real task.
- Ask the survey once per conversation. I set a global variable,
Global.SurveyShown, to true after the survey runs and check it with a Condition before redirecting again. - Keep the low-rating follow-up to two questions at most.
- Rely on thumbs reactions for quick answers and FAQs. They’re one click and never interrupt anyone.
- Review and act on feedback visibly. When users see fixes, they keep giving feedback.
How to Review Copilot Studio Feedback Every Week
Collecting feedback is only half the job. I block 30 minutes every Monday for the Contoso IT Help Desk Agent and follow the same routine:
- Check the thumbs down responses. On the Monitor page, select the thumbs down slice of the Reactions tile and note which topics or answers show up more than once.
- Read the low-rating reasons. Filter the Helpdesk Agent Feedback SharePoint list to the last 7 days and group it by Reason. “The answer was wrong” points to content problems, and “It didn’t understand me” points to missing trigger phrases.
- Open the full transcript for the worst sessions. Use the ConversationId from the list to find the conversation and see exactly where it went wrong.
- Fix the top three issues. Update the topic, the knowledge source, or the trigger phrases, then publish.
- Compare the next week. Check whether the Satisfaction score and the Resolved rate moved. If they didn’t, the fix missed the real problem.
Small weekly fixes add up fast. It’s also the easiest way to show your stakeholders that the agent keeps getting better.
Things to Keep in Mind
- End of Conversation must be triggered. It only runs when a topic redirects to it, so no redirect means no CSAT data.
- Keep the built-in CSAT node. Custom rating questions won’t feed the Customer satisfaction tile on the Monitor page.
- Test chat doesn’t count. The Monitor page ignores conversations from the test panel, so publish before you judge the numbers.
- Data takes time to appear. It can take up to an hour after a session ends before it shows on the dashboard.
- Roles control visibility. Without the Bot Transcript Viewer role, you’ll see counts but not comments or transcripts.
- Default retention is short. Dataverse transcripts are deleted after 30 days unless you change the bulk-delete job.
Frequently Asked Questions
Are thumbs up and thumbs down reactions on by default in Copilot Studio?
Yes. Reactions are on by default for every channel except Microsoft 365 Copilot. You can check or change this under Settings in the User feedback section. For Microsoft 365 Copilot, an admin must allow feedback sharing in the Microsoft 365 admin center.
Why is my CSAT score empty on the Monitor page?
Usually, nothing redirects to the End of Conversation topic, so users never see the survey. Add a Go to another topic node at the end of your task topics. Also remember that test chat sessions don’t appear on the Monitor page.
Where is CSAT data stored in Dataverse?
It’s stored in the ConversationTranscript table. Look inside the Content column for activities with the value type CSATSurveyResponse. You can export the table from Power Apps or download session CSVs from the Monitor page.
Who can read user comments left with reactions?
Only users with the Bot Transcript Viewer security role. An admin assigns it, typically when sharing the agent. Environment makers don’t get it automatically.
Do I need Application Insights to collect user feedback?
No. Reactions, CSAT, and transcripts all work without it. Application Insights is useful when you want custom events, KQL queries, and alerts across a larger deployment.
Can I customize the CSAT survey in Copilot Studio?
Yes. Open the End of Conversation system topic from the Topics page and change the wording, save the rating to a variable, or add follow-up questions after it. Just keep the built-in CSAT question node. If you replace it with your own rating question, the Customer satisfaction tile on the Monitor page stops updating.
How do I export Copilot Studio feedback to Excel?
On the Monitor page, select Download Sessions to get a CSV file with CSAT and comment columns for the last 28 days, then open it in Excel. For older data, export the ConversationTranscript table from Power Apps, or send low ratings to a SharePoint list, which you can export to Excel with one click.
You May Also Like
- Customize the welcome message in a Copilot Studio chatbot
- Use a SharePoint list as knowledge in Copilot Studio
- Create an agent flow with natural language
- Build and deploy a smart HR assistant bot with Copilot Studio
- Publish an agent to a live website with Copilot Studio
Collecting feedback in Copilot Studio isn’t one feature. It’s a small system of reactions, CSAT, a smart follow-up, and a place to keep the results. Set it up once, review it every week, and your agent will get better with every release.
Have a question about your own feedback setup, or a tip that worked for your team? Drop it in the comments below, and I’ll help you out.

Hey! I’m Bijay Kumar, founder of SPGuides.com and a Microsoft Business Applications MVP (Power Automate, Power Apps). I launched this site in 2020 because I truly enjoy working with SharePoint, Power Platform, and SharePoint Framework (SPFx), and wanted to share that passion through step-by-step tutorials, guides, and training videos. My mission is to help you learn these technologies so you can utilize SharePoint, enhance productivity, and potentially build business solutions along the way.