Topics & the Authoring Canvas
Session 2.1 — the authoring canvas, topics, trigger phrases, and the core node types, with a Northwind Outfitters Returns & Exchanges topic built step by step.
Sessions 1.1 and 1.2 were about how Copilot Studio thinks — orchestration, harnesses, generative vs. classic response selection. This one is the first "build" session: you're going to construct an actual piece of conversation logic, the same kind of thing every agent in Copilot Studio is made of underneath.
That unit of logic is called a topic. Microsoft's own definition is plain: a topic represents a portion of a conversation between a user and an agent, and you define it on the authoring canvas — a low-code surface where you place nodes and connect them into a path. Each node does one small thing: send a message, ask a question, branch on a condition, hand off to another topic.
What actually triggers a topic
Every agent ships with a set of topics already built in. Some are system topics — things like "end the conversation" or "escalate to a person." You can turn these off or tweak their nodes, but you can't create new ones or delete them outright. Everything you build yourself is a custom topic.
How does the agent know which topic to run? It depends on the orchestration mode from 1.2. With generative orchestration, the agent reads each topic's description and picks the best match for what the user's asking. With classic orchestration, it's trigger phrases doing the work — sample utterances that train the topic's natural-language matching. Microsoft's own guidance is specific here: 5 to 10 trigger phrases per topic, short rather than long, and the match doesn't need to be exact. A topic with the trigger phrase "check store hours" still fires when someone types "see store opening hours" — the NLU model generalizes from the samples you give it.
Worth sitting with: trigger phrases aren't documentation. They're training data. Every phrase you add reshapes what the model considers "close enough" to this topic — which is exactly why vague or overlapping phrases across topics cause the wrong one to fire.
The node types you'll actually use
The canvas gives you more node types than you'll need on day one. Here's the set that covers almost every topic you'll build in this course.
Message
Sends the customer text — an answer, a confirmation, a policy statement.
Question
Asks the customer something and captures the reply in a variable. Choosing "multiple choice options" under Identify auto-builds a branch for each choice.
Condition
Branches the path based on a variable's value — only available once a topic has variables to check.
Redirect / End
Hands off to another topic (and returns here when it finishes) or ends the current topic or the whole conversation.
Full reference: Node types in Copilot Studio, which also lists Adaptive Card, Tool, and Advanced (generative answers, HTTP request) nodes for later sessions.
Worked example — a Returns & Exchanges topic for Northwind Outfitters
Northwind Outfitters is our running scenario for the rest of this course, and returns is one of its highest-volume questions. Here's the actual sequence you'd follow in Copilot Studio to build the topic, using only what's on the canvas right now — no entities or tools yet, those come in 2.2 and Group 4.

One topic, five node types, zero entities — everything above is buildable with what's covered in this session. Notice what it doesn't do yet: it can't actually look up someone's order, and it can't remember the customer said "in-store" once the conversation moves to a different topic. Both of those need entities and variables — the very next session.
Check your retrieval
Answer before you expand each one.
Your "store hours" topic has the trigger phrase "check store hours," and a customer types "see store opening hours." What happens?
Nothing — the phrase has to match exactly to fire the topic
The topic still fires — trigger phrases train a match, not a required exact string
The agent asks the customer to rephrase using an exact trigger phrase
The topic still fires — trigger phrases train a match, not a required exact string. They're training samples for the NLU model, not literal strings to match.
You want a Question node to send the conversation down a different path depending on which of three options the customer picks. What do you set under Identify?
A Condition node placed after the question
Multiple choice options — Copilot Studio auto-builds one branch per choice
A separate topic for each possible answer
Multiple choice options — Copilot Studio auto-builds one branch per choice. No manual wiring needed.
You turn a custom topic Off instead of deleting it. What's true?
It's removed from the published agent entirely
It stops triggering, but still publishes with the agent and can be turned back on
It merges its trigger phrases into the fallback topic
It stops triggering, but still publishes with the agent and can be turned back on. Off means dormant, not gone — useful for parking a topic mid-edit.
How many trigger phrases does Microsoft recommend per topic to properly train the match?
1–2, kept as close to the topic name as possible
5–10, short and varied in wording
20+, to cover every possible phrasing
5–10, short and varied in wording. Few enough to write by hand, enough for the model to generalize from.
Match the node to the job
Tell the customer the return window
Message node
Find out if the order was online or in-store
Question node (multiple choice)
Send the conversation into a shared "verify identity" topic
Redirect node
Stop this topic early on one branch, but keep the rest of the conversation going
End current topic node
Reflection
Read next
The single highest-leverage skill in topic authoring: Design effective trigger phrases. It's why a Copilot Studio agent feels like it's listening instead of pattern-matching.
Key takeaway: A topic is trigger phrases plus a chain of nodes on the canvas — get the phrases specific and varied, and the branching mostly builds itself.
Sources
Last updated