Agorapulse
A weekend of work, and real gaps remain.
Social media management: schedule posts across networks, answer every comment and message from one inbox, and report on it.
Build me the social publishing and inbox tool I actually need instead of Agorapulse. The constraint that shapes everything: **network APIs are the whole difficulty.** They are restricted, they change, they require app review, and some of what these tools do is available only to approved partners. Build for the networks that let you in and be explicit about the rest. STACK - Node 20+ with Fastify, server-rendered HTML with a little vanilla JS - SQLite through better-sqlite3, WAL mode - A worker process for publishing and polling - Caddy in front THE DATA MODEL - accounts: id, network, handle, token_encrypted, refresh_token_encrypted, expires_at, scopes, status - posts: id, body, media_ids_json, created_by, status - targets: id, post_id, account_id, scheduled_for_utc, published_at, remote_id, status, error — **one row per network, because the same post succeeds on one and fails on another and a single status hides that** - variants: per network overrides — length, mentions, first comment, alt text - conversations and messages: id, account_id, remote_id, kind, author, body, at, assigned_to, status - metrics: id, target_id, name, value, collected_at — sampled over time, since networks revise numbers for days PUBLISHING RELIABLY - The queue is a table with a lease; a crashed worker's job is reclaimed - **Idempotency on every publish**, keyed by target id, and check the remote before retrying. Posting twice to a public account is a visible, embarrassing failure and retries are what cause it - Per-network validation before scheduling — length, media counts, aspect ratios, mention syntax — with the errors shown at composition time and not at publish time - Token refresh in the background with an alert well before expiry. **A silently expired token means a fortnight of posts that never went out**, which is the classic failure of homemade schedulers - A visible queue with failures at the top and a one-button retry THE INBOX - Poll comments and messages where the API allows, store with the remote id, and never lose one to a redelivery - Assignment, a status, and an internal note. Two people replying to the same comment is what an inbox exists to prevent - Saved replies, and a keyboard-first list. Speed is the whole feature REPORTING HONESTLY - Collect what the API gives, on a schedule, and store each collection rather than overwriting. **Networks revise engagement numbers for days after a post**, and only a series shows that - Report reach and engagement with the collection date attached - Do not invent a composite score. It hides which number moved ACCESSIBILITY AND CARE - Alt text required on every image before scheduling. It takes ten seconds and it is the difference between a post everybody can read and one many cannot - A preview per network, because a post that looks fine in the composer wraps badly on half of them WHAT MATTERS MOST Per-network target rows and idempotent publishing. The first makes failures visible; the second stops the retry doing damage.
What you lose
- Publishing access to networks that restrict their APIs
- A unified inbox pulling comments and messages from everywhere
- Reports built from metrics the networks expose to partners only
- The approvals maintained as each network changes its rules
If you would rather not build
- The networks’ own schedulers, which are free and reliable
- A queue table and a worker, which is the core in a day
The escape hatch
open source · no votes, no paid placement
Postiz
$0Open-source social scheduling with a calendar and multiple accounts.
gitroomhq/postiz-appfree · open source
Mixpost
$0Self-hosted social media management, one-time licence or free core.
inovector/mixpostfree · open source
Why this verdict
our own opinion · changed only by a person
50/100
Verdict kinda at 50: the scheduler is a weekend, the network access is a permanent maintenance job. Token expiry and double-posting are the two failures worth designing against from the start.
History
tracked since 14 Aug 2026 · nothing is ever overwritten
Nothing recorded yet. This chart fills in once the page has visitors, votes or prompt copies — it will not draw a flat line to look busy.
Questions about Agorapulse
answered from the record above
Is Agorapulse free?
No — the plan we track is $79 a month. Standard at $79 per user per month billed monthly, around $69 annually.
Can you replace Agorapulse by building your own?
ALMOST. A weekend of work, and real gaps remain. Replacement score 50 out of 100, build time a weekend. Read what you lose before you decide.
How much does Agorapulse cost?
$79 a month on Standard — $948 a year. Recorded 14 Aug 2026.
What do you lose by replacing Agorapulse?
Publishing access to networks that restrict their APIs; A unified inbox pulling comments and messages from everywhere; Reports built from metrics the networks expose to partners only; The approvals maintained as each network changes its rules. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Agorapulse?
Yes: Postiz, Mixpost. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

