Skip to main content

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.

tip

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.