How to Create Adaptive Cards with the Adaptive Cards Designer (Step-by-Step)

Adaptive Cards are the small forms and summaries that bots and agents show inside Microsoft Teams, Copilot and website chats. This guide shows you how to create Adaptive Cards in Microsoft’s new Adaptive Cards Designer, step by step, without writing any code. You’ll build a real feedback card, test it, and copy JSON that works in the app you’re building for.

What is an Adaptive Card?

An Adaptive Card is a piece of user interface described in JSON, a plain-text data format. You describe the card once. The app that shows it, called the host, draws it with its own fonts, colors and buttons, so the same card fits in naturally in Teams, in Copilot or in a chat window on a website, in light or dark mode.

A card can show text, images and facts, and it can ask questions with text boxes, choices, dates and toggles. A button on the card sends the answers back to the bot or app that sent the card.

Every card states the schema version it needs, and hosts support different versions. Microsoft lists them in Adaptive Cards for agent design:

HostNewest version it supports
Microsoft Teams (desktop, web and mobile)1.5
Microsoft Copilot Chat1.5
Dynamics 365 live chat1.5
Bot Framework Web Chat (chat on a website)1.6
Outlook Actionable Messages1.0 to 1.2

If a card asks for a newer version than the host supports, the host shows the card’s fallback text instead of the card (AdaptiveCard version). Step 12 shows how to get this right, because the designer always writes version 1.6.

What you’ll have at the end

A feedback card with a heading, a short description, a required rating question, a comments box and a Send feedback button. You’ll have tested it at four widths and in dark mode, and you’ll have its JSON, ready to paste into a bot, an agent or a flow.

Prerequisites

  • A web browser on a computer. The designer has several panes side by side, so a big screen helps.
  • Nothing else. The designer is free, and you don’t need an account, a sign-in or any installs.

Step 1: Open the Adaptive Cards Designer

Open adaptivecards.microsoft.com/designer.html. This is Microsoft’s current designer. The old address on adaptivecards.io now ends on a “page not found” page.

The designer has six areas:

  • Toolbox (left): every element you can add, grouped into Elements, Inputs, Charts and Actions.
  • Card canvas (middle): your card as people will see it. Select an element here to edit it.
  • Card structure: the card as a tree. Use it to select the card itself, or an element that’s hard to click.
  • Properties: the settings of whatever is selected.
  • Card payload (bottom): the card’s JSON, which updates as you work.
  • Validation and Sample data (bottom right): problems the designer finds, and test data for card templates.
The Adaptive Cards Designer at adaptivecards.microsoft.com with the Toolbox on the left, an empty card in the middle, the Card structure and Properties panes on the right, and the Card payload and Validation panes at the bottom.
The Adaptive Cards Designer: Toolbox, card canvas, Card structure, Properties, Card payload and Validation.

Across the top is the toolbar: New card, Import, Export, a device width picker (it shows Standard), Undo, Redo, Copy card payload and Preview. The moon button at the far right switches to the dark theme.

Step 2: Start a new, empty card

Select New card. The Pick a sample as a starting point dialog opens with Microsoft’s sample cards, which are a good source of ideas later. For this guide, select Empty card.

The Pick a sample as a starting point dialog in the Adaptive Cards Designer, showing an Empty card tile next to Microsoft sample cards such as Account and Author Highlight Video.
New card opens a gallery of samples. Choose Empty card to start from scratch.

Step 3: Add a title

In the Toolbox, find TextBlock near the bottom of Elements. Drag it onto the empty card and let go. A TextBlock with the text New TextBlock appears. It’s selected, so Properties shows its settings and Card payload shows its JSON.

A TextBlock dropped from the Toolbox onto the empty card in the Adaptive Cards Designer, with the new element outlined on the card and added to the Card payload.
Drag TextBlock from the Toolbox and drop it on the card.

Now set its properties:

  1. In Text, replace New TextBlock with Share your feedback.
  2. Check that Wrap is ticked. Wrapped text moves to the next line instead of being cut off on narrow screens.
  3. Under Style, open Base style and choose Heading.
The Properties pane of a TextBlock with the text Share your feedback, Wrap turned on and Base style set to Heading, next to the card showing the new title.
Type the title in Text and set Base style to Heading.

The Heading style does more than make the text bigger. It marks the text as a heading, so screen readers announce it as one (TextBlock style). It needs version 1.5 or later.

Step 4: Add a short description

Keep the title selected and double-click TextBlock in the Toolbox. Double-clicking adds the new element right below the one you’ve selected, which is quicker than dragging. In Text, type Tell us how the workshop went. Your answers help us plan the next one. Wrap is already ticked for new TextBlocks.

Step 5: Add a required rating question

