Actions
An action is how a workspace member delegates a piece of work — usually "produce a graphic or asset for this post" — to a teammate and tracks it to completion, with Slack notifications on both ends and file attachments uploaded straight from the browser to S3.
This page describes the product-facing behavior. For the exact request/response shapes and error codes, see the Actions API reference. For programmatic access from an AI client, see Actions MCP tools.
Why actions exist
Content creators frequently need something they can't make themselves — a custom graphic, a video edit, a chart — before a post can move forward. Actions turn that ask into a tracked, assignable record instead of a Slack message that gets lost: create it, assign it, get notified when it's done, review the file in context.
Creating an action
An action can be created two ways in the UI:
- From the actions page, via the "Create Action" button.
- From a post's editor sidebar, via "Request graphic" — this
pre-populates
linked_post_idso the action shows up on that post too.
Required fields: title and assignee_id (must be an existing workspace
member — the picker offers an inline invite flow if you search for someone
who isn't one yet). Optional: description, priority
(p1_urgent/p2_high/p3_medium/p4_low, defaults to p3_medium),
due_date, linked_post_id.
As soon as the action is created, the assignee gets a Slack DM: "New action
request: {title}. Due: {dueDate}."
Status and response are two different things
This trips people up, so it's worth calling out explicitly:
status(open→in_progress→completed, orcancelledat any point) tracks the work item's lifecycle. Anyone in the workspace can change it via the actions table or detail panel.assignee_response(pending/accepted/declined) is a separate signal only the assignee can set — "I've seen this and I'm taking it" or "I'm not doing this." Declining an action does not automatically cancel it or change its status; someone still needs to reassign it or cancel it manually.
| Event | Who gets notified | Message |
|---|---|---|
| Action created / reassigned | Assignee | New action request: {title}. Due: {dueDate}. |
Action marked completed | Creator | Action completed: {title} by {assigneeName}. |
| Assignee accepts/declines | Creator | Assignee {accepted/declined} the action. |
Slack notifications on this domain are not fire-and-forget. If the Slack
API call fails, the create/reassign/complete/respond call itself fails — the
underlying database write has already happened, but the caller sees an
error. If you see actions "half-updated" (DB shows the change, UI shows an
error), a Slack delivery failure is the most likely cause — check the Lambda
logs for actions_service.
Attachments
Assignees upload deliverables directly on the action's detail panel (drag-and-drop) or the post's canvas editor "Attachments" tab if the action is linked to a post.
- Allowed types: PNG, JPG/JPEG, SVG, WEBP, PDF. Anything else is rejected before a presigned URL is even issued.
- Size: intended limit is 10 MB per file, but this is a client-side/UI expectation only — the backend does not currently reject an oversized upload once the presigned URL exists (see the API reference for the exact guarantee).
- Files upload straight to S3 using a presigned URL — the app server never sees the file bytes. Once the action's attachment count updates, the file is downloadable through a fresh presigned URL generated on each page load.
- Anyone who can act on the workspace (not just the assignee) can add or remove attachments — there's no additional "only the assignee" gate on the upload/delete endpoints.
Who can do what
| Action | Any workspace member | Assignee only | Creator or admin only |
|---|---|---|---|
| View / list actions | ✅ | ||
| Edit title/description/priority/due date/reassign | ✅ | ||
| Change status | ✅ | ||
Accept / decline (assignee_response) | ✅ | ||
| Upload / delete attachments | ✅ | ||
| Delete the action | ✅ (creator, or a platform admin) |
Where actions show up
- The actions page — a table of all actions in the workspace with status/priority badges, assignee, due date, and attachment count. Overdue, non-completed actions are highlighted.
- The dashboard — a "Pending Actions" widget for actions assigned to the current user.
- The post detail / canvas editor — any action linked via
linked_post_idshows in an "Attachments" sidebar tab, alongside all files uploaded to it.
See also
- Actions API reference — full endpoint list, request/response shapes, status codes.
- Actions MCP tools —
list_actions/create_actionfor AI clients (a narrower surface than the REST API — no update, delete, status, response, or attachment tools exist over MCP).