DESIGNER GUIDE
Build structured Adaptive Cards
Create structured interfaces that present information, collect user input and route people through deterministic processes. Generate a first card from natural-language intent, refine it visually or in code and test every action inside the complete Flow.
Scope: Card Render step in a Flow project
Use cards for structure, not decoration
Use an Adaptive Card when the user needs to:
- Understand structured information
- Select from approved choices
- Enter required data
- Confirm an action
- Navigate to the next controlled process step
Use an ordinary message when no structured interaction is required.
Flow reaches Card Render
↓
Card is generated or loaded
↓
User reads, enters or selects information
↓
Button action is submitted
↓
Values are captured
↓
Flow follows the connected routeWhat is an Adaptive Card?
An Adaptive Card is a structured user interface rendered inside a supported Greentic experience. A card can contain content, inputs and actions while adapting its presentation to the supported host.
- Menus
- Forms
- Clarification questions
- Order or case summaries
- Choice lists
- Confirmations
- Final results
- Card Render
- The Flow step that displays an Adaptive Card.
- Card intent
- A natural-language description of the card Designer should generate.
- Content block
- A visual element such as text, a heading, an image or an input.
- Input
- A field through which the user supplies a value.
- Action
- A button that submits data, opens a URL or routes to another Flow step.
- Answer name
- The stable identifier used for a captured input value.
- Live preview
- A rendered preview of the current card configuration.
- Terminal card
- A final card that ends the Flow after it is rendered.
- Validation mode
- How card-schema issues are treated at render time.
Card types
Most cards fall into one of a small number of recognisable patterns.
| Card type | Typical purpose | Example |
|---|---|---|
| Display card | Present structured information | Delivery-status summary |
| Menu card | Offer approved process choices | Track, return or report damage |
| Input card | Collect one or more values | Order number or clarification |
| Confirmation card | Ask the user to confirm an action | Confirm cancellation |
| Terminal card | Present a final result and end the Flow | Resolution completed |
One card may combine more than one purpose. For example, an order-summary card may display information and include buttons for the next approved actions.
Continuous examples
This guide follows two related fictional ACME cards.
Clarification card
Ask for missing information when an Agentic Worker cannot confidently select the correct customer-service process. The captured answer in this demonstration is named clarification_response.
Track Your Order card
Display a prefilled fictional order number and let the customer either continue tracking or return to the main menu.
These are demonstration examples rather than required Greentic patterns. Card IDs, answer names and order numbers shown here are fictional.
On this page
Before you begin
A card is quicker to build when the surrounding process is already clear.
- Confirm that the correct workspace and Flow project are active.
- Define the card’s single primary purpose.
- Identify the information the user should see.
- Identify the values the user must provide.
- Define stable names for every captured answer.
- Decide where each button should route.
- Decide whether the card is terminal.
- Prepare fictional test data.
- Define the Flow validation that should occur after submission.
- Keep card text short enough to read comfortably.
1. Add a Card Render step
Card Render is a built-in Flow step. Its incoming connection determines when the card is displayed, and its action routes determine what happens after the user responds.
Open the Add Step dialog in the Flow Editor and select Card Render from the built-in steps. The step becomes part of the explicit Flow canvas.
- 1Open the intended Flow project.
- 2Select the point where the user interface is required.
- 3Open Add Step.
- 4Select Card Render.
- 5Give the step a meaningful business name.
- 6Connect the incoming Flow path.
- 7Configure or generate the card.
- 8Connect its button actions to the correct next steps.
- 9Run the affected route in Demo.
Prefer: Ask for order number · Clarify customer request · Present delivery options · Confirm cancellation · Show resolution summary.
Avoid: Card Render 1 · New Card · Input · Form 2.
For step connections, branches and canvas controls, see the Flows guide.
2. Describe the card intent
Card Render can generate a complete card from a natural-language instruction.
- Step name
- The name used for the Card Render step on the Flow canvas.
- Instruction
- A natural-language description of the card to generate: its purpose, the information to display, the inputs required, the labels to use, the buttons required and the intended user outcome.
- Data
- Optional name-and-value pairs that provide design-time context to the card generator.
- Host
- Optional host context for card generation where supported.
Example instructions
Ask the customer for the missing information needed to route their
support request. Include a clear heading, a short explanation, one
multiline response field and a Submit button.Show a Track Your Order card with the current order number, a
Track this order button and a Return to menu button.- 1Select the Card Render step.
- 2Enter a meaningful step name.
- 3Describe the card in the Instruction field.
- 4Add design-time Data entries only when they help generation.
- 5Add Host context only when it is required and supported.
- 6Generate or refresh the card.
- 7Open Preview.
- 8Refine the generated card in the visual editor.
3. Use runtime variables correctly
Design-time data and runtime values behave differently. The Card Render interface is explicit about this distinction.
- Data supplied to the card generator is a design-time hint.
- A direct node reference copied into generated card content may render empty.
- A {{vars.<name>}} reference can resolve when the card is rendered.
- The relevant Flow variable must already have been captured or set.
Previous Flow step
↓
Value captured into a Flow variable
↓
Card contains {{vars.variable_name}}
↓
Card Render resolves the variable{{vars.order_number}}The specific variable must exist before the Card Render step runs.
For Flow variables and process data, see the Flows guide.
4. Preview, validate and choose terminal behaviour
Preview the card, choose how schema issues are treated and decide whether the card ends the Flow.
- Preview
- Shows the current card before running the complete Flow.
- Edit card
- Opens the full Adaptive Card Designer.
- Card count
- The interface summarises the number of content blocks and buttons. Treat the displayed count as an example only.
- Validation: Off
- Do not apply the card-schema validation behaviour at render time.
- Validation: Warn
- Report card-schema issues as warnings.
- Validation: Error
- Treat card-schema issues as errors.
- Terminal
- When enabled, the Flow ends after the card is rendered: there is no further routing and button navigation does not continue.
Use Terminal for a final result or confirmation card. Leave Terminal disabled when the user must select an action or supply information before the Flow continues.
- 1Open the Preview tab.
- 2Review content hierarchy and labels.
- 3Confirm that every input has a clear purpose.
- 4Confirm that all required actions are visible.
- 5Select an appropriate validation mode.
- 6Enable Terminal only for a final card.
- 7Select Edit card when visual or structural changes are required.
5. Build the card visually
Build mode combines an element palette, the ordered card structure and a live preview.
Element palette
The current interface shows Text, Heading, Image, Chart, Facts, Rich text, Media, Container, Columns, Text input and Choice input, plus Submit button and Open URL button actions. Treat this as the current interface, not a permanent exhaustive list.
Card structure
The centre area contains content blocks and actions, with reordering, expand and collapse, duplicate, delete and add controls.
Live preview
The right side shows the card as it is currently rendered.
- 1Open the Card Designer.
- 2Stay in Build mode.
- 3Add the required content elements.
- 4Arrange them in a logical reading order.
- 5Add the required inputs.
- 6Add one clear primary action.
- 7Add secondary actions only when they are useful.
- 8Review the Live preview after each significant change.
- 9Confirm that the card remains marked Valid.
- 10Select Save card.
Clear heading
Short explanation
Essential information or input
Primary button
Optional secondary button6. Configure text inputs
Each input needs a stable identifier, a clear label and an intentional required state.
- Answer name
- The stable identifier used to capture the submitted answer, for example clarification_response.
- Label
- The user-facing description of the information required. It should remain understandable when read without the surrounding paragraph.
- Default value
- An optional prefilled value. Use defaults only when the value is known, safe to show, reviewable and not misleading.
- Required
- Controls whether the interface expects the field to be completed before submission.
Good answer names
order_number · clarification_response · resolution_choice · customer_email
Avoid
input1 · answer · field · value2
Use lowercase stable names, use underscores where helpful, describe the business value and do not reuse the same answer name for unrelated inputs.
- 1Add a Text input.
- 2Expand the input properties.
- 3Enter a stable Answer name.
- 4Add a concise Label.
- 5Add a Default value only where justified.
- 6Enable Required when the process cannot continue without the value.
- 7Review the Live preview.
- 8Save the card.
- 9Validate the captured answer in the next Flow step.
7. Configure Submit actions and routes
Submit actions have a user-facing title and follow the route connected in the Flow.
- Button title
- The text displayed on the button. Use action-oriented labels such as Submit, Continue, Track this order, Confirm cancellation or Return to menu.
- Routes to
- The Flow destination associated with the button. The interface explains that this is set automatically based on where the button goes.
Avoid unclear labels such as OK, Yes or Next unless the surrounding context makes the meaning unambiguous. The supplied example shows End of flow (no target), which is appropriate only when the action should complete the Flow. A card intended to continue must have its action connected to the relevant next step. Routes to is not an ordinary free-text field.
Submit button
↓
Connected card action
↓
Next Flow step- 1Add or select a Submit button.
- 2Enter a clear Button title.
- 3Return to the Flow canvas where necessary.
- 4Connect the button outcome to the intended next step.
- 5Reopen the card and confirm the displayed route.
- 6Test the action in Run Demo.
- 7Confirm that captured input is available to the receiving step.
- 8Confirm that no action produces an unintended dead end.
8. Edit the card in Code mode
Code mode exposes the underlying Adaptive Card JSON alongside the same live preview.
- Build is the visual editing mode.
- Code exposes the underlying Adaptive Card JSON.
- Format reformats the current JSON.
- Copy copies the JSON.
- Live preview remains available.
- Valid indicates whether the card passes the editor’s schema check.
- 1Save the visual structure before making advanced changes.
- 2Select Code.
- 3Review the generated JSON.
- 4Make only the intended change.
- 5Use Format to improve readability.
- 6Review the Live preview.
- 7Confirm that the card remains Valid.
- 8Return to Build mode and confirm that the card is still editable.
- 9Save the card.
- 10Run the complete Flow again.
The schema version visible in one example card is not necessarily the only version supported by Greentic.
9. Use AI assistance
AI assistance can refine, analyse and review an existing card.
- Clean up
- Improve or simplify the current card structure or content.
- Rewrite
- Rewrite selected card wording.
- Analyze
- Review the card and identify potential improvements.
- Accessibility check
- Review the card for potential accessibility concerns.
- 1Build the first card.
- 2Review it manually.
- 3Open AI assist.
- 4Choose the relevant action.
- 5Review the proposed change.
- 6Confirm that important labels and answer names remain correct.
- 7Confirm that routing has not changed unexpectedly.
- 8Review the Live preview.
- 9Save the card.
- 10Run the card in the complete Flow.
10. Test the complete card interaction
Run Demo confirms that the card appears at the right moment and that every button keeps the user inside the controlled process.
- The customer sees a structured service menu.
- The user selects the Track order action.
- The Flow follows the connected route.
- A Track Your Order card is displayed.
- The order-number input contains a fictional prefilled value.
- The card provides Track this order and Return to menu actions.
- Run Demo waits for the expected button action.
- 1Save the card.
- 2Return to the Flow Editor.
- 3Open Run Demo.
- 4Navigate to the card through the same route a user will follow.
- 5Confirm that the correct card appears.
- 6Confirm all runtime variables resolve.
- 7Confirm prefilled values are correct.
- 8Enter or change a value.
- 9Select the primary button.
- 10Confirm that the intended next step opens.
- 11Restart the interaction.
- 12Test every secondary action.
- 13Test an empty required field.
- 14Test invalid input.
- 15Test the card at the end of the full business journey.
For execution inspection and diagnosis, see Testing and troubleshooting.
11. Accessibility and content quality
A card is only useful when every customer can read it, understand it and act on it.
Text
- Use short headings.
- Use plain language.
- Keep instructions concise.
- Avoid unexplained abbreviations.
- Make error and confirmation messages specific.
Inputs
- Give every input a visible label.
- Explain the expected format where necessary.
- Use Required intentionally.
- Do not rely only on placeholder text.
- Avoid unnecessary fields.
Actions
- Use action-oriented button labels.
- Make the primary action obvious.
- Avoid several visually equal actions.
- Provide a safe way back where appropriate.
Layout
- Use a logical reading order.
- Group related information.
- Avoid excessive columns.
- Check the card at narrow widths.
- Do not rely only on colour to communicate meaning.
- Run the Accessibility check.
- Review its suggestions.
- Complete a manual check.
- Test with realistic text lengths.
12. Recommended card design process
A repeatable sequence that keeps cards usable and the surrounding process correct.
Define purpose
↓
Define captured values
↓
Define button routes
↓
Write card intent
↓
Generate first card
↓
Refine in Build mode
↓
Review Preview
↓
Check validation and accessibility
↓
Test in Run Demo
↓
Validate submitted values in the Flow- 1Define the card’s single primary purpose.
- 2Define every answer name.
- 3Define the next Flow route for every action.
- 4Write the natural-language card intent.
- 5Generate the first card.
- 6Review the content and actions.
- 7Refine inputs and labels in Build mode.
- 8Use Code only where required.
- 9Run AI analysis and accessibility checks.
- 10Save the card.
- 11Test it through the previous Flow step.
- 12Test every action.
- 13Validate all submitted values.
- 14Save a meaningful Flow version.
Adaptive Card review checklist
Complete this review before the card is included in a published or deployed solution.
- The card has one clear primary purpose.
- The card appears at the correct point in the Flow.
- The heading explains the task.
- Supporting text is concise.
- Every input has a stable Answer name.
- Every input has a visible Label.
- Required is enabled only where necessary.
- Default values are safe and accurate.
- Every button has a clear action label.
- Every non-terminal button has a valid next route.
- End of flow is used only where intended.
- Terminal is enabled only for a final card.
- Runtime variables are set before the card renders.
- Unsupported node references are not used in card content.
- Card data contains no credentials or secrets.
- The card is schema-valid.
- Validation behaviour is intentional.
- The card has been manually reviewed for accessibility.
- The card has been tested in Run Demo.
- All submitted values are validated by the Flow.
- All primary and secondary actions have been tested.
- The accepted Flow state has been saved as a version.
Troubleshooting at a glance
Common card problems and the first thing to check.
| Problem | Likely cause | Action |
|---|---|---|
| Card Render is not available | The wrong step list is open or the capability is unavailable | Review built-in and extension steps and confirm the workspace |
| The generated card is too generic | The Instruction does not define content, inputs and actions clearly | Rewrite the intent with an explicit card structure |
| A runtime value is blank | The Flow variable was not set or an unsupported node reference was copied into the card | Set a Flow variable before Card Render and use the supported variable reference |
| The card preview is correct but Run Demo is wrong | Runtime data or Flow routing differs from the preview | Test from the previous Flow step and inspect variables |
| A submitted value is missing | The input has an incorrect or duplicated Answer name | Give each input a unique stable identifier |
| The card accepts an empty value | Required is disabled or validation occurs only in the Flow | Enable Required where appropriate and validate in the following step |
| The Submit button ends the Flow | Routes to is End of flow or the card is terminal | Connect the action to the next step and review Terminal |
| A button opens the wrong step | The card action is connected to the wrong Flow route | Review the canvas connection and rerun the scenario |
| Button text is unclear | The title does not describe the action | Use a specific verb-based button title |
| Code mode marks the card invalid | The JSON does not match the expected card schema | Correct the JSON and review the Valid indicator |
| Warn or Error appears at render time | Card-schema validation found an issue | Review the card structure in Build or Code mode |
| AI assistance changes important wording | The suggested rewrite altered business meaning | Reject or correct the change and retest |
| The card is valid but difficult to use | Schema validity does not check usability or full accessibility | Review labels, reading order, buttons and narrow-screen behaviour |
| A default value shows incorrect customer information | The value was hard-coded or the runtime variable is wrong | Remove the default or correct the Flow data |
| User input is used without validation | The Flow assumes submitted data is safe | Add deterministic validation before any business action |
| Open URL leads to an unsafe or incorrect location | The action target was not reviewed | Use approved destinations and test the action before publication |