With the description selected, double-click Input.ChoiceSet under Inputs. A choice set lets people pick from a list. It arrives with two sample choices and some sample text. Set it up like this:

  1. Id: rating. Every input needs an Id. It’s the name the answer arrives under when someone submits the card (Input.ChoiceSet).
  2. Label: How would you rate the workshop? Use the Label, not a separate TextBlock, so screen readers connect the question to its choices (accessibility tips).
  3. Placeholder: delete the sample text. A placeholder only shows in the compact (drop-down) style.
  4. Style: Expanded, which shows every choice as a radio button.
  5. Under Choices, change the two Name and Value pairs to Excellent / excellent and Good / good. Select + (Add a new choice) and add Needs improvement / needs-improvement. The name is what people see, and the value is what your bot receives.
  6. Under Validation, tick Required, then type Choose a rating. in Error message. The Error message box stays greyed out until Required is ticked.
The Properties pane of an Input.ChoiceSet with Required ticked, the error message Choose a rating. and the choices Excellent, Good and Needs improvement, next to the card showing three radio buttons.
The rating question: three choices, Required, and an error message.

Step 6: Add a comments box

Double-click Input.Text in the Toolbox, then set:

  • Id: comments
  • Multiline: ticked, so people can write more than one line
  • Label: What should we improve?
  • Placeholder: Type your suggestions, the grey hint shown in the empty box
The Properties pane of an Input.Text with the Id comments, Multiline ticked, the label What should we improve? and the placeholder Type your suggestions, next to the card showing the comments box.
The comments box: Id comments, Multiline, a label and a placeholder.

Leave Required unticked, so suggestions stay optional.

Step 7: Add the Send feedback button

Double-click Action.Submit under Actions. Buttons go in the action bar at the bottom of the card. In Title, type Send feedback.

The Properties pane of an Action.Submit with the title Send feedback, next to the finished feedback card with its Send feedback button.
Action.Submit adds the Send feedback button.

When someone selects the button, Action.Submit gathers the card’s inputs (rating and comments) and hands them to the host app, which decides what to do with them (Action.Submit). For a bot, that means the answers arrive at your bot. The Toolbox also has Action.Execute, the universal action for Teams and Outlook, but Bot Framework Web Chat doesn’t support it.

Step 8: Clear the Validation warning

Look at the Validation pane at the bottom right. Since the start it has shown one problem: The “speak” property should always be set as it provides a way for screen readers to describe the card to an end-user that relies on assistive technologies.

To fix it, select AdaptiveCard at the top of Card structure. That selects the card itself. In Properties, type a short summary of the card in Speak, for example Share your feedback about the workshop. Choose a rating, add any suggestions, then send. The warning disappears.

The AdaptiveCard properties with Speak filled in, the finished feedback card, the Card payload editor and an empty Validation pane in the Adaptive Cards Designer.
After you fill in Speak, the Validation pane has no problems.

Tip: the same pane has Fallback text. A host shows it instead of the card when it can’t display the card’s version, so a sentence such as “Update your app to see this feedback form” is worth adding.

Step 9: Test the card in Preview

Select Preview in the toolbar. Preview your card at all widths shows the card at four widths: Very narrow, Narrow, Standard and Wide. Hosts show cards at different widths, from phones to wide desktop windows, so check that nothing is cut off or squashed.

The Preview your card at all widths dialog of the Adaptive Cards Designer showing the feedback card at the Very narrow, Narrow, Standard and Wide widths.
Preview shows the card at every width a host might use.

You can use the preview cards. In the Very narrow card, select Send feedback without choosing a rating. The card shows your error message in red:

The feedback card at the Very narrow width with the red error message Choose a rating. under the rating choices.
Send feedback with no rating shows the error message.

Now choose Good, type a suggestion and select Send feedback again. The error goes away. The designer has no bot to send the answers to, so nothing else happens. In Teams, this is when your bot receives them.

The feedback card at the Very narrow width with Good selected, More time for hands-on exercises. typed in the comments box, and no error message.
With a rating chosen, the error goes away.

Select Close to leave Preview.

Step 10: Check the card in dark mode

Teams can run in dark mode, so check your card in it too. Select the moon button at the right end of the toolbar (Switch to dark theme) and make sure every part of the card is still easy to read. Select it again (Switch to light theme) to go back.

The feedback card rendered in the dark theme of the Adaptive Cards Designer, with light text on a dark background.
Check the card in the dark theme too.

Step 11: Copy or export the card JSON

When the card looks right, take its JSON out of the designer:

  • Copy card payload copies the JSON to your clipboard, ready to paste into your code, your agent or your flow.
  • Export saves it as a file named adaptive-card.json.
The Adaptive Cards Designer toolbar with New card, Import, Export, Standard, Undo, Redo, Copy card payload and Preview, and the tooltip Copy the JSON payload of the card to the clipboard.
Copy card payload copies the JSON. Export saves it as a file.

Here’s the JSON the designer gave for the feedback card:

{
    "type": "AdaptiveCard",
    "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.6",
    "body": [
        {
            "type": "TextBlock",
            "text": "Share your feedback",
            "wrap": true,
            "style": "heading"
        },
        {
            "type": "TextBlock",
            "text": "Tell us how the workshop went. Your answers help us plan the next one.",
            "wrap": true
        },
        {
            "type": "Input.ChoiceSet",
            "label": "How would you rate the workshop?",
            "choices": [
                {
                    "title": "Excellent",
                    "value": "excellent"
                },
                {
                    "title": "Good",
                    "value": "good"
                },
                {
                    "title": "Needs improvement",
                    "value": "needs-improvement"
                }
            ],
            "id": "rating",
            "style": "expanded",
            "isRequired": true,
            "errorMessage": "Choose a rating."
        },
        {
            "type": "Input.Text",
            "label": "What should we improve?",
            "placeholder": "Type your suggestions",
            "id": "comments",
            "isMultiline": true
        }
    ],
    "actions": [
        {
            "type": "Action.Submit",
            "title": "Send feedback"
        }
    ],
    "speak": "Share your feedback about the workshop. Choose a rating, add any suggestions, then send."
}

