Trigger a Power Automate flow from inside a Studio agent¶
Connect your agent to real business systems — create a ticket, update a record, send a notification — triggered by a natural-language conversation.
Stage: Copilot Studio · For: Maker, IT Admin · Level: Intermediate · Time: 30 min
Works on any harness — cost and coverage differ
This is a platform skill that applies whichever harness powers your agent. Keep one thing in mind: the standard and chat harnesses are covered by a Microsoft 365 Copilot license inside Microsoft 365 channels, while the GitHub Copilot harness bills Copilot Credits for all usage and a license never covers it. Compare the engines · estimate the net cost.
When to use this¶
Your agent is answering questions well, but users need it to do something in a downstream system: open a support ticket, update a Dataverse record, send an approval email, write a row to a SharePoint list, or log a request in ServiceNow.
Actions bridge the gap between "agent answers" and "agent acts." This walkthrough covers connecting a Copilot Studio agent to a Power Automate flow so it can trigger real-world operations from a conversation.
What you'll need¶
- Copilot Studio access and an existing agent to extend
- Power Automate access in the same environment
- A clear action scenario: what the user will say to trigger the action, and what the flow should do
Architecture overview¶
User says: "Submit a request for [X]"
↓
Studio topic recognizes the intent
↓
Topic collects required variables (what, who, when)
↓
Topic calls a Power Automate flow via the "Call an action" node
↓
Flow executes in Power Automate (creates record, sends email, etc.)
↓
Flow returns a result to Studio
↓
Agent confirms to the user: "Done — your request has been submitted."
Step by step¶
1. Build the Power Automate flow first¶
In Power Automate, create a new Instant cloud flow with the trigger "When Copilot Studio calls a flow". Define the input parameters the flow will receive from Studio (e.g., RequestType, RequesterName, Description).
Add the action steps: create a Planner task, write a SharePoint list row, send an email — whatever the scenario requires.
Add a Return value(s) to Power Virtual Agents step at the end. Return at minimum a confirmation string: "SubmissionStatus": "Success" or an error message.
Save and test the flow in Power Automate before connecting it.
2. Add the action to your Studio agent¶
In Copilot Studio, open your agent. Go to Actions → Add an action → Power Automate flows. Select the flow you just created. Studio will automatically expose its input parameters as variables.
3. Create a topic that calls the action¶
Create a new topic. Define trigger phrases that match what users will naturally say:
"Submit a request for...""Open a ticket for...""Log a [type] request"
In the topic, add Question nodes to collect each required input parameter. Then add a Call an action node pointing to your Power Automate flow. Map the collected variables to the flow's input parameters.
After the action node, add a Message node that uses the flow's return value to confirm the action:
Your request has been submitted. You'll receive a confirmation email shortly.
Reference: {SubmissionStatus}
4. Test end-to-end¶
In the Studio test panel, trigger the topic with one of your trigger phrases. Walk through the question/answer flow, then verify the action executed in the downstream system.
5. Handle errors gracefully¶
Add a Condition node after the action call that checks the return status. If the flow returned an error, route to a message: "Something went wrong. Please try again or contact [support]." — never let the agent silently fail.
Screenshots¶
We deliberately don't ship screenshots that go stale — the Microsoft Copilot UI changes often. Follow the numbered steps above, which we keep current. Maintainers can regenerate fresh captures with the Playwright tool in tooling/screenshots/.
Make it better¶
- Use child flows for reuse: if multiple topics need the same action (e.g., "notify a manager"), put the logic in a single Power Automate child flow and call it from each parent flow.
- Approval flows: Power Automate's approval connector lets your agent submit multi-step approvals — the agent collects the request, the flow routes it for sign-off, and the agent confirms back when approved.
- Adaptive Cards for confirmation: instead of a text confirmation, return an Adaptive Card from the flow to give users a rich summary of what was created.
- Debugging: use Power Automate's run history to debug flow failures — Studio won't show you what happened inside the flow.
Watch out for¶
- Silent action failures. Always branch on the flow's return status and tell the user when something didn't go through — never let the agent confirm an action that failed.
- Debugging blind. Studio won't show you what happened inside the flow; use Power Automate's run history when an action misbehaves.
- Unscoped permissions. The flow runs with its connection's permissions — confirm it can only touch what this agent should.
Where this leads (the ramp)¶
Power Automate connectors cover an enormous amount of ground, but some integrations need custom code, real-time APIs, or tools your flow can't express. That's the point where Azure AI Foundry's pro-code tool calling — via MCP — picks up.
Related¶
Thanks — glad it helped. Spotted something to improve anyway? Suggest it →
Sorry this didn't land. Tell us what broke → so we can fix that rung of the ramp.
Found an issue or want to suggest an improvement? Open a GitHub issue · Star on GitHub