Power Platform Copilot Studio Channel Deployment

A bot that lives only in the Copilot Studio test pane helps no one. Bots become valuable when users can reach them where they already work — in Microsoft Teams, on a website, through a mobile app, or as part of a Dynamics 365 interface. This topic covers advanced bot capabilities — authentication, adaptive cards, handoff to live agents, custom channels, and analytics — that take a basic bot to a production-ready solution.

Channels: Where Your Bot Lives

A channel is a surface where your bot is accessible to users. Copilot Studio supports multiple channels simultaneously — the same bot can be active on Teams, your website, and a SharePoint page at the same time, each tailored slightly for that surface.

COPILOT STUDIO CHANNELS

┌─────────────────────────────────────────────────────────────┐
│                    YOUR COPILOT BOT                         │
└─────────────┬────────────────────────────────────┬──────────┘
              │                                    │
    ┌─────────▼──────────┐              ┌──────────▼──────────┐
    │  Microsoft Teams   │              │  Custom Website     │
    │  (built-in channel)│              │  (embed code)       │
    └────────────────────┘              └─────────────────────┘
              │                                    │
    ┌─────────▼──────────┐              ┌──────────▼──────────┐
    │  SharePoint page   │              │  Mobile App         │
    │  (web part embed)  │              │  (Direct Line API)  │
    └────────────────────┘              └─────────────────────┘
              │
    ┌─────────▼──────────┐
    │  Dynamics 365      │
    │  Customer Service  │
    └────────────────────┘

Deploying to Microsoft Teams

Teams is the most common deployment channel for internal bots. Users find the bot in their Teams app and chat with it just like chatting with a person.

Publishing to Teams

In Copilot Studio, click Channels in the left sidebar. Click Microsoft Teams. Click Turn on Teams. Copilot Studio registers the bot with Teams automatically. Click Open bot to test it immediately in Teams. To make it available to others, go to the Teams Admin Center and create an app policy that includes your bot. Or click Edit details in the Teams channel settings to configure the bot's display name, description, and icon, then choose whether to make it available to the whole organization or specific users.

Pinning the Bot in Teams

Admins can pin the bot in the Teams sidebar so it appears by default for all employees — no user action needed to find it. In the Teams Admin Center, go to Teams apps → Setup policies → add the bot to the pinned apps list. Within hours, the bot appears in the left sidebar of every targeted user's Teams application.

Website Embedding

For customer-facing bots on public websites or intranet pages, Copilot Studio generates an HTML snippet that embeds the chat widget on any webpage.

Getting the Embed Code

In Copilot Studio, click Channels → Custom website. Copy the snippet of JavaScript and HTML. Paste it into your website's HTML, just before the closing body tag. A chat bubble appears in the bottom-right corner of your webpage. When visitors click it, the bot opens in a side panel. You can customize the color, position, and welcome message using properties in the snippet.

WEBSITE EMBED SNIPPET (simplified structure):

<script
  src="https://webchat.botframework.com/..."
  data-bot-id="your-bot-id"
  data-name="HR Assistant"
  data-color="#0078D4"
></script>

This single snippet renders the full chat widget.
The bot connects to Copilot Studio over a secure channel automatically.
No server-side code required on the website.

User Authentication in Bots

Many business bots need to know who the user is — to look up their leave balance, their orders, or their support tickets. Copilot Studio supports authentication so the bot knows exactly which Microsoft account the user is signed in with.

Configuring Authentication

In Copilot Studio, click Settings in the left sidebar, then Security → Authentication. Choose the authentication type. "No authentication" is for public bots where user identity is not needed. "Only for Teams and Power Apps" uses the logged-in Microsoft 365 identity automatically when the bot runs inside Teams — no extra login prompt. "Authenticate with Microsoft" uses standard OAuth 2.0 for website bots — users see a login button and sign in with their Microsoft account.

AUTHENTICATION OPTIONS

No authentication:
  Use for: Public FAQs, product info bots, open customer-facing bots
  User identity: Unknown

Teams / Power Apps (recommended for internal):
  Use for: Employee self-service bots in Teams
  User identity: Automatically inherited from Teams login
  System.User.PrincipalName: Available without any login prompt

Authenticate with Microsoft (for website bots):
  Use for: Customer portals, intranet bots outside Teams
  User identity: After OAuth sign-in, user details are available
  System.User.PrincipalName: Available after authentication

Adaptive Cards: Rich Interactive Responses

Plain text responses work but feel basic. Adaptive Cards let the bot return beautifully formatted cards with images, tables, buttons, and input fields that users interact with directly in the chat.

ADAPTIVE CARD EXAMPLE (rendered in Teams or website chat)

┌────────────────────────────────────────────────────────┐
│  📋 Service Request Summary                            │
├────────────────────────────────────────────────────────┤
│  Request ID:    IT-2025-0445                           │
│  Title:         Email access not working               │
│  Priority:      High                                   │
│  Status:        In Progress                            │
│  Assigned To:   Raj Kumar                              │
│  Created:       04 Jun 2025                            │
├────────────────────────────────────────────────────────┤
│  [View in Portal]      [Add Comment]      [Escalate]   │
└────────────────────────────────────────────────────────┘