Every step shows up in it: body holds the two TextBlocks and the two inputs, actions holds the button, and speak is the summary for screen readers.

Step 12: Set the version for your host

Look at line 4: "version": "1.6". The designer always writes 1.6, the newest schema version. That’s right for Bot Framework Web Chat, but Teams, Copilot Chat and Dynamics 365 live chat support up to 1.5, and they show the fallback text instead of a card that asks for 1.6.

The designer has no setting for this. Microsoft’s design guidance mentions a Target version option, but the designer at adaptivecards.microsoft.com doesn’t show one. Typing the version into the Card payload editor doesn’t stick either. Here the editor shows 1.5 after the change:

The Card payload editor of the Adaptive Cards Designer showing an empty card with the version changed to 1.5.
You can type 1.5 in the Card payload editor…

As soon as the card changed, the version went back to 1.6. Copy card payload gave 1.6 in every test, even straight after 1.5 was typed in, and the exported file said 1.6 too. The full investigation, with every test and what Microsoft’s documentation says, is in Fixed: Adaptive Cards Designer Changes the Card Version to 1.6.

The Card payload editor of the Adaptive Cards Designer showing version 1.6 again after a TextBlock was added to the card.
…but the next change to the card puts it back to 1.6.

So set the version in your copy of the JSON. For Teams or Copilot, change line 4 to:

"version": "1.5",

Everything in this card works in 1.5. The newest feature it uses, the Heading style, arrived in 1.5 itself. If you add more elements from the Toolbox later, check the version each one needs on its page in the Adaptive Cards documentation.

Where to Use Your Card

Clean Up

There’s nothing to clean up. The designer runs in your browser and doesn’t create anything in any account. Use Export if you want to keep a copy of your card as a file.

Common Mistakes

MistakeWhat happensDo this instead
Keeping "version": "1.6" for a Teams or Copilot cardTeams and Copilot Chat support up to 1.5, so they show the fallback text instead of the cardChange the version to 1.5 in your copy of the JSON (Step 12)
Leaving an input without an IdYour bot can’t tell which answer is whichGive every input a short, unique Id, such as rating or comments
Writing the question in a TextBlock above the inputScreen readers don’t connect the question to the inputType the question in the input’s Label
Keeping the sample Placeholder text on a choice setIt shows in the compact (drop-down) styleDelete it, or write a real hint
Using Action.Execute for a chat on a websiteBot Framework Web Chat doesn’t support itUse Action.Submit

Troubleshooting

ProblemLikely causeFix
The Card payload shows 1.5, but the copied JSON says 1.6The designer writes 1.6 whenever the card changes, and on every copy and exportChange the version after you copy the JSON. See Fixed: Adaptive Cards Designer Changes the Card Version to 1.6
Validation says The “speak” property should always be set…The card has no Speak textSelect AdaptiveCard in Card structure and fill in Speak
The Error message box is greyed outRequired isn’t tickedTick Required first
Teams doesn’t show the cardThe card asks for a newer version than Teams supports, and hosts then show the card’s fallback text insteadSet the version to 1.5, and fill in Fallback text
The old designer link shows “page not found”The designer moved to Microsoft’s new Adaptive Cards siteUse adaptivecards.microsoft.com/designer.html

FAQ

Is the Adaptive Cards Designer free?

Yes. It runs in your browser, and you don’t need an account or a sign-in.

Which version should my card use?

The newest version your host supports: 1.5 for Teams, Copilot Chat and Dynamics 365 live chat, 1.6 for Bot Framework Web Chat, and 1.0 to 1.2 for Outlook Actionable Messages (schema and host compatibility).

Can I start from a ready-made card?

Yes. New card opens Microsoft’s sample cards. Pick one and change it to suit you. Microsoft keeps the samples, with instructions, in the Microsoft Teams Adaptive Card Samples repository.

What are Badge, Carousel, Icon and the charts in the Toolbox?

Newer elements that Microsoft documents on the Adaptive Cards site for Teams and Copilot scenarios. Check each element’s page there before you use it in another host.

Do I have to use the designer?

No. A card is just JSON, so you can write it by hand, or build it in code with the Teams SDK card builders. The designer lets you see the card while you build it.

Conclusion

You created an Adaptive Card in the Adaptive Cards Designer: a heading, a description, a required rating, a comments box and a Send feedback button. You tested it at every width and in dark mode, cleared the Validation warning, and took out its JSON with the right version for your host. Next, send it from your bot or agent, or open New card and adapt one of Microsoft’s samples.

Additional Resources

Leave a Reply

Up ↑