Skip to main content

📆 Messages

Messages is the composer and queue for your X account (formerly the Tweet Scheduler): 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.

Where to find it​

  1. Open your workspace in the Fren One webapp.
  2. In the sidebar under Channels, select the X account. Its pages open beneath it.
  3. Select Messages. It opens straight on the Scheduled Posts queue; there are no tabs on this page.

Messages needs the Owner or Admin level, or the + X grant. Everyone else sees it locked in the sidebar: "Requires the X grant. Ask a workspace owner or admin." Brand Voice is no longer here: it's a section of Agent Settings. See Brand Voice.

Posting permission​

Connecting the account authorizes Fren One to publish the posts you schedule, and nothing else, so there's no separate step to enable posting. Posting keeps working until the permissions change on X's side. If that happens, the page shows "Reconnect your X account": "Posting needs updated permissions from X. Reconnect the account to resume publishing scheduled posts." Select Reconnect with X to restore it.

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 media button ("Attach images, a GIF, or a video to this tweet."), and a character-count ring.

LimitValue
Characters per tweet280 weighted characters. URLs always count as 23; some characters (emoji and many non-Latin scripts) count as two.
Media per tweetUp to 4 images, or one GIF, or one video, never mixed. The media grid mirrors X's own layouts.
Media filesImages (JPG, PNG, WebP) up to 5 MB; GIFs up to 15 MB; videos (MP4, MOV) up to 512 MB and 10 minutes.
Tweets per threadUp 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:

ActionWhat happens
Save draftStores the post in the queue as a Draft. Not available for failed posts.
Post nowQueues the post for immediate publishing.
ScheduleOpens 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:

ActionDescription
ApproveShown to the assigned reviewer on posts awaiting their approval.
View on XOpens the published post on X.
Copy share link / Disable share linkCreates or revokes the public preview link (see below).
EditReopens the composer for drafts and scheduled posts.
Cancel scheduleUnschedules a post without deleting it.
RetryRe-queues a failed post.
DeleteRemoves the post after a confirmation: "This post will be removed permanently."

Copy share link generates a public preview page for any post, viewable without a Fren One account, for sign-off from people outside the workspace. 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 workspace inbox alerts:

AlertWhen it fires
Scheduled X post failedA queued post couldn't be published.
X account needs reconnectingPosting permission was lost and needs re-authorization.
X post awaiting your reviewA post was assigned to you for approval.
Failed mid-thread

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.

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.

Messages is locked for you?

  • Messages needs the Owner or Admin level, or the + X grant. Ask the Owner or an Admin to add the grant to your access.

A share link stopped working?

  • Someone selected Disable share link: copy a new one from the row actions.