For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

Group 2 · Session 2.1 of the Copilot Studio course. Full plan on the Mission page. Follows How an Agent Decides.

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.

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.

Node
What it does

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.

1

Add a topic → From blank

A Trigger node appears on an otherwise empty canvas. This node can't be renamed, but everything about it — its phrases — is yours to define.

2

Add 5–10 trigger phrases

Short, specific, and varied in wording — that's what trains the match: how do I return an item, exchange policy, can I get a refund, return window, exchange for a different size, send something back.

3

Add a Message node — state the policy

"Northwind Outfitters accepts returns within 30 days of delivery, unworn and with tags attached." One fact, stated once, no hedging.

4

Add a Question node — branch on purchase channel

"Was this an online order or an in-store purchase?" Set Identify to multiple choice with two options. Copilot Studio auto-creates one branch per option — you don't wire that up by hand.

5

Give each branch its own Message node

Online → "Start your return from the Orders page using your order number." In-store → "Bring the item and your receipt to any Northwind Outfitters location."

6

End the conversation with a survey

Closes out both branches and logs a satisfaction response you can review later on the CSAT analytics page.

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

You need to…
Reach for

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

My essay frames skill as knowledge that's been proven against reality through repetition and failure. A topic's trigger phrases are exactly that kind of thing — untested guesses about how customers actually talk, until real conversations prove them right or wrong. What would you actually need to watch, once this topic is live, to know whether your trigger-phrase guesses were any good?

ONE REASONABLE ANSWER Writing trigger phrases is authoring a hypothesis about your customers' language, not a fact about it. The signal that tells you whether the hypothesis held up isn't whether the topic feels complete on the canvas — it's what happens in real conversations: which utterances failed to match and fell through to a "did you mean" disambiguation or a fallback topic. Copilot Studio's analytics surface exactly this. Reviewing unresolved or misrouted conversations and folding the real phrasing back into your trigger-phrase list is the same repetition-and-correction loop the essay describes for skill generally — the topic doesn't become good at listening the day you publish it, it becomes good at listening after a few rounds of watching where it failed.

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.

Sources

Last updated