Publish your first post
The approval pipeline, start to finish — what each status means, who can move things, and when the publisher picks it up.
The six statuses
- Planned — a drafted post not yet in editing. Just a title + maybe some pillar notes.
- Editing — caption and media being written and attached. Normal in-flight state.
- Ready for review — handed off to a reviewer / client. The Awaiting Approval ring appears on the card.
- Ready for agents — automation path (if the workspace has agents configured — captions, hashtags, carousel rendering handled by the agent fleet).
- Scheduled — approved and queued. The publisher picks this up when
scheduledForpasses. - Posted — live on the platforms it was tagged to. Row is locked at this point — edits require canceling and re-queuing.
Writing a post
- From the Content page, click New post. Give it a title (internal — never shown anywhere public).
- Pick the content type: Video, Carousel, Post, or Story. This affects which per-platform caption fields appear and which assets you'll upload.
- Pick platforms. Each selected platform gets its own caption and optional first comment — never copy-paste the same caption across platforms.
- Upload media. Images, videos, and carousel slides all go to blob storage; the publisher reads them when it's time to send.
- Pick a schedule. Scheduled for + status Scheduled is what the publisher checks; past that time, it fires.
Approval
Changing status to Ready for review adds the ring to the card. A reviewer opens the post, reads the per-platform captions, previews the media, and either approves (which moves it to Scheduled) or sends it back with notes.
Approval is per-workspace, not global — a client of yours can approve their own posts without seeing anyone else's.
What the publisher does
The publisher is a background job that runs every minute. It picks every post whose scheduledFor has passed and status = Scheduled, walks the platforms list, and calls the publishing API for each. Successes get a platform- specific external id written back; failures mark the post awaitingApproval = true again with the error visible on the row.