TeamsFormatter Documentation

Build in minutes. Paste once. Ship to Teams.

Targets Adaptive Card schema v1.5 (Teams compatible)

SharePoint (Recommended)

Store Adaptive Card responses directly in a SharePoint list using Power Automate's "Post adaptive card and wait for a response" action. No Parse JSON step required—field values are automatically available under body.data.<id>.

Step-by-Step Guide

1. Create a SharePoint List

• Go to your SharePoint site

• Click + NewList

• Name it (e.g., "Employee Feedback")

• Add columns to match your card's input fields:

Column NameTypeNotes
TitleSingle line of text(Default column, always exists)
ratingNumberFor rating/score (1-5)
commentMultiple lines of textFor user feedback
submittedAtDate and Time(Optional) Submission timestamp
submittedBySingle line of text(Optional) User who submitted

2. Create a Power Automate Flow

• Go to flow.microsoft.com

• Create a new "Automated cloud flow"

• Choose a trigger (e.g., "Recurrence" for scheduled posts, or "Manual trigger" for testing)

3. Add Action: "Post adaptive card and wait for a response"

• Search for "Post adaptive card and wait for a response"

• Select Post as: Flow bot

• Select Post in: Channel (or User/Chat)

• Choose your Team and Channel

• Paste your Adaptive Card JSON into the Message field

Important: Rename this action to PostCardWait (or note the name for Step 5)

4. Add Action: "Create item" (SharePoint)

• Add a new action: "SharePoint - Create item"

• Select your Site Address and List Name

• Map each field using the expressions below (no Parse JSON needed!)

5. Map Fields Using Expressions

Click on each SharePoint field and switch to the Expression tab, then copy/paste these expressions:

Title (Single line of text):
concat('Feedback from ', outputs('PostCardWait')?['body']?['responder']?['displayName'])
rating (Number):
int(outputs('PostCardWait')?['body']?['data']?['rating'])

int() converts the value to a number. Use outputs('PostCardWait')?['body']?['data']?['rating'] for text-type columns.

comment (Multiple lines of text):
outputs('PostCardWait')?['body']?['data']?['comment']
submittedAt (Date and Time) (Optional):
outputs('PostCardWait')?['body']?['responseTime']
submittedBy (Single line of text) (Optional):
outputs('PostCardWait')?['body']?['responder']?['displayName']

Important Notes

Field IDs: All input values live under outputs('PostCardWait')?['body']?['data']?['<id>'] where <id> is the input's ID in your Adaptive Card.

Action Name: If you renamed the Teams action to something other than PostCardWait, replace PostCardWait with your action name in all expressions.

Semantic IDs: Use clean, descriptive IDs like rating, comment, startDate that match your SharePoint column names for easier mapping.

Data Types: Use int() for Number columns, bool() for Yes/No columns. For text/date columns, use the expression as-is.

Quick Start: Use the in the builder—it's pre-configured with rating and comment inputs that map directly to the SharePoint columns above.
Testing Tip: Use a "Manual trigger" for your first flow so you can test it before scheduling automated posts. Once it works, you can change the trigger to "Recurrence" or another automated trigger.

Standard Input IDs (Recommended)

For better Power Automate integration and consistent SharePoint column mapping, we recommend using semantic, camelCase field IDs. The builder will suggest these IDs automatically based on your field labels.

Common Examples:

rating - Rating/score (1-5, 1-10)
comment - User comment/feedback
priority - Priority level (Low, Medium, High)
reason - Reason for request
startDate - Start date for time off/event
endDate - End date for time off/event
allDay - All day event/toggle
Benefits: Using standard IDs makes your Power Automate flows more maintainable and ensures consistent data mapping to SharePoint columns. The builder will warn you if you use non-standard IDs like days_off (use daysOff instead) or auto-generated patterns like input1.