Edit submissions from a dashboard. No custom UI needed.
Updated March 2026
Sutrena dashboards are read-only by default. You get charts and tables, but you cannot change anything from the dashboard itself. The action_table widget changes that. action_table extends data_table with inline editable fields. Any field can become a dropdown. Pick a new value and the submission updates immediately via a PATCH request. Rows that contain an email field also show a delete button. The dashboard must be private (isPublic: false) because it exposes write access to your form data. Only the form owner can view it.
1. Create a form for your data
Start with a form that has the fields you want to manage. Select fields work best for the editable dropdowns, but any field can be made editable with custom options. Here we create a support ticket form with a status field we will edit from the dashboard.
curl -X POST https://sutrena.com/api/forms \
-H "Authorization: Bearer st_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Support Tickets",
"fields": [
{ "name": "subject", "label": "Subject", "type": "text", "required": true },
{ "name": "email", "label": "Email", "type": "email", "required": true },
{ "name": "category", "label": "Category", "type": "select",
"options": ["billing", "technical", "account", "other"], "required": true },
{ "name": "severity", "label": "Severity", "type": "select",
"options": ["low", "medium", "high", "critical"], "required": true },
{ "name": "ticket_status", "label": "Status", "type": "select",
"options": ["new", "open", "in-progress", "resolved", "closed"], "required": true }
]
}'
# Response:
# {
# "id": "frm_tickets01",
# "name": "Support Tickets",
# ...
# }2. Create an action_table dashboard
POST a dashboard with the action_table widget. The key differences from a regular data_table: set the type to action_table, add an editableFields array to define which fields become dropdowns, and set isPublic to false. You can combine action_table with other widget types like metric_card and pie_chart in the same dashboard.
curl -X POST https://sutrena.com/api/dashboards \
-H "Authorization: Bearer st_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"title": "Support Ticket Admin",
"formId": "frm_tickets01",
"isPublic": false,
"dsl": {
"version": 1,
"widgets": [
{
"type": "metric_card",
"title": "Total Tickets",
"value": "count(*)"
},
{
"type": "pie_chart",
"title": "By Status",
"groupBy": "ticket_status"
},
{
"type": "action_table",
"title": "All Tickets",
"columns": ["subject", "email", "category", "severity"],
"editableFields": [
{
"field": "ticket_status",
"options": ["new", "open", "in-progress", "resolved", "closed"]
}
],
"limit": 50,
"sort": "newest"
}
]
}
}'
# Response:
# {
# "id": "dsh_admin01",
# "title": "Support Ticket Admin",
# "dashboardUrl": "https://sutrena.com/d/dsh_admin01"
# }3. Change a status from the dashboard
Open the dashboard URL while logged in. Each row in the action_table shows your columns plus a dropdown for ticket_status. Selecting a new value fires a PATCH request to /api/forms/{formId}/submissions/{subId} with the updated field. The UI uses optimistic updates: the dropdown changes instantly and reverts if the request fails. A toast notification confirms success or shows the error. Rows with an email column also display a delete button that removes the submission entirely after confirmation.
4. Use it for other workflows
action_table works for any workflow where you need to triage, categorize, or update records from a simple UI. Here are three common patterns.
{
"widgets": [
{
"type": "action_table",
"title": "Order Fulfillment",
"columns": ["order_id", "customer_email", "product", "quantity"],
"editableFields": [
{
"field": "fulfillment_status",
"options": ["pending", "processing", "shipped", "delivered"]
}
],
"limit": 50,
"sort": "newest"
},
{
"type": "action_table",
"title": "Content Moderation",
"columns": ["title", "author_email", "submitted_at"],
"editableFields": [
{
"field": "moderation_status",
"options": ["pending", "approved", "rejected"]
}
],
"limit": 50,
"sort": "newest"
},
{
"type": "action_table",
"title": "Event Check-In",
"columns": ["name", "email", "ticket_type"],
"editableFields": [
{
"field": "checkin_status",
"options": ["registered", "checked-in", "no-show"]
}
],
"limit": 100,
"sort": "newest"
}
]
}No. action_table dashboards must have isPublic set to false. The widget exposes write access to your form submissions, so it is restricted to the authenticated form owner. The API will reject a dashboard creation request that includes an action_table widget with isPublic: true.
The UI sends a PATCH request to /api/forms/{formId}/submissions/{subId} with the updated field in the payload. The dropdown updates optimistically so you see the change immediately. If the request fails, the value reverts to its previous state and a toast notification shows the error.
No. action_table requires a formId because it writes back to form submissions via the PATCH API. CSV and inline data dashboards are read-only snapshots with no backing store to update.
Yes. The editableFields array accepts up to 10 entries. Each one becomes a separate dropdown column in the table. For example, you could have both a status dropdown and a priority dropdown on the same row.
Sutrena is the web runtime for AI agents. Three primitives — pages, forms, and dashboards — accessible through one API. Your agent creates web artifacts, humans interact with them, and your agent gets the data back. Framework-agnostic. Works from any MCP client or HTTP client.
1. Get a trial key (no auth, no signup)
curl -X POST https://sutrena.com/api/trial2. Create a form + dashboard from a template
curl -X POST https://sutrena.com/api/forms \
-H "Authorization: Bearer st_trial_xxx" \
-H "Content-Type: application/json" \
-d '{"templateId": "waitlist", "createDashboard": true}'Get a trial API key instantly with no signup, or create an account for the full experience.