Scheduling
Schedule each channel at its own time, watch one aggregate status roll up across them, and work in your local timezone while Inklate stores everything in UTC.
A scheduled post isn’t one publish — it’s a set of per-channel placements, each with its own time, that Inklate arms and fires independently. The post you see carries a single status rolled up from those placements, and every time you enter or read is shown in your own timezone.
Per-placement scheduling
Each channel a post publishes to is a separate placement, and each placement can go out at its own moment. Scheduling “for Tuesday at 9am” schedules the placements you’ve armed; nothing forces two channels to share a time. When the moment arrives, each placement publishes on its own — see Publishing for how that runs.
A scheduled time must be strictly in the future. An instant at or before now isn’t a schedule — it’s an immediate publish, so the calendar refuses a past drop, the composer disables Schedule, and the server rejects the write, all from one shared rule. For “right now,” use Post now instead.
Aggregate post status
A post has one status, computed from every placement beneath it. The lifecycle runs through:
| Status | Meaning |
|---|---|
| Draft | Being written; not armed to publish. |
| Pending approval | Submitted for sign-off (see Approvals). |
| Scheduled | Armed and waiting — timed or immediate. |
| Publishing | At least one placement is still going out. |
| Published | Every placement landed. |
| Failed | Nothing is still pending and at least one placement didn’t land. |
The rollup is deliberate: a post reads Published only when every placement published, and drops to Failed only once no placement is still in flight. Until then it stays Publishing. A partial outcome — some channels live, others not — is a Failed post whose status view still shows which channels went out and which need attention.
A single placement can also be unknown — the provider call was indeterminate (a timeout, or a response with no post id). Inklate reconciles that placement by reading back from the provider rather than blindly re-posting, so an ambiguous send never becomes a double-post.
Timezones
Times are stored in UTC and always entered and displayed in the viewer’s local timezone. You pick a day and a 12-hour time in the composer, or drop a card on the calendar; Inklate converts to a UTC instant on the way in and back to your local clock on the way out. Two teammates in different timezones see the same post at the same absolute moment, each in their own wall-clock time.
Where to go next
Preflight and fixes
The fit-check validates each placement against its platform's real rules and returns a per-placement verdict — passing, or failing with one-click Fixes.
Calendar and drafts
All posts is a calendar of everything scheduled and published — with a drafts tray, drag-to-reschedule, and conflict-safe moves when a teammate or agent edits underneath you.