Publishing and scheduling posts
Write once in the composer, attach an image for Instagram, publish to your connected channels or schedule for later, and read exactly what happened on each one.
Last updated 2026-09-14
Summary#
The composer on the Social Dashboard writes one message and sends it to every channel you tick. You can attach an image, which Instagram requires and the other channels ignore. You can publish immediately or pick a time and let it go out on its own. Each channel reports back separately, so a post that succeeds on three channels and fails on one tells you exactly which one failed and why. Publishing costs 1 credit for each channel that accepts the post.
Purpose#
Cross-posting by hand is where social work quietly loses an hour: the same sentence typed four times, four tabs, four sets of login friction, and no record afterwards of what actually went out. The composer collapses that into one text box and one button, and keeps the outcome of every channel in front of you rather than in four browser histories.
Scheduling exists for the same reason a rank alert exists. Work you can set down is work that does not need you awake at the right moment.
Requirements#
- At least one connected channel. Until you have one, the composer shows
Connect a channel on the Integrations page to start posting.See Connecting social accounts. - Text. Every post needs text, including an Instagram post, where it becomes the caption.
- For Instagram, an image: PNG, JPG, WEBP or GIF, up to 5 MB.
- A paid plan with credits available. The Free plan can connect channels but cannot publish.
- For scheduled posts, a time at least a minute in the future.
Permissions#
Any signed-in user on a paid plan can publish and schedule to the channels they personally connected. There is no team role requirement. Channels are stored per user, so you cannot publish through a teammate's connection and they cannot publish through yours.
If you have switched into a team workspace, the workspace owner's plan and credits pay for your posts. The posts still go out on your own connected channels.
Navigation Path#
Dashboard → Promote → Social Dashboard → Compose a post
The Calendar and Scheduled posts cards sit directly below the composer on the same screen. Channels are connected at Dashboard → Account & Team → Integrations.
Step-by-Step Guide#
Publish now#
- Go to
Dashboard → Promote → Social Dashboard. - In the Compose a post card, type into the box labelled
What do you want to share?. - Under the box, every connected channel appears as a chip. All chips start selected. Click a chip to deselect it. Only selected chips receive the post.
- If the post is going to Instagram, click Add image and pick a file. The composer shows
Uploading…, then a preview andAttached. Instagram requires an image; other channels ignore it.Click Remove to take it off. - Watch the character counter to the right. It shows a plain count normally. When X is one of the selected channels it shows
n / 280instead and turns to a warning style once you pass 280 characters. Threads has a 500 limit that the counter does not track. - Click Publish. The button changes to
Publishing…while it runs. - Read the result rows underneath, one per channel you selected.
The text box and the image are cleared only if every selected channel succeeded. If one failed, your text stays put so you can fix it and retry that channel.
Schedule for later#
- Write the post, attach an image if needed, and pick your channels exactly as above.
- Set a date and time in the picker next to the buttons.
- Click Schedule. The button changes to
Scheduling…. - On success you see
Scheduled forfollowed by the formatted date and time. The text box and the time picker clear. An attached image stays attached, so click Remove before writing an unrelated post. - The post appears in Scheduled posts below, and on the Calendar on the day it is due.
The time you pick is read in your own browser's time zone and stored as an exact moment, so a teammate in another country sees the same instant shown in theirs.
A post that includes Instagram but has no image is refused at this step with Instagram needs an image. Add one to the post before scheduling it., rather than failing when it is due.
Cancel a scheduled post#
- Find the post in Scheduled posts.
- Click Cancel on its row. The button changes to
Canceling…. - The row returns showing the status
Canceled.
Cancel appears on a post that is still Scheduled, and on one marked Interrupted. A post that is being sent right now cannot be cancelled, which is deliberate: a post can never be half-cancelled after it has started going out. If the cancel is refused, a notice reads That post could not be canceled. It may already have gone out.
Reading the results#
Each selected channel gets one row after you publish.
| Row shows | Meaning |
|---|---|
| View post | Published, and the platform returned a link. Opens in a new tab |
Posted | Published, but the platform returned no link. Threads behaves this way |
| An error message | Nothing went out on that channel. The message is the platform's reason, in plain language |
No response. | The server answered but said nothing about that channel |
Whole-request failures replace the rows with a single line:
| Message | Meaning |
|---|---|
Write something to post first. | The box was empty or only whitespace |
Pick at least one channel. | No chips were selected |
This tool needs a paid plan. Free includes the 10 technical SEO tools; upgrade to Pro to unlock the rest. | Publishing is not included on the Free plan. Nothing was published |
A message starting You've used all | Your monthly allowance does not cover 1 credit for every selected channel. It names the reset date |
Publishing is temporarily unavailable. Please try again shortly. | Publishing has been switched off for the moment. Nothing was published |
Usage check temporarily unavailable, please retry. | The allowance check could not run. Nothing was published |
Could not reach the server. Try again. | The request never arrived. Nothing was published |
Common per-channel messages:
| Message | What to do |
|---|---|
This post is <n> characters; X allows 280. Trim <m> and try again. | Shorten it, or deselect X and post the long version elsewhere |
This post is <n> characters (emoji count extra on Threads); Threads allows 500. Trim <m> and try again. | Shorten it. Threads counts in bytes, so emoji count extra |
Your X connection has expired. Reconnect X and try again. | Disconnect and reconnect that channel. The same wording appears for LinkedIn and Threads |
Your Facebook connection has expired. Reconnect and try again. | The Facebook and Instagram version. Disconnect and reconnect |
Not connected. Connect <platform> first. | The connection was removed between loading the page and publishing |
No Facebook Page found on this account. Posting requires a Page you manage. | The Page the connection used is no longer available. See Facebook and Instagram |
Instagram needs an image. Add one to the post and try again. | Attach an image and publish again |
TikTok needs a video — text-only posts are not supported there yet. | Expected. See TikTok and Threads |
Scheduled post statuses#
| Badge | Meaning |
|---|---|
Scheduled | Waiting. Can still be cancelled |
Sending… | Claimed by the scheduler and going out now |
Posted | At least one channel succeeded |
Failed | Every channel failed, or the post could not be sent when it was due |
Interrupted | Sending started but did not finish. The row shows Publishing was interrupted. Check your channels before reposting, because some may already have this post. and a Cancel button |
Canceled | You cancelled it |
A post is marked Posted when any one of its channels succeeded, so a three-channel post where one channel failed still reads Posted.
When something went wrong, the reason is shown under the post. Each channel that did not take it is listed by name with the platform's reason, for example X followed by Your X connection has expired. Reconnect X and try again. An error that stopped the whole post, such as an allowance refusal or an interrupted send, is shown on its own. A Posted row lists only the channels that failed.
What happens behind the scenes#
When you click Publish, Metric Vault first checks that your plan allows publishing and that your allowance covers 1 credit for every selected channel. Then all selected channels are attempted at the same time rather than one after another, and each result is collected separately. One channel failing never stops another. That is why you can get three links and one error message from a single click. Only the channels that accepted the post are charged.
Before sending to X, LinkedIn or TikTok, a connection that is within 5 minutes of expiring is renewed first, if the platform issued a renewal token when you connected.
Scheduled posts are picked up by a background job that runs roughly every 15 minutes and takes up to 25 due posts each time. Who pays is decided when you schedule, so a post queued inside a workspace is charged to that workspace when it sends. When a post is due:
- If publishing is switched off, or the allowance check cannot run, the post stays
Scheduledand is tried again on a later run. - If the plan does not allow publishing, or the allowance does not cover it, the post is marked
Failed. - Otherwise it is claimed atomically, which guarantees the same post can never go out twice even if two runs overlap, then sent and charged the same way as Publish.
A post still Sending… after 10 minutes was cut off partway. The queue shows it as Interrupted. On the next run, a post that never reached any channel goes back to Scheduled and is sent normally. A post that had started sending is marked Failed, because some channels may already have it and sending it again could post it twice.
Because the job runs on a cycle rather than at the exact second, a post scheduled for 09:00 goes out at or shortly after 09:00, not before it. Treat scheduled times as "no earlier than", which is the right assumption for a social post and the wrong one for a stock-market announcement.
Successful posts are recorded in your activity history as Posted to followed by the channel name, with the first part of the text as the description. Scheduling records Scheduled a post.
Limits#
| Limit | Value |
|---|---|
| Character limits enforced by Metric Vault | X 280 characters. Threads 500, counted in bytes |
| Image | One per post. PNG, JPG, WEBP or GIF, up to 5 MB. Sent to Instagram only |
| Scheduled post text stored | Up to 4,000 characters |
| Scheduled posts listed at once | 100, waiting ones first |
| Minimum lead time when scheduling | About one minute |
| Credit cost | 1 per channel that accepts the post. Scheduling itself is free; the post is charged when it sends |
The one-minute floor exists so that "in a minute" is not rejected because your computer's clock and the server's differ by a few seconds.
Tips#
- Deselect X for long posts rather than trimming a good post to 280 characters. LinkedIn and Facebook have no limit in Metric Vault.
- Check the channel rows before a planned publish, not after. The composer does not warn you in advance that a connection has gone stale.
- Use the Calendar view to spot clustering. Four posts on Tuesday and none for the rest of the week is easier to see on a month grid than in a list.
- Draft in a content tool first if the post matters. The composer is a send box, not a writing environment. See Content Repurposer.
Common Mistakes#
- Assuming a cleared text box means everything sent. It does mean that. The reverse is the trap: text left in the box means at least one channel failed, and it is easy to miss the red row and move on.
- Scheduling in the wrong time zone. The picker uses your computer's time zone. If you are working in a client's time zone, convert first.
- Leaving an image attached after scheduling. It stays on the next post you write until you remove it.
- Expecting a cancelled post to reappear. Cancelling is final. Write it again.
- Treating
Postedon a multi-channel scheduled post as full success. It means at least one channel worked. Read the channels listed under the post: those are the ones that failed.
Troubleshooting#
| Symptom | Likely cause | Fix |
|---|---|---|
Composer says Connect a channel on the Integrations page to start posting. | No connected channels | Connect one at Dashboard → Account & Team → Integrations |
| Publish does nothing | You are signed out | Reload and sign in again |
Pick a time at least a minute from now. | The chosen time is in the past or too close | Pick a later time |
Could not schedule. Try again. | The request failed to reach the server | Retry. Nothing was scheduled |
unauthorized | Your session ended before you pressed the button | Sign in again and retry |
Use a PNG, JPG, WEBP or GIF image. or Images can be up to 5MB. | The image was not accepted | Convert or shrink it and attach it again |
The image could not be uploaded. Try again. | The upload did not reach the server | Retry |
A scheduled post stays at Scheduled past its time | The background scheduler is not running, or publishing is switched off | Contact support and quote the post's time. Nothing is lost, and it will send when the scheduler resumes |
Post shows Failed | Every channel errored, or your plan or credits did not cover it when it was due | Read the reasons listed under the post, fix the cause, then schedule it again |
Post shows Interrupted | Sending was cut off partway | Check each channel for the post, then click Cancel |
| Nothing appears in Scheduled posts | The card hides itself when the queue is empty | Schedule a post and it reappears |
For connection-level problems, see Integration troubleshooting and An integration stopped working.
FAQs#
Does publishing cost credits? Yes. Each channel that accepts the post costs 1 credit, and a channel that fails costs nothing. It counts against your monthly allowance and needs a paid plan. See How credits work.
Can I attach an image? Yes, one per post. Instagram needs it. X, LinkedIn, Facebook and Threads ignore it and publish the text.
Can I edit a scheduled post? No. Cancel it and schedule a new one.
Can my teammates see or cancel my scheduled posts? No. Scheduled posts belong to the account that created them, and the cancel action checks ownership before it changes anything.
What happens if my connection expires between scheduling and sending? For X, LinkedIn and TikTok the connection is renewed at send time when possible. Otherwise the post is attempted, that channel returns its reconnect message, and the outcome is stored on the post. Reconnect and post again.
What happens if I schedule on the Free plan? Schedule is refused straight away with the same paid-plan message Publish shows. Nothing is queued.
Is there a limit on how many posts I can schedule? There is no cap on creating them. The list shows the most recent 100.
See also
Was this article helpful?
Thanks — feedback noted for the docs team.