Know what to build next.Skip the busywork and the per-user bill.
Swingback is a user feedback tool: your users' requests land in one list they vote on. Pick what to build, and it opens the GitHub or Linear issue, follows it, and tells every voter when it ships.
- Free plan with no time limit
- No card needed
- Pro at $20 a month, flat
- Unlimited users and votes
Why Swingback
Built to save you time. Priced to save you money.
Save time
Stop copying, retyping and emailing
Copying requests out of emails and chatsUsers post and vote from a widget inside your appReading every new post for duplicatesThe AI spots duplicates and tags each new postTranslating requests written in other languagesPosts in any language, read in yoursRetyping requests as issuesA post becomes a GitHub or Linear issue, with nothing to retypeUpdating the board when it shipsClose the issue, and the post is marked completedEmailing everyone who askedEveryone who voted hears, without anyone writing to them
What's left for you: deciding what to build.
Save money
Pay a fraction of what others charge
Unlimited users and 20 teammates, for one flat price.
- FeaturebaseProfessional, 3 seats$177
- Frill$136
- FeatureOS$100
- CannyPro, 100 tracked users$79
- Nolt$69
- UserJot$49
- Upvoty$44.10
- Sleekplan$38
SwingbackPro, unlimited users$18
What you save: $240 to $1,908 a year.
A month, billed yearly, from each tool's pricing page in October 2026.
How it works
From a feature request to its release
Hear it
Requests come to you, in one place
No more digging through old threads to remember who wanted what. Your users post and vote where they already are, and every request keeps the name of who asked.
- A widget inside your app, with your users already signed in
- A portal with voting, at your subdomain or on your own domain
- A Slack command and message shortcut that turn a conversation into a post
- Similar posts shown while people type, so votes pile up instead of duplicates
Rank it
The top of the list is what to build next
A hundred votes from free users and ten from your biggest accounts don't weigh the same. See both, and pick with a reason you can show your team.
- Any board sorted by votes, by trend, or by the value of the companies behind each post
- Customers and their companies synced from your app, with what each company is worth to you, such as its revenue
- Duplicates merged in a click, votes and comments included, so the count is real
- Internal notes next to each post, which never reach the portal
Build it
A request becomes an issue, and the two stay in step
Your tracker stays the place where the work happens. Send a post to GitHub or Linear, keep building there, and the post keeps up by itself.
- Create the issue from the post, or link one that exists: nothing to retype
- One request, several issues: the web app, the mobile app and the backend, each in its own repository or team
- Status travels both ways: close the issues and the post is completed, move the post and its issues follow
- Your engineers' comments arrive as internal notes, and reach the public portal only if you publish them
The GitHub App asks for your issues, never your code, and no customer's name or email goes into an issue.
Ship it
Ship it, and everyone who asked hears
Customers who hear back keep giving feedback. You change a status, and the rest happens without you.
- A public roadmap that moves as your statuses do
- Emails to voters and followers, gathered so nobody gets spammed, with one-click unsubscribe
- A changelog you can schedule, with an RSS feed
- Announcements in Slack and Discord
AI triage
An assistant for the busywork, never the decisions
Auto-tagging
New posts get tags from your own list.
Duplicate suggestions
Posts that ask for the same thing, found by meaning.
Moderation
Spam and abuse wait for your review instead of going live.
Translation
Posts and comments in each reader's language, beside the original.
Changelog drafts
A first draft of release notes from the posts you shipped.
Issue drafts
An issue's title and text from the post, and the repository or team it fits.
- Off until an admin turns each feature on; a draft only when someone asks
- Suggests, drafts and translates; never merges, publishes, deletes, emails or creates an issue
- Runs on TypeSafe AI's Jev and Anthropic's Claude, only for the features you enable
- 50 posts and comments a month on Free, 2,000 on Pro: no usage bill
For developers
Your feedback, where your code is
curl https://api.swingback.dev/v1/workspaces/$WORKSPACE_ID/end-users \
-H "Authorization: Bearer $SWINGBACK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"external_id": "user_8412",
"email": "dana@example.com",
"name": "Dana",
"companies": [
{ "external_id": "globex", "name": "Globex", "value": 240000 }
]
}'claude mcp add --transport http swingback https://api.swingback.dev/v1/mcp \
--header "Authorization: Bearer $SWINGBACK_API_KEY"import { createHmac } from "node:crypto";
const part = (value) => Buffer.from(JSON.stringify(value)).toString("base64url");
// An identity token for the user signed in to your app: HS256, at most an hour.
export function widgetToken(user) {
const now = Math.floor(Date.now() / 1000);
const header = part({ alg: "HS256", typ: "JWT", kid: process.env.SWINGBACK_IDENTITY_SECRET_ID });
const claims = part({
iss: process.env.SWINGBACK_WORKSPACE_ID,
aud: "swingback",
sub: user.id,
iat: now,
exp: now + 600,
email: user.email,
name: user.name,
});
const signature = createHmac("sha256", process.env.SWINGBACK_IDENTITY_SECRET)
.update(`${header}.${claims}`)
.digest("base64url");
return `${header}.${claims}.${signature}`;
}A REST API with a contract
OpenAPI 3.1, cursor pagination and idempotency keys.
Webhooks you can trust
Signed with the Standard Webhooks scheme, retried for about three days, replayable for 30.
An MCP server
16 tools for Claude and other agents. Ask which planned posts your most valuable customers want, from your terminal.
Your users, signed in
Your server signs a short token; the widget and the portal take it. No second account.
Webhooks and signed-in users come with every plan; API keys and the MCP server with Pro.
Pricing
Pay for your team, not for your customers
Free
Everything a small team needs to collect feedback and close the loop.
$0forever
No credit card needed
Start for freeUpgrade or downgrade whenever you like.
- Unlimited customers, posts and votes
- 3 team members and 3 boards
- Public portal, roadmap and changelog
- In-app widget with signed-in users
- AI on 50 posts and comments a month, and 5 drafts
- One integration (Slack, Discord, GitHub or Linear), and webhooks
Pro
For growing teams that want their brand, their domain and the API.
$18/ month
$216 billed yearly
Get ProCreate your workspace, then upgrade under Settings → Billing.
- Everything in Free
- 20 team members and unlimited boards
- Your own domain, without our branding
- Private boards for internal ideas
- REST API, API keys and the MCP server
- AI on 2,000 posts and comments a month, and 100 drafts
- 10 integrations: Slack, Discord, GitHub and Linear
Prices in US dollars. Any tax that applies is shown at checkout. Cancel whenever you like: see refunds and cancellations.
Switching?
Coming from another feedback tool?
What is Swingback?
How is this different from a shared spreadsheet or a Slack channel?
Does it work with GitHub and Linear?
Can my users give feedback without leaving my app?
Does the AI act on its own?
Can I use my own domain?
Can I move from another feedback tool?

Build what your users are waiting for
Set up your portal in minutes, and let the list tell you what comes next. The Free plan has no time limit, and no card is needed.