OPERATION INTERFACE UPLIFTâąď¸ Operation Time Window:
~45 minutes
đĽ Watch the Walkthrough
Agents, your mission is to infiltrate the static user experience and replace it with rich, dynamic, and actionable Adaptive Cards. Youâll deploy JSON payloads and Power Fx formulas to transform Copilot Studio conversations from basic Q&A into fully interactive engagements. Your goal is to gather user input, present data beautifully, and direct conversations with precision and style. Fail to adapt, and your users may defect to less intelligent interfaces.
In this mission, youâll learn:
An Adaptive Card is way to create interactive, visually rich UI elements that can be embedded in apps like Microsoft Teams, Microsoft Outlook or agents. It is a structured JSON object that defines the layout and content of a card:
What actions users can take such as submitting a form or opening a link

Imagine youâre building an agent that asks users for their name, email, or feedback. If you just use plain text, the conversation can feel boring or hard to follow. Thatâs where Adaptive Cards come in!
Look great everywhere - Adaptive Cards automatically match the style of the app theyâre in, such as Microsoft 365 Copilot chat or Microsoft Teams. You donât need to worry about dark mode, font, or layouts - it adapts.
Easy to build with JSON - you define the card using JSON code (think recipe for the UI). Copilot Studio helps you preview your card before adding it to the topic.
Pronounced as âJason,â itâs not a person đ
JSON, otherwise known as JavaScript Object Notation is a lightweight format used to structure data. Itâs easy to read and write, and looks like a series of key-value pairs inside curly braces {}.
This is one of the options to use when adding an adaptive card to your topic.

Remember how we learnt about Power Fx in Mission 07 - Using Power Fx in your nodes The same can be applied in Adaptive Cards within Copilot Studio.
As a recap,
!!! note Power Fx is a low-code programming language used to add logic and dynamic behavior to your agent. Itâs the same language used in Microsoft Power Apps, and itâs designed to be simple and Excel-like, making it easy for developers and non-developers.
When you design an Adaptive Card in Copilot Studio, you can use Power Fx formulas to:
For example,
âHelloâ & System.User.DisplayName
This formula combines the word âHelloâ with the userâs name dynamically.
Personalization
You can tailor message to each user, making interactions feel more natural and relevant.
Dynamic content
Cards can display real data from variables and outputs from conversation nodes.
Smart logic
You can control what users see or interact with based on conditions, improving usability and reducing errors.
Low-code friendly
Power Fx is a low-code programming language. As mentioned earlier, itâs readable, intuitive and similar to Excel formulas.
The Adaptive Card Designer is a visual tool that lets you build interactive message cards using drag-and-drop elements like text, images, buttons, and inputs. Its purpose is to help you create rich, dynamic messages without writing complex code, making it easier to design user-friendly interfaces.
The designer tool helps you build the card visually, but behind the scenes, itâs generating the JSON object for you. You can also switch to formula which enables Power Fx expressions to be used in the card to display data from else where.

