Scheduling & calendar
Scheduling lets you queue a post for a specific time instead of publishing immediately. The Calendar pulls every scheduled post into a single view so you can see — and reshape — what's coming.
Schedule a post
From the composer, choose Schedule and pick a time
(defaults to the next 9:00 AM local). The post becomes scheduled and a
per-channel schedule record is created for each destination.
Scheduling is timezone-aware: each connected account has its own IANA
timezone (e.g. America/New_York), which governs how agent capacity and
posting days are bucketed. The UI renders everything in your local timezone.
The Calendar
The calendar lives on the Posts page (List / Calendar toggle; the sidebar's Calendar entry goes straight there). Five views: Month, Week, Day, Agenda, Year, plus:
- Drag to reschedule — move an event to a new day (month) or a precise slot (week/day). Past targets are rejected; you can't drag history.
- Resize in week/day views to visualize duration (the post's time is what persists).
- Filters — status (scheduled / published / failed) and per-account.
- Settings (persisted per browser) — dark mode, dot badges, 24-hour clock, day start hour, agenda grouping.
- Click an event to edit it (draft/scheduled) or open its detail (published/failed). Click an empty day or slot to start composing for that date.
- Year view gives 12 mini-months with activity dots.
Posting gaps
Each account has a minPostGapMinutes setting (default 60) that enforces a
minimum interval between posts on that channel — editable in the account's
settings drawer. It protects you from bursts that drown out earlier posts or
trip platform spam filters.
When your time is in the past
A scheduled time that has already passed (or is blocked) is never fired blindly. The scheduler resolves it to the next workable slot:
- Less than 5 minutes past → publish now.
- Otherwise it computes the next best slot per channel: real schedule load for the day, the governing agent's daily cap, engagement-ranked hours from the account's own insight history (needs ≥5 samples), and the account's posting gap — nudged past any collision.
- When everything is full or no signal exists, it falls back to publishing rather than blocking you.
The same resolver runs when an ideation proposal with a stale time is approved, and the reschedule is recorded in the agent's log.
Best time to post
post.buzz ranks day × hour slots per account from your engagement history (needs ≥5 published posts). The dashboard heatmap and the Insights "Best time" card surface it, and agents use the same signal when planning. Results are cached 24 hours per account.
Queue mechanics
Scheduled posts are dispatched by an exact-time scheduler: a background job
picks each post up at its time, moves it to publishing, and submits to each
platform. The final status becomes published or failed per channel. TikTok
posts can sit in publishing a while — the platform confirms publication
asynchronously via webhook.
If you need content to repeat on a cadence (e.g. "post this every Monday at 9am"), use recurrence rather than scheduling copies by hand.
Related
- Compose — create the post you'll schedule.
- Posts & post detail — the queue and statuses.
- Recurrence — evergreen / repeating posts.
- AI agents — agents can schedule within your limits.