Building Adaptive Cards

Design Adaptive Cards at adaptivecards.io/designer — a visual editor where you drag and drop card elements. Export the JSON. In Copilot Studio, add a "Send a message" node, switch from text to Adaptive Card mode, and paste the JSON. Replace static values with dynamic variable references using the ${variableName} syntax. The bot generates the card with live data from variables at runtime.

Escalation to Live Agent

Not every question has an automated answer. When a bot cannot help — the question is too complex, the user is frustrated, or the situation requires human judgment — the bot should hand off to a live human agent gracefully.

Built-in Escalation Topic

Copilot Studio includes a system topic called "Escalate" that triggers when the user says phrases like "talk to a human," "connect me to support," or "speak to an agent." Edit this topic to customize the handoff message and add any pre-escalation data collection — ask the user for their name, account number, and issue description before handing them to a human, so the agent has context immediately.

Integration with Dynamics 365 Customer Service

For organizations using Dynamics 365 Customer Service or Omnichannel for Customer Service, Copilot Studio integrates directly. When escalation triggers, the bot passes the entire conversation transcript, all collected variables (name, issue type, account number), and the user's contact record to a live agent in the Dynamics 365 agent workspace. The agent sees the full context instantly — no need to re-ask what the bot already collected.

Topic Redirection and Topic Chaining

A complex bot often has topics that call other topics — a main menu topic redirects to specialized topics, or a data collection topic is reused across multiple flows.

TOPIC CHAINING DIAGRAM

Main Menu Topic:
  "What can I help you with?"
  [Leave]    [IT Support]    [Payroll]    [Policies]
     │              │              │            │
     ▼              ▼              ▼            ▼
Leave Topic    IT Topic     Payroll Topic  Policies Topic

Each button triggers a "Go to another topic" node pointing to the right topic.
Control returns to the Main Menu after each topic completes (optional).

Use Redirect to topic action in any node to jump to another topic. Variables marked as global carry their values into the redirected topic automatically. Variables marked as topic scope reset when you enter a new topic.

Bot Analytics: Understanding What Users Ask

Copilot Studio includes built-in analytics that show how the bot is performing. Click Analytics in the left sidebar to see the dashboard.

ANALYTICS DASHBOARD METRICS

Summary page:
  Total sessions       → How many conversations happened
  Engagement rate      → % of sessions where user sent at least one message
  Resolution rate      → % of sessions resolved without escalation or abandonment
  Escalation rate      → % of sessions handed to a human
  Abandon rate         → % of sessions where user left without resolution

Sessions page:
  Top topics triggered → Which topics users ask about most
  Unrecognized phrases → What users typed that no topic matched

Topic details:
  Conversations triggered
  Escalation rate for this topic
  Abandonment rate for this topic

WHAT TO DO WITH THE DATA:
  Low resolution rate  → Add more topic variations, improve generative answers
  High unrecognized    → Create new topics for common unmatched phrases
  High escalation on a topic → Bot is not answering well; review and improve

Environment Variables and Bot Configuration

When you move a bot from development to production (using Solutions and ALM — covered in Topic 20), environment-specific settings like SharePoint site URLs, API endpoints, and connection references change between environments. Store these in environment variables rather than hardcoding them in the bot. When you deploy to production, update the environment variables — the bot uses the new values automatically without any manual editing of topics or flows.

Testing Across Channels

A bot that works in the Copilot Studio test pane may look different in Teams (which renders Adaptive Cards natively) versus a website (which uses a generic web chat renderer). Always test your bot in each target channel before going live. Card layouts may collapse or expand differently. Button sizing changes. Long messages may truncate or wrap differently across channels. Deploy to a test Teams environment or a staging website before releasing to production users.

Copilot for Microsoft 365 Integration

Bots built in Copilot Studio can be published as plugins for Microsoft Copilot for Microsoft 365 (the AI assistant built into Teams, Word, Outlook, and other M365 apps). Users can invoke your business bot from within the M365 Copilot chat interface — asking their AI assistant to check their leave balance or create an IT ticket, with the Copilot Studio bot handling the request behind the scenes. This integration connects custom business logic to the M365 Copilot experience without any additional coding.

Key Points

  • Deploy bots to multiple channels simultaneously — Teams, websites, SharePoint, and Dynamics 365 — from a single Copilot Studio bot.
  • Teams deployment is the most common for internal employee bots. Use Teams Admin Center to pin the bot in users' sidebars automatically.
  • Website embedding generates a JavaScript snippet that adds the bot chat widget to any webpage — no server-side code required.
  • Authentication: use "Teams and Power Apps" mode for internal bots (inherits the user's identity automatically). Use Microsoft OAuth for website bots.
  • Adaptive Cards produce rich, interactive responses with buttons, tables, and images — design them at adaptivecards.io and paste the JSON into Copilot Studio message nodes.
  • Escalation to live agents (including Dynamics 365 Omnichannel) passes the full conversation context and collected variables to the human agent.
  • Analytics reveal which topics trigger most often, where conversations abandon, and which phrases the bot fails to recognize — use this data to improve the bot continuously.

Leave a Comment