Connecting your channels — LinkedIn, Instagram, Facebook, X, Blog
Supported publishing surfaces, the OAuth flow, and what happens if a connection expires.
Connecting your channels — LinkedIn, Instagram, Facebook, X, Blog
TL;DR — We support LinkedIn, Instagram, Facebook, X, and your own blog. All connections are OAuth (no passwords), all are optional, and you can always publish manually via Copy & Publish instead of connecting.
The supported channels
| Channel | Auth | Image support | Notes |
|---|---|---|---|
| OAuth (personal + company pages) | Optional | Both personal profile and company page publishing | |
| OAuth via Meta | Required — no image, no publish | Business/Creator accounts only, per Meta's rules | |
| OAuth via Meta | Required for reach | Text-only posts get suppressed; we block scheduling without image | |
| X (Twitter) | OAuth | Optional | Thread support built in |
| Blog | RSS + webhooks, or direct API for supported CMSes | Optional | See "Blog" below |
Connecting
From Settings → Connections, click the channel you want. You'll be redirected to the provider's OAuth screen, grant the minimum scopes we need, and land back on the app. That's it.
Free plans can connect up to 2 channels. Pro plans are unlimited.
Blog publishing
Three ways to plug your blog in:
- Direct API — for Ghost, WordPress, Webflow, and a handful of headless CMSes we support natively
- Webhook — we POST the drafted article to a URL you control; you handle the publish
- Copy & paste — the least automated but the most flexible; the drafted HTML is ready to paste
What happens when a token expires
OAuth tokens expire. When one does, the affected channel goes into needs re-auth state and:
- Scheduled posts on that channel pause (they don't fail — they wait)
- You see a red dot on the header (fewer than 2 active channels triggers a Connect CTA)
- We prompt you to reconnect from Settings
Reconnecting resumes any paused scheduled posts automatically. No lost drafts.
Manual publishing (no OAuth)
You can skip OAuth entirely and still use everything else in the app. Every draft has a Copy & Publish button that:
- Copies the finalised post to your clipboard
- Opens the native composer for that channel (LinkedIn's post composer, Instagram web, etc.)
- Uses the Web Share API on mobile
Your visibility scores still update because the scan loop doesn't care how a post got published — only whether it exists.
The "why can't I publish text-only to Facebook" answer
Meta's algorithm suppresses text-only posts on Facebook and Instagram, hard. We enforce an image requirement at draft time rather than let you ship a post that will earn zero reach. If image generation fails, the app reschedules with a retry and surfaces a warning — nothing publishes silently broken.