Build a Customer Service Bot with Copilot Studio
Your support team spends hours answering the same questions about order status, password resets, and return policies. A well-designed customer service agent in Microsoft Copilot Studio can handle 40-60% of tier-1 support queries automatically, freeing your team for complex issues that need human judgment. This guide walks you through building your first production-ready customer service bot in under two hours.
What You'll Learn
- Create a new Copilot Studio agent and configure it for customer-facing support conversations
- Build conversation topics that handle common customer questions with multi-turn dialog flows
- Connect your agent to SharePoint or Dataverse knowledge bases for generative AI answers
- Use Power Automate flows to pull order status from your CRM or ticketing system
- Deploy your agent to your website with the Web Chat channel
- Set up analytics dashboards to monitor agent performance and identify gaps
Prerequisites
- Microsoft 365 account with Copilot Studio license (included in most M365 plans, or $200/month standalone)
- Access to your company knowledge base (SharePoint site, PDF docs, or Dataverse tables)
- List of your top 10-15 most frequent customer support questions
- Power Automate premium license if connecting to external systems like CRM (optional but recommended)
Create Your Agent and Set the Scope
Log into copilotstudio.microsoft.com and click 'Create' then 'New agent'. Name it something specific like 'Customer Support - ReturnBot' rather than generic names. In the agent settings, set the 'Primary language' to match your customers and choose 'Classic' authoring for now if this is your first agent—you get more explicit control over conversation flow. Under 'Agent details', write a clear description of what this agent handles and what it doesn't, because this description helps the generative AI stay on topic. Set the 'Solution' to a dedicated environment if you're in an enterprise, or use the default environment for testing.
Build Your First Conversation Topic for Order Status
Click 'Topics' in the left nav, then 'Add a topic' and choose 'From blank'. Name it 'Check Order Status' and add trigger phrases like 'where is my order', 'track my package', 'order status', and 'delivery time'. In the authoring canvas, add a 'Question' node that asks for the order number—set the variable type to 'Number' or 'String' depending on your system. Next, add an 'Action' node and select 'Call an action' to invoke a Power Automate flow that queries your order system. Finally, add a 'Message' node that displays the status returned from the flow, like 'Your order #12345 shipped on March 10 and arrives March 15.'
Connect Generative AI to Your Knowledge Base
Go to 'Settings' then 'Generative AI' and toggle on 'Allow the AI to use its own general knowledge' if you want broad coverage, or leave it off for strict compliance scenarios. Under 'Knowledge sources', click 'Add knowledge' and choose either a SharePoint site (for document-based FAQs), a public website (your existing support site), or Dataverse tables. If using SharePoint, paste the site URL like 'https://yourcompany.sharepoint.com/sites/support-docs' and authenticate. The agent will now generate answers from those documents when a user's question doesn't match a specific topic you built. Set the 'Moderation level' to Medium for most business use cases.
Create a Password Reset Topic with Authentication
Add another topic called 'Reset Password' with triggers like 'forgot password', 'can't log in', 'reset my password'. Because this is a security-sensitive topic, add an 'Authenticate' node right at the start and select 'Azure Active Directory' if this is for employees, or 'Custom authentication' if you have a customer identity system. After authentication, add a 'Question' node asking 'Which account email do you want to reset?' and store it in a variable. Add an 'Action' node to call a Power Automate flow that triggers your identity provider's password reset API. Finally, add a 'Message' confirming 'Password reset email sent to {email}—check your inbox in the next 5 minutes.'
Build a Return Policy Topic with Conditional Logic
Create a 'Return Policy' topic with triggers like 'can I return this', 'refund policy', 'send it back'. Add a 'Question' node asking 'How many days ago did you receive this item?' with a 'Number' variable. Add a 'Condition' node that checks if the number is less than or equal to 30 days. In the 'True' branch, add a message explaining the return process and a link to your return portal. In the 'False' branch, explain that the return window has closed but offer to escalate to a human agent. This conditional branching handles policy enforcement automatically without human review.
Set Up Escalation to Human Agents
In your topics, add a 'Redirect to topic' node at decision points where the bot can't help, and redirect to a system topic called 'Escalate'. In the Escalate topic, customize the message to say something like 'Let me connect you to a specialist who can help with this'. If you have Dynamics 365 Customer Service with Omnichannel, click 'Actions' and add 'Transfer conversation' to route to a live agent queue. If you don't have Omnichannel, add an 'Action' node that calls a Power Automate flow to create a ticket in your existing system and email your support team. Either way, make sure the agent passes the conversation history and user details to avoid making customers repeat themselves.
Deploy to Your Website with Web Chat
Click 'Channels' in the left nav and select 'Custom website'. Copilot Studio generates an embed code snippet—copy the entire script tag. Give this to your web developer to paste into your site's footer or support page template. Test the widget by visiting your site and clicking the chat icon—it should open the agent in a floating window. In the channel settings, customize the chat icon color, welcome message, and suggested prompts to match your brand. Set the 'Conversation start' message to something actionable like 'I can help with order status, returns, or account questions—what do you need today?'
Configure Analytics and Monitor Performance
Go to 'Analytics' in the left nav and open the 'Summary' dashboard. This shows your total sessions, resolution rate (conversations that ended without escalation), and engagement rate. Click 'Topics' to see which topics are used most and which have the lowest resolution rates—those are the ones to improve first. Set up a weekly review where you look at the 'Transcripts' tab to read 10-15 real conversations and identify gaps. Use the 'Unrecognized' tab to find questions users asked that didn't trigger any topic—these become your next topics to build.
Summary
You now have a functional customer service agent that handles common queries, pulls live data from your systems via Power Automate, uses generative AI for knowledge base questions, and escalates gracefully when needed. Most operations teams see a 40% reduction in tier-1 tickets within the first month of deployment. The key is continuous improvement—review analytics weekly and add new topics based on what customers are actually asking.
Ready to Build Your First Agent?
Copilot Studio is powerful but the learning curve is real. I'll help you build your first production agent in a single session—customer service, HR, IT helpdesk, whatever your priority is. 90-day custom solutions, you own the IP.
Book Copilot Studio Training