📆 Tweet Scheduler
The Tweet Scheduler is a full composer and queue for your X account: write single posts or threads, save drafts, schedule them for later or post immediately, request a teammate's approval before anything goes out, and share preview links with people outside Fren One.
Overview
From the scheduler you can:
- Compose posts and threads in a WYSIWYG editor that mirrors how they'll look on X
- Save drafts, schedule for a date and time, or post now
- Require a review approval from a teammate before a post publishes
- Track every post in a queue with status, thread, image, and review pills
- Share a public, revocable preview link for any draft or published post
Where to find it
- Open your project in the Fren One webapp.
- Select the X account.
- In the sidebar under Agent Configuration, select Messages, then the Tweet Scheduler tab.
The queue is visible to all project members, but composing, scheduling, and managing posts is limited to the project Owner and Project Admins — other members see a "Tweet Scheduler is manager-only" lock on those actions.
Enabling posting
The initial X connection is monitoring-only — Fren One never asks for write access up front. Until the account is authorized for posting, the scheduler shows a banner: "Connect your X account to enable posting" — "Authorize your X account so scheduled posts can be published on its behalf. You can compose drafts in the meantime." Select "Connect with X" to grant posting permission.
You can write and save drafts before authorizing; they just can't be published yet.
Once authorized, posting keeps working until the permissions change on X's side. If that happens, the banner switches to "Reconnect your X account" — "Posting needs updated permissions from X. Reconnect the account to resume publishing scheduled posts."
Composer
Select "New post" to open the composer. A post is a thread of one or more tweet cards — the first shows the placeholder "What's happening?", and "Add to thread" appends another card ("Add another tweet…"). Each card has an emoji picker, an "Add image" button, and a character-count ring.
| Limit | Value |
|---|---|
| Characters per tweet | 280 weighted characters. URLs always count as 23; some characters (emoji and many non-Latin scripts) count as two. |
| Images per tweet | Up to 4, max 5 MB each. The media grid mirrors X's own layouts. |
| Tweets per thread | Up to 25. |
Requesting review
The "Request review from" picker (default "No review needed") assigns a teammate as approver — the post publishes only after that member approves it. A scheduled post awaiting approval will not go out until it's approved, and the reviewer gets an inbox alert (see below).
Saving, posting, and scheduling
Three actions close out the composer:
| Action | What happens |
|---|---|
| Save draft | Stores the post in the queue as a Draft. Not available for failed posts. |
| Post now | Queues the post for immediate publishing. |
| Schedule | Opens the schedule view: Date and Time inputs seeded to the next full hour, with the note "Times are in your timezone: {tz}." Select "Confirm schedule" to queue it. |
The composer validates before accepting: "Every tweet needs text or an image.", "One or more tweets are over the character limit.", "Reconnect your X account to enable posting.", "Pick a date and time first.", and "The scheduled time must be in the future."
The queue
The "Scheduled Posts" card lists every post, filtered by the pills All, Drafts, Scheduled, Sent, and Failed. Each row shows a status pill — Draft, Scheduled, Sending, Sent, Failed, or Canceled — plus a "{count}-tweet thread" pill and image count where relevant, a review pill (Pending review, Awaiting {name}, or Approved), an excerpt, and the schedule or post time.
Row actions:
| Action | Description |
|---|---|
| Approve | Shown to the assigned reviewer on posts awaiting their approval. |
| View on X | Opens the published post on X. |
| Copy share link / Disable share link | Creates or revokes the public preview link (see below). |
| Edit | Reopens the composer for drafts and scheduled posts. |
| Cancel schedule | Unschedules a post without deleting it. |
| Retry | Re-queues a failed post. |
| Delete | Removes the post after a confirmation — "This post will be removed permanently." |
Share links
Copy share link generates a public preview page for any post — no Fren One account needed to view it, which makes it ideal for getting sign-off from clients or teammates outside the project. The link is unguessable, and Disable share link revokes it at any time.
The preview renders the full thread with a "Draft preview" or "Published" badge. Scheduled posts show "Scheduled for {time}"; published ones show "This post has been published on X." with a View on X link. Shared links unfurl with a generated preview image in Slack and other social apps.
How posting works
A scheduled executor publishes queued posts on a short cycle — "Post now" goes out on its next run, usually within a couple of minutes, and scheduled posts publish on the first run after their scheduled time.
If publishing fails, the row shows the reason: "The X account is no longer connected.", "The X account needs to be reconnected before posting.", "Publishing timed out after several attempts.", or the error X itself returned. Failures also raise project inbox alerts:
| Alert | When it fires |
|---|---|
| Scheduled X post failed | A queued post couldn't be published. |
| X account needs reconnecting | Posting permission was lost and needs re-authorization. |
| X post awaiting your review | A post was assigned to you for approval. |
If a thread fails partway through, the post is retry-only — you can't edit it or save it back to a draft. Retry resumes the thread from where it stopped rather than reposting the tweets that already went out.
Saving your changes
There is no page-level Save bar — each post is saved individually when you select Save draft, Post now, or Confirm schedule in the composer. Deleting a post asks for confirmation first.
Best practices
- Authorize posting right after connecting the account so scheduled posts never stall on permissions.
- Use "Request review from" for announcement threads — a second pair of eyes before publishing costs nothing.
- Share links beat screenshots for external sign-off: reviewers see the thread exactly as it will render, and you can revoke access afterwards.
- Keep an eye on the Failed filter after changing anything about the X account's access.
Troubleshooting
"Post now" didn't publish instantly?
- Posts go out on the executor's next run — usually within a couple of minutes, not the same second.
A scheduled post never went out?
- Check for a "Reconnect your X account" banner — posting stops when X-side permissions change.
- If the post has a reviewer assigned, it publishes only after approval — look for a Pending review or Awaiting
{name}pill. - Check the Failed filter for the row's failure reason.
I can see the queue but can't compose?
- Composing and managing posts is limited to the project Owner and Project Admins. Ask an Owner for the Project Admin role if you need to post.
A share link stopped working?
- Someone selected Disable share link — copy a new one from the row actions.
Related features
- ✨ AI drafting - The AI Workspace can draft posts straight into this queue for you to review
- 🎙️ Brand Voice - Shape the tone and guardrails AI-generated drafts follow
- 🔗 Connecting an account - How the initial monitoring-only connection works
- 🔌 Integrations - Route scheduler alerts to Slack