Contacts, agents and sessions are your better-auth users.
Support
A help desk that lives inside your app.
Tickets, contacts and agent replies in your own database. Contacts are your better-auth users, or an email address for people who don't have an account yet. Agents are whoever your permissions say they are.
npm i @byo-oss/supportIllustration. Click a ticket to see its thread.
Relies on
peerDependencies · @byo-oss/support 0.3.2The after-commit hooks behind events. Install it at the same version as better-auth.
Validation uses your app's copy. An app still on zod 3 has to move to zod 4 first.
The schema references it, and your staff are an organization's members.
Agent and requester alerts land in the same inbox as everything else.
wrapsMailer sends replies through your own AWS SES account.
s3Storage for attachments, and wrapsInbound for inbound mail.
The ./react hooks and components.
Only for ./testing, the suite for adapters you write.
The whole domain, at a young product's depth.
Built to the BYO conventions from day one: your identity, your permissions, your database.
Tickets and threads
Requests, replies and status, scoped to your organizations.
Contacts are your users
No separate customer table. People without an account are an email address, linked to their user once they verify it.
Agents by permission
Support exports permission statements for your access-control catalog. Your app decides which roles can reply.
Email in, email out
Customers write in by email and agents reply from your app. Sending goes through a provider adapter, with Wraps as the default.
Pluggable at the edges
Storage, inbound mail and outbound mail sit behind small adapter interfaces. Your tickets always stay in your database.
Headless first
Hooks own the state and the calls. Components on shadcn variables sit on top, every string overridable.
Better with the others.
Packages share one identity, one permission model and one notification path, so each one you add makes the others more useful.
- @byo-oss/supportagent + requester alertsnotificationsshipped
- @byo-oss/supportoutbound repliesshared mailershipped
- @byo-oss/supportticket eventsonEvent · after commitshipped
- @byo-oss/supportusers · orgs · permissionsbetter-authyour app
A way out, planned from the start.
When your support team outgrows a help desk inside the product, you move to a dedicated tool. Support ships with exportSupportData, a documented schema, a field mapping to Zendesk's ticket import and a clean uninstall. The README names each tool's import API.
Shape what comes next.
Issues and pull requests are on GitHub. Tell us how you run support today, and what would make the package fit.