This is the practical guide to getting X (formerly Twitter) connected to PostOnce and keeping it connected. If you just want to know how to schedule once you're set up, see how to schedule X (Twitter) posts. This page is about the connection itself — the permissions, the X-specific gotchas, and the errors people actually hit.
What you need before you connect
X is refreshingly simple to connect compared with most platforms. Posting works on a standard X account — there's no special account type to switch to. You just need:
- A standard X account you can log in to.
- Admin access to that account if it's shared or managed on behalf of someone else — you authorise the connection once and select the account during setup.
One thing worth knowing up front: free X API access comes with rate and volume caps on posting. For normal scheduling this is a non-issue, but very heavy-volume schedulers can bump into X's own write limits. That's a constraint on X's side, not a PostOnce limitation — more on it below.
X also rejects exact-duplicate posts. If you queue the identical text twice, X will reject the repeat. This is X's spam protection, and it's a real gotcha for schedulers — vary the wording on repeated posts.
What permissions PostOnce asks for (and why)
X uses OAuth 2.0. When you connect, X shows you a permissions screen. PostOnce requests only what it needs to publish and show your account in your dashboard:
tweet.write— publish the posts you schedule, at the time you schedule them.tweet.read— confirm a post went live and read basic information about your posts.users.read— read your account name, handle, and avatar so the right account shows up in your dashboard.offline.access— keep the connection alive without making you log in again constantly. This grants a refresh token, so PostOnce can keep publishing at scheduled times even days later.
That's it. PostOnce does not request access to your direct messages, your followers' data, or anything beyond what's needed to publish and confirm your scheduled posts.
How to connect X, step by step
- Log in to PostOnce and open your dashboard.
- Click Connect Account and choose X (Twitter).
- You'll be redirected to X to sign in. Use the account you want to publish from.
- On the permissions screen, leave all requested permissions enabled — if you toggle any off, publishing will fail later.
- Select the X account you want to connect.
- Click Authorise. You'll land back in PostOnce with X connected and ready to schedule.
Common X connection errors and how to fix them
These are the issues people hit most often, with the actual fix rather than a generic "try again".
"Duplicate content" or a post is rejected
X blocks exact-duplicate posts as spam protection — posting identical text repeatedly will fail. This is the most common scheduling surprise. The fix is simple: vary the text. Even a small change to the wording, a different opening line, or a fresh link is enough for X to treat it as a new post.
Posts fail intermittently under heavy volume
If you're scheduling a large number of posts and some fail while others succeed, you're likely hitting X's write caps on free API access. This is X's own rate limit, not PostOnce. Space your scheduling out rather than firing many posts in a short window, and the failures will clear.
"Session expired" or X suddenly stops publishing
PostOnce refreshes your token automatically via offline.access, but X will end the connection if you revoke the app's access in your X settings, or if X expires the grant. When that happens, PostOnce flags the account as needing reconnection. Go to Settings → Integrations, click Reconnect on X, and re-authorise. Nothing in your schedule is lost — queued posts resume publishing.
The wrong account is connected
If you manage several X accounts, it's easy to authorise the wrong one. Disconnect, reconnect, and watch the account-selection step carefully — sign in as, and pick, the specific account you want to publish from.
"Insufficient permissions" or scope errors
This means a permission was unticked on X's consent screen. PostOnce needs every requested permission to publish reliably. Disconnect X in your PostOnce settings, reconnect, and accept all permissions when prompted.
Keeping X connected
Thanks to offline.access, the X connection refreshes itself and stays live in the background — you shouldn't need to touch it day to day. To avoid surprise gaps:
- Reconnect promptly whenever PostOnce flags X as disconnected.
- Don't remove PostOnce from your X app settings ("Connected apps") unless you intend to disconnect — doing so revokes the grant and forces a reconnect.
- If you're posting at high volume, space your schedule out so you stay within X's free write limits.
Once connected, you're ready to schedule X (Twitter) posts — and to publish the same content to LinkedIn, Bluesky, and the rest from a single composer.
Frequently Asked Questions
Do I need a special account type to connect X to PostOnce?
No. Posting works on a standard X account — there's no Business or Creator account to switch to. You authorise the connection once, select the account you want to publish from, and you're ready to schedule. If you manage the account on someone's behalf, make sure you can log in to it during the connection step.
What permissions does PostOnce request for X?
PostOnce uses OAuth 2.0 and requests four scopes: tweet.write (to publish your scheduled posts), tweet.read (to confirm posts went live and read basic post info), users.read (to read your name, handle, and avatar for your dashboard), and offline.access (a refresh token that keeps the connection alive so PostOnce can publish at scheduled times days later). It does not request access to your direct messages or followers' personal data.
Why did my X post get rejected as duplicate content?
X blocks exact-duplicate posts as spam protection, so posting the identical text twice will fail on the repeat. This is X's rule, not PostOnce. To fix it, vary the wording — even a small change to the opening line, a different phrasing, or a fresh link is enough for X to accept it as a new post.
Why do some of my X posts fail when I schedule a lot at once?
Free X API access has rate and volume caps on posting, so heavy-volume scheduling can hit X's own write limits and cause intermittent failures. This is a constraint on X's side rather than a PostOnce limitation. Space your posts out across the day rather than firing many in a short window and the failures will clear.
Why did my X account disconnect from PostOnce?
PostOnce refreshes your X token automatically using the offline.access scope, so it normally stays connected on its own. It will disconnect, though, if you revoke the app's access in your X settings or if X expires the grant. When that happens, go to Settings → Integrations and click Reconnect — your scheduled posts are kept and resume publishing once reconnected.