The ticket desk that ships inside your product

One hub where your team — and your AI agents — work every feature request, bug and support case. Your enterprise customers follow along in a white-label portal, one MagicLink away — no second login, no “any news on this?”.

One API call to integrateYour domain, your brandingAI agents included

app.solutiondesk.io/acme/tickets/tck-204
TCK-204BugIn progress

SSO login loops back to /signin

Mara · Acme staff

Reproduced on your staging tenant — the callback URL drops the state param. Fix is on the way.

Triage Agent · AI agentInternal — never reaches your customer

Same root cause as TCK-198. BigCorp is on the enterprise plan — bumped priority to high.

Lena · BigCorp · via portal

Thanks — our rollout is blocked on this, appreciate the quick look.

Reply to BigCorp…

The problem

Your issue tracker was built for your team. Then the enterprise customers arrived.

GitHub Issues and Notion carry a SaaS team a long way — right up to the first customer with custom requirements, change requests, and a legitimate need to know where things stand. From that day on, support runs on scattered threads and goodwill.

The conversation is everywhere

Half of it lives in the support tool, the other half in email threads, and the decisions in a doc nobody links. When a customer asks what happened to their request, someone goes digging.

“Any update on this?”

Enterprise customers expect to see the status of their requests and the plan behind them — at any time. A weekly summary email is not a shared overview. It's homework.

Every update is manual

Ship a fix, close a bug, reprioritize the roadmap — and then write it up, per customer, by hand. The bigger the account, the more of your week disappears into status reporting.

The solution — one desk, two front doors

Your team gets the whole picture. Each customer gets exactly their slice.

For your team — the hub

Every feature request, bug, question and support case in one place, worked by everyone — humans and AI agents alike.

  • Statuses, priorities, labels, due dates and assignees on every ticket
  • Internal notes and internal tickets for the conversations customers shouldn't see
  • AI agents as full members — they triage, answer and take assignments
  • An immutable activity timeline on every ticket: who did what, when

For your customers — the portal

A branded window into the work, one MagicLink away from your app. It answers “any update?” before anyone has to ask.

  • Their own tickets and progress, live — plus anything an access rule shares with them
  • File a new request without leaving your product or creating an account
  • Your domain, your logo, your colors — SolutionDesk stays invisible
  • Email notifications when status changes or your team replies

How it works

The Stripe Customer Portal way — for support.

  1. 01

    Mint a MagicLink

    Your backend calls the SolutionDesk API with your tenant key and the user's id in your system. You get back a one-time portal URL. No SDK, no iframe gymnastics, no user sync.

  2. 02

    Redirect your customer

    Wire the link to the “Support” button in your app. One redirect later they're in the portal — on your domain, in your branding, already signed in. There is no login form.

  3. 03

    They see exactly their slice

    Their own tickets and progress, plus anything an access rule explicitly grants them. Internal notes never reach the portal — enforced on the server, not hidden in the UI.

your-saas/backend — the whole integration

Server-to-server

POST /api/v1/magic-links   { "endUser": { "externalId": "usr_8f2" }, "redirect": "https://support.acme.com" }
  → 201  { "url": "https://support.acme.com/portal?token=…" }

Built in

Everything a shared desk needs. Nothing your customers shouldn’t see.

Visibility, per ticket

Public for everyone. Internal for staff only. Restricted for exactly the end-users an access rule matches — by plan, region, or any attribute you send us. The default is always less exposure.

PublicInternalRestricted

White-label, down to the domain

The portal is your product's support area, not ours: your domain, your logo, your colors. Your customers never learn the name SolutionDesk — unless you want the discreet credit.

support.your-saas.com

AI agents are teammates

Not a chatbot bolted on top — agents are members with accounts and roles. They triage, answer, and take assignments, and every action they take is attributed and auditable.

user.type: "agent"

Mail from your own domain

Status changes and replies reach customers through your SMTP, from your address — so notifications look like you, land like you, and build your sender reputation, not ours.

from: support@your-saas.com

Everything on the record

Every status change, assignment and comment lands in an immutable per-ticket timeline. When an enterprise customer asks what happened, the answer is already written.

Tenant isolation by design

Every read and write is keyed to your workspace's partition. One tenant's data is never one bad query away from another's — the cross-tenant query simply doesn't exist.

And the rest

  • Labels & priorities
  • Due dates
  • File attachments
  • Ticket types — feature, bug, question, support
  • Roles & invitations
  • API keys with hashed storage
  • Light & dark theme
  • Embeddable widget — on the roadmap

FAQ

The questions your team will ask.

Do my customers need a SolutionDesk account?
No. Your backend requests a MagicLink from the SolutionDesk API and redirects the user into the portal — the same pattern as the Stripe Customer Portal. No signup, no password, nothing for them to remember.
Can customers ever see our internal notes?
No. Visibility is a property of every ticket and comment, enforced on the server. Internal tickets and internal notes never reach the portal — not styled away, simply never delivered.
Does the portal look like SolutionDesk or like our product?
Like your product. The portal runs on your custom domain with your logo and colors. The only trace of us is an optional, discreet “Powered by SolutionDesk”.
How does the integration authenticate?
With a per-tenant API key, server-to-server. Keys are stored hashed; you only ever see a display prefix after creation. Minting a MagicLink is one POST request from your backend.
What do AI agents actually do here?
Agents are first-class users with their own accounts and roles. They can triage incoming tickets, answer questions, leave internal notes and take assignments — and everything they do lands in the same audit trail as a human's work.
How is our data isolated from other tenants?
Every record is keyed to your workspace's partition, and every read and write carries that key. Cross-tenant access isn't a permission that can be misconfigured — it's a query shape that doesn't exist.

Stop forwarding status updates. Start sharing them.

Set up a workspace for your team, invite your colleagues and your agents — and hand your enterprise customers a portal instead of an email thread.