These are the building blocks of your adaptive card. You can drag and drop elements such as the following:
Each element has its own purpose and can be styled or configured.
This is the Preview area where you see how your card will look like in real time. As you add or edit elements, the viewer updates instantly to reflect changes. This enables you to make iterative updates and see the design output at the same time.
This shows the hierarchy and layout of your card. For example:
It helps you understand how elements are nested and organized.
When you click on any element in the card, this panel lets you customize its settings:
This is where you fine-tune each element.
This is the raw JSON code behind your card. Advanced users can edit this directly to:
Even if youâre new to the Adaptive Card designer, itâs helpful to see how the visual design translates into codes.
!!! tip âTip - Check out the Adaptive Card samplesâ
1. Browse to [https://adaptivecards.microsoft.com/designer](https://adaptivecards.microsoft.com/designer).
2. Select **New card** to see a list of samples you can choose and modify.
3. Note that this designer is external (web-based). When you build your card in the web-based Adaptive Card Designer, copy the JSON from the Card Payload Editor.
4. Paste the JSON into your adaptive card in your agent in Copilot Studio.

The following are common use cases for Adaptive Cards in Copilot Studio when used in the Send a message or Ask a question nodes.
Forms and data collection
Use adaptive cards to collect structured input from users, such as:
Displaying dynamic information
Shows users personalized or real-time data in a clean, readable format from enterprise sources such as ServiceNow, SAP, Dynamics 365, SharePoint etc.
Interactive choices
Let users make selections directly in the conversation:
Triggering actions
Include buttons that trigger further steps in the conversation internally or externally.
Here are some best practices for creating Adaptive Cards for agents in Copilot Studio.
Keep it simple and focused
Be intentional with inputs
Structure for readability
Make Action elements clear
Design for adaptability
Use dynamic content when possible
Weâre now going to learn how to enhance our topic with adaptive cards and using advanced functionality of topics and nodes.
As an employee
I want to request a device
So that I can request a device from the list of available devices
Letâs begin!
SharePoint list
Weâll be using the Devices SharePoint list from Lesson 00 - Course Setup - Step 3: Create new SharePoint site.
If you have not set up the Devices SharePoint list, please head back to Lesson 00 - Course Setup - Step 3: Create new SharePoint site.
Contoso Helpdesk Copilot
Weâre going to use the same agent created previously in Lesson 06 - Create a custom agent using natural language with Copilot and grounding it with your data.
Weâll create a new topic that will handle a userâs device request. This new topic will contain an Ask with adaptive card node to enable user interaction with the agent.
Letâs begin!
Select the Topics tab, then select + Add a topic from blank.

Name the topic as the following,
Request device
Enter the following as the description for the trigger.
This topic helps users request a device when they answer yes to the question that asks the user if they would like to request one of these devices.

Next, add an Ask with adaptive card node. This node will display an interactive card for the user to select which device they would like to request.

Select the node and the Adaptive Card Node properties pane will appear. Weâre now going to edit the JSON. Select Edit adaptive card. Select Edit adaptive card.

This is the Adaptive Card Designer where you can design your card and see the card design in-real time.
Try dragging and dropping the TextBlock and FactSet card elements to the authoring canvas, the card viewer area. Notice how the card structure and card payload editor updates as the two card elements were added. You can directly update the card payload editor and the element properties pane.

Select Preview to view the card in different widths.

The preview will load where youâll see different card outputs by width.

Exit out of Preview by selecting the x icon and select Undo in the designer to remove the two card elements previously added.

Click into the Card payload editor and select all lines using the Windows keyboard shortcut of Ctrl + A or using the Mac keyboard shortcut of Command + A, followed by deleting the lines. Paste the JSON from the Request devices .JSON file.

Notice how the Card Preview now includes elements that display some text and a list of available devices.
This JSON is currently a placeholder and preview to what weâll use as the base for our card but in the form of a formula rather than JSON since weâre going to reference the global variable, Global.VarDevices.value, that stores the response of the Get items SharePoint connector action.
Select Save and select Close to exit from the Adaptive card designer modal.

Close the Adaptive Card Node properties panel by selecting the X icon.

In the authoring canvas of the topic, youâll see the adaptive card.

Scroll to the bottom of the node and youâll see output variables. The commentsId and the deviceSelectionId were defined in the element properties. These two variables will store values from the card elements the users interact with. These values will be used downstream in the topic, which weâll learn about in the next lessonâs lab.

Letâs next update the card from JSON to formula as weâll use Power Fx again to loop through the items returned in the Get items SharePoint connector action, stored in the global variable, Global.VarDevices.value, via the value property of the JSON response.
We created this global variable in Lab 07 - Add a new topic with conversation nodes, 7.3 Add a tool using a connector.
Select the card in the Ask with Adaptive Card node, followed by selecting the chevron icon and select Formula.

Click on the expand icon to enlarge the Formula field.

Click into the Card payload editor and select all lines using the Windows keyboard shortcut of Ctrl + A or using the Mac keyboard shortcut of Command + A, followed by deleting the lines.

Paste the Formula from the Request Devices formula file.
In the formula, weâll loop through each SharePoint list item using the For All function to display the values of Model in the title of the choice option, and the SharePoint item ID is referenced as the value. Weâre also wrapping the values with the If(IsBlank() functions as the formula expects a value in order to render the adaptive card in the authoring canvas of the topic. Otherwise youâll see a message appear, âProperty cannot be nullâ
Close the card modal.

Close the Adaptive Card Node properties pane.
Save the topic.

Now that we created the new topic that handles the device requests, we need to update the agent instructions to invoke the topic.
Select the Overview tab and in the agent instructions select Edit.

Add a new line below the previous instruction from Lab 07 - Add a new topic with conversation nodes, 7.3 Add a tool using a connector.
- If the user answers yes to the question of requesting a device, trigger [Request device]. Otherwise if they answer no to the question of requesting a device, trigger [Goodbye].
Select the entire topic placeholder in square brackets and delete the placeholder.

Type in /Req and select the Request devices topic.

Repeat the same steps for the next topic placeholder, [Goodbye]. Select the entire topic placeholder in square brackets and delete the placeholder. Type in /Goodbye and select the Goodbye topic.
When the user answers Yes to the agent asking if they would like request a device, the agent will redirect from the Available devices topic to the Request devices topic.
Otherwise if the user answers No, the agent redirect from the Available devices topic to the Goodbye topic.
Save the updated instructions.

Letâs now test our the redirection from the Available devices topic to the Request devices topic. Select the Test to load the testing pane select Refresh.
Then select the Activity map icon in the test pane, followed by enabling Track between topics. This will allow us to see the Available devices topic has redirected to the Request devices topic.
OK, weâre good to test! Enter the following in the test pane.
I need a laptop

The agent will respond with the list of available devices followed by the question of asking the user if they would like to request a device. Copy and paste the following,
yes please

Weâll next see that the agent has redirected to the Request device topic. The agent invoked this topic as per the instructions we added.
The adaptive card with the interactive elements will now be displayed as message to the user.

Weâve now successfully tested đ our Available devices topic redirecting to the Request devices topic. Weâll be adding more enhancements to this topic in the next lessonâs lab.
Refresh the test pane.

Congratulations! đđť Youâve learnt how to add adaptive cards using Power Fx formulas to display data from variables, and you also learnt how to redirect from one topic to another. Creating bite sized topics makes your agent more organized, but also helps guide users through different parts of the conversation flow with the agent.
This is the end of Lab 08 - Enhance user interactions with Adaptive Cards, select the link below to move to the next lesson. Weâll expand on the use case in this lab in the following lessonâs lab.
âď¸ Move to Add an agent flow to your Topic for automation lesson
đ Using Adaptive Cards in Copilot Studio
đ Add an adaptive card in Send a message node
đ Create expressions using Power Fx
đş Building Adaptive Cards with Power FX