Scheduling
Schedules let you post content automatically at a specific time — either once or on a repeating pattern. All scheduled firing times are stored in UTC and displayed in your workspace timezone. Manage your schedules at Schedules in the top navigation.
Screenshot pending
/help/scheduling/open_schedules_menu.png
Workspace sidebar with the Schedules menu item highlighted
See docs/testing/help-screenshot-manifest.md for capture instructions.
Screenshot pending
/help/scheduling/schedules_list_overview.png
Schedules list page showing a table of schedules with name, recurrence summary, next fire time, last fire time, fire count, and status columns
See docs/testing/help-screenshot-manifest.md for capture instructions.
Creating a schedule
Open the Composer and prepare your promotion
Click "Schedule" in the Publish bar
Screenshot pending
/help/scheduling/schedule_dialog_date_time.png
Schedule dialog with a date picker and time picker, workspace timezone label visible below the time input
See docs/testing/help-screenshot-manifest.md for capture instructions.
Choose one-time or recurring
Select a frequency from the Repeat dropdown:
- None — posts once at the chosen date and time.
- Daily — posts every day at the chosen time.
- Weekly — posts on the selected weekdays each week.
- Monthly — posts on the same day of the month each month.
Screenshot pending
/help/scheduling/schedule_recurrence_dropdown.png
Schedule dialog with the Repeat dropdown expanded showing None, Daily, Weekly, and Monthly options
See docs/testing/help-screenshot-manifest.md for capture instructions.
Confirm
How scheduled firing works
A background job checks for due schedules every 5 minutes. When a schedule is due, it clones the source promotion into a new promotion and immediately executes it against all selected channels. This means:
- Each fire creates a separate promotion entry in your history — easy to track per-fire results.
- The cloned promotion picks up the latest state of any Audience Template you used (e.g., channels you added since the schedule was created).
- The source content is fixed at the time you created the schedule. To change the content, edit the schedule.
Managing schedules
Open Schedules. Each schedule row shows: name, recurrence description, status, next fire time, last fire time, and total fire count.
| Action | Effect |
|---|---|
| Pause | The next scheduled fire is skipped. The schedule remains in your list and resumes when you unpause it. |
| Resume | Re-activates a paused schedule. The next fire time is recalculated from the current time. |
| Edit | Opens the schedule editor where you can change the recurrence, time, name, or content. Changes apply from the next fire onwards — past fires are not affected. |
| Delete | Permanently removes the schedule. Past fires (and their promotions) remain in your history. |
Screenshot pending
/help/scheduling/schedule_row_actions.png
A single schedule row expanded to show a per-row action menu with Pause, Edit, and Delete buttons
See docs/testing/help-screenshot-manifest.md for capture instructions.
Screenshot pending
/help/scheduling/schedule_editor.png
Schedule editor page for a single schedule showing name, recurrence, next-fire preview, and source content editor
See docs/testing/help-screenshot-manifest.md for capture instructions.
Schedule statuses
| Active | Running normally. Will fire at the next scheduled time. |
| Paused | Temporarily stopped. No fires occur until you resume. |
| Cancelled | Permanently stopped. Cannot be reactivated. |
| Completed | A one-time schedule that has already fired. |
Automatic Mode automations
Automatic Mode is a distinct type of schedule that regenerates fresh content on every fire — the seed you write is the topic, not the exact text. Create one at ComposerAutomatic or from the schedules list.
The difference vs a regular scheduled post:
- Regular scheduled post — the exact text, image, and channel selection you composed is what fires every time. Same content, repeated at your chosen cadence.
- Automatic Mode — on each fire, Claude rewrites the seed for every selected channel, and (optionally) generates a fresh image and/or video too. Great for daily/weekly content that stays on-topic but reads fresh each time.
Media on every fire: none, reuse, or auto
The Automation form has two independent media toggles — one for images, one for videos. Each has three modes:
| Mode | What happens on every fire |
|---|---|
| None | No image/video is attached. Text only. |
| Reuse | The same image/video URL you pinned when creating the automation is attached every fire. No AI generation runs, no credits are spent on media. |
| Auto | A fresh image/video is generated by AI on every fire, using your seed topic as the prompt. Credits are deducted per fire. |
When video (or image) is skipped automatically
If none of the channels selected on your automation support the media type you have set to Auto, generation is skipped entirely — no credits are spent and no post-generation asset is created. This prevents wasting money on a video that no channel could show.
Examples of when this triggers:
- Automation set to Video: Auto, with only LinkedIn + Dev.to + Medium as channels. None of those support embedded video — generation skipped.
- Automation set to Image: Auto, with only Medium + WriteFreely + Discourse as channels. None support inline images in the body — generation skipped.
You'll see this on the fired promotion's detail page as an amber "Media generation note" banner: "Video generation skipped: none of the targeted channels support embedded video. Post was sent without the video."
If you mix capable + incapable channels (e.g. Telegram + LinkedIn), video IS generated — Telegram gets it, LinkedIn ships text-only. See HelpChannels for the full per-platform capability matrix.
Channel picker warnings when your media won't appear
When you have Image or Video set to Auto or Reusein the Automation form, the channel picker adds a small amber warning icon next to any channel whose platform can't render that media type.
- Video-not-supported icon (crossed-out video camera) — appears when you have Video enabled and the channel's platform is one of: LinkedIn, Lemmy, Pixelfed, Dev.to, Hashnode, Ghost, WordPress, Medium, WriteFreely, Discourse, Mixcloud.
- Image-not-supported icon (crossed-out picture) — appears when you have Image enabled and the channel's platform is one of: Medium, WriteFreely, Discourse.
These are informational only — they do NOT block you from saving the automation. Users often legitimately fire to a mixed set (video to Telegram + text to Medium in the same schedule). The warning just makes it visible so you know what to expect.
Retry on transient generation failures
When the AI provider (Replicate for most video models) fails a generation with a temporary error — most commonly a container cold-start crash ("ConnectError") — the fire pauses 30 seconds and tries once more with the same model and prompt.
The retry is inline (not a separate scheduled fire). If the second attempt succeeds, the post ships with the media as normal. If both attempts fail, the fire completes text-only (with any image that DID succeed), and the promotion detail page shows an amber banner explaining what failed and how many attempts were tried.
Media generation notes on the promotion detail
When a fire ships with partial or missing media, the promotion detail page for that fire shows an amber "Media generation note" banner near the top of the Overview tab. Possible messages:
- Video generation failed after N attempts (model): reason. Post was sent without the video. — The AI provider returned an error after the retry too. The rest of the fire completed normally.
- Video generation skipped: none of the targeted channels support embedded video. — Capability preflight kicked in. No credits spent.
- Video generation skipped: insufficient balance. — Balance is negative or below the video floor. Fire went out text-only; top up to re-enable.
- Same three messages for images when applicable.
Editing an automation
Click Edit on any automation row on Schedules — this now routes to the full Automation form (not a modal). You can change any field: name, seed content, source type (text vs URL), image/video modes, video model, cadence (frequency + slot times), channels, CTA, budget caps.
Changes apply from the next fire onwards. Past fires stay as they were — their content and channel targets are frozen in their promotion history rows.
Cost projection card
Below the media toggles in the Automation form, a Cost projection card estimates what each fire will cost and what a whole month of firing will cost, based on your current media choices + cadence.
The per-fire estimate breaks down each cost line (text adaptation per channel + image generation + video generation, if enabled). The monthly projection multiplies by the number of fires per month implied by your frequency and slot count.
Video models: cost tiers and seed frames
The Automation form lets you pick from 20+ video models across Replicate and Runway, each with its own cost, quality, and requirement profile. Rough tiers:
- Fast tier (~$0.30-0.90 per 5s): Pika 2.0, Kling v1.6 Standard, Seedance 2.0 Fast — good for iterating and non-hero content.
- Standard tier (~$1.00-1.50 per 5s): Luma Dream Machine, Runway Gen-3α Turbo — reliable all-rounders.
- Premium tier (~$3.00+ per 5s): Runway Gen-3α, Runway Gen-4 — cinematic quality, longer render times.
Some models require a seed frame image URL — you paste an https:// image link, and the video is generated FROM that starting frame. This gives you tight control over what the video looks like on frame 1.
- Grok Imagine and Runway Gen-4 both require a seed frame — the Automation form validates and shows an error if you leave it blank.
- Runway Gen-3α supports a seed frame but doesn't require one.
- All other models generate from the text prompt alone.