Schedule semantics
Exactly how weekly and monthly schedules, the last-day rule and time zones are evaluated.
This is the precise behaviour behind the schedule you set. For advice on what to set, see Choosing a schedule.
What a schedule is
| Setting | Options |
|---|---|
| Frequency | Weekly (pick days of the week) or Monthly (pick days of the month, 1–31, plus an optional "last day of the month"). |
| Times | One or more times of day. Each time on each chosen day is one posting slot. |
| Time zone | Yours (Settings → time zone; new accounts default to US Eastern), or the client's for a client agent. Times are always read on that clock, daylight saving included. |
- A monthly day that a month does not have (the 31st in April) is simply skipped that month; use "last day of the month" if you mean "the end of every month".
- "Last day of the month" resolves to the 28th, 29th, 30th or 31st as appropriate.
- If the time zone stored for you is unrecognised, times are read as UTC. Fix it in Settings and the next slot is correct.
How a slot fires
- Every 60 seconds the scheduler looks at every running agent.
- An agent is due when the current local time is within two minutes after one of its times on a scheduled day, and it has not already posted for that slot. The two-minute window means a slot is never missed because of the poll interval, and the "already posted" guard means it never fires twice.
- If the agent's queue has a post, the first one is published. Otherwise a fresh post is written, checked, illustrated (if images are on) and published within the slot; a post the claims check cannot vouch for is held and a second one is written; if that one is held too, the slot is skipped rather than publishing something unverified.
- The post is handed to the publisher, which sends it to each attached account.
A slot that cannot complete in time — generation returned nothing, or the image failed — is retried on the next poll while the two-minute window is still open. If it still cannot complete, that slot is missed and the next one goes ahead normally; nothing half-finished is published.
Before any of that: the gates
Each poll, an agent is checked in this order. Failing a gate is logged and, where noted, pauses the agent so you can see it.
| Check | Result if it fails |
|---|---|
| Is a plan or trial covering this agent? | The agent is paused with the reason shown on its page. See Billing and the free trial. |
| Does it have at least one account attached? | Skipped this poll (nothing to post to). Stays running; the Accounts section shows the warning. |
| Are all attached accounts its own (yours for a personal agent, the client's for a client agent)? | The agent is paused. This should never happen through the app; it is a safety net. |
| Is it due? | Not yet — checked again in 60 seconds. |
Publishing and retries
- Each account gets its own attempt. One account failing does not stop the others.
- A failed attempt is retried up to three times, 15, 30 and 45 minutes after the previous try. After that the post shows as Failed to post for that account.
- If the platform reports the post was already published (a retry after a timeout, say), it is marked published rather than posted twice.
- Instagram requires an image; if the post has none, Instagram is skipped for that post and the other accounts still receive it.
- A failure caused by an expired permission also flags the account as needing reconnecting and emails you. See When an account needs reconnecting.
Changing the schedule
Changes take effect at the next poll — within a minute. Adding a time earlier today that has already passed does not fire retroactively; the two-minute window has closed. "Publish now" in the console is the way to post outside the schedule.