Nine ways in.
One way through.
Requests arrive from your website, your published forms, your contact forms, the dashboard, reviews, appeals and your own software. Xuda Tickets files every one of them against a real contact, numbers it, routes it through your topics and actions, and keeps the whole history on the ticket.
The March invoice charged twice on the same card.
Action fired: Billing triage. Assigned to Ops, due Monday 09:00.
Duplicate charge confirmed against the payment log.
Refund is on its way, it clears in three to five days.
Refund issued on the March invoice.
Entry points funnelled into one desk
Requests that arrive without a contact record
Customer and agent emails written for you
To start: 100 tickets a month, no card
Requests do not arrive in one place. They should land in one.
A contact form here, a shared mailbox there, a form builder someone set up last year, and a spreadsheet of who is chasing what. Xuda Tickets takes every one of those routes and files it as the same thing: a numbered ticket, attached to a real contact record, with a topic, an owner, a deadline and a complete history. Nothing to reconcile at the end of the week.
Four things to set up. Then it runs itself.
You are not configuring a workflow engine. You name your topics, describe what should happen for each one, publish a form if you want one, and start answering.
- 01
Turn the desk on
Open Tickets from the account menu and pick a tier. Free is the default and costs nothing. The queue replaces the landing page the moment you choose.
- 02
Name your topics
Two levels, topic and sub topic, and that is the whole tree. Point each one at the action that should run when a request lands under it.
- 03
Describe the action
One short form: a process name, who it hands off to, a deadline measured in your business hours, the message the customer gets, and how far the AI agent may go.
- 04
Publish a form and answer
Design the public request page, copy its link and send it out. Submissions arrive already filed under a topic, with the requester saved as a contact.
The parts of support nobody wants to build twice.
Numbering, contact matching, routing, deadlines, audit history, public forms and an API. All of it is one implementation, so it behaves the same no matter which door a request came through.
One queue, nine doors
Dashboard support, your published forms, profile contact forms, the website contact-sales form, marketplace review, identity review, identity appeals, ambassador appeals and your own API calls all land on the same desk in the same shape.
Every requester is a contact
Before the ticket is written the person is created or matched in your own contact book, deduplicated on their email, and the ticket carries their contact id and the date your relationship started.
The ticket is its own audit log
Creation, replies, internal notes, status changes, action runs and every system event write a row on the timeline, each with who did it and when. Nothing about a ticket happens off the record.
Topics, exactly two levels
A topic with no sub topics fires its own action. A topic with sub topics fires the sub topic's action and falls back to the topic's when the sub topic has none. That is the entire routing model.
Actions, not flowcharts
An action is five fields on one form. Firing is idempotent per action and trigger, so correcting a mis-filed topic twice does not notify anyone twice.
Deadlines that respect your week
Set your business hours and deadlines are counted in working hours only. A four hour deadline taken on a Friday afternoon lands Monday morning, not Friday night.
Public forms you design
Your heading, your intro, your button text, your success message and your accent color. Choose which of Phone, Company, Subject and Reference appear, and which of them are required.
An AI agent on a short leash
Attach an agent per action at one of three levels: draft an answer for a person to approve, reply to the customer, or reply and mark the ticket resolved. It can never close a ticket. Only a person does that.
API and signed webhooks
Six methods on the account API key you already have, plus outbound events for created, replied, status changed and closed, signed HMAC-SHA256 with your own secret over HTTPS.
Everything waiting on you, in one list.
Search, status, source and topic sit in the filter row. Open More and you also get sub topic, stage, action, reference id, a created-from and created-to range, sort field and direction, plus a toggle for overdue only. Each row pairs two fields per cell, so the ticket number carries its date and the requester carries their email.
- Filter down, then select rows and close them or set a topic in bulk.
- Flip the desk selector to Submitted by me to follow tickets you raised elsewhere.
- A bulk run that half fails tells you how many and why, and keeps your selection so you can retry.
| Ticket | Requester | Topic | Source | Stage |
|---|---|---|---|---|
TK-000482 Aug 11 | Dana Levi | Billing Refund request | tickets_form | Waiting customer Due Mon 09:00 |
TK-000481 Aug 11 | Marco Reyes | Technical Login issue | api | In progress Due today 16:00 |
TK-000479 Aug 10 | Ilse Braun | Sales Pricing question | website | New Due Tue 12:00 |
TK-000476 Aug 8 | Priya Nair | Technical Data import | profile_contact_form | Resolved No deadline |
A request page you can send anyone.
Design the form in the Forms tab, copy the public link, and put it wherever your customers are. The page is hosted for you, it carries your heading, your intro and your accent color, and a visitor with no account can open a ticket on your desk in one submit.
- Name, Email and your own "How can we help?" prompt are always on the page. Phone, Company, Subject and Reference are yours to show, and yours to require.
- Scope a form to the topics it may file into, or leave the "Not sure" option on so a visitor never has to guess.
- Visitors see your success message and their ticket number. They never see an account id or a ticket id.
- No captcha to solve. A hidden honeypot, a one-time signed token, a two second minimum fill time and two rate limit buckets keep the bots out.
How can we help?
Tell us what happened and we will come back to you by email.
The March invoice charged twice on the same card. Order reference 4471.
Say what a request is. The desk knows what to do with it.
Topics are two levels deep, no more. Each topic, or each sub topic, points at one action, and that action is a short form rather than a flowchart. Retriage a ticket to a different topic and the new action fires once, not twice.
Thanks for writing in. Billing has your request and will come back to you before the deadline below.
Assign and notify
The ticket is handed to the profile you named, and that person is told by email and in the dashboard.
Set the due date
The deadline is counted forward through working hours only, so it never lands outside them.
Message the customer
Your templated message goes out when the ticket is linked to an account, so nobody wonders whether it arrived.
Hand off to AI
If the action has an agent, it runs at the autonomy you allowed and stops there, even if the plan once allowed more.
Record the run
The action, its state and its timestamp are written onto the ticket timeline like everything else.
Six methods and four events. Nothing else to learn.
Submit, get, list, reply, close and read your topics, all on the account API key you already have. The key is bound to its own desk, so a key can never address anyone else's tickets. Reads work on the free tier, writes need a paid one, and each tier carries its own calls-per-minute ceiling.
- Responses are the narrow external view: no owner ids, no contact ids, no internal automation state.
- Outbound events for created, replied, status changed and closed, over HTTPS only.
- Each delivery is signed HMAC-SHA256 with your own secret and abandoned after five seconds, so a slow endpoint never holds up a ticket.
{
"code": 0,
"data": {
"ticket_no": "TK-000482",
"status": "open",
"stage": "new",
"topic": "Billing",
"sub_topic": "Refund request",
"reference_id": "ORD-4471",
"priority": 2,
"due_ts": 1754899200000
}
}X-Xuda-Event: ticket.replied
X-Xuda-Signature: sha256=9f2c…Start free. Grow the desk, not the tooling.
Every tier is the same product. What moves is how many tickets you can take in a month, how many people work them, how much of the API you can write to, and how far the AI agent is allowed to go.
Free
DefaultRun a small desk without paying for one.
- No card, and Free is the tier every new desk starts on.
- Read your desk over the account API key you already have.
- Agent seats
- 1
- Public forms
- 1
- Topics
- 5
- Actions
- 3
- API access
- Read only
- API calls a minute
- 10 / min
- Webhooks
- AI agent
- History kept
- 90 days
- Past the allowance
- Stops for the month
Starter
A real desk: write to it from your own software.
- Full API access, so your software can submit, reply and close.
- Signed webhooks for created, replied, status changed and closed.
- Auto-close rules per topic, and the AI agent may draft an answer.
- Agent seats
- 3
- Public forms
- 3
- Topics
- 25
- Actions
- 15
- API access
- Full
- API calls a minute
- 60 / min
- Webhooks
- AI agent
- Draft
- History kept
- 365 days
- Past the allowance
- Metered
Grow
Unlimited topicsA desk with a team behind it and nothing left to ration.
- Topics and actions stop being counted. Build the whole routing tree.
- The AI agent may reply to the customer, not only draft for you.
- Ten agent seats and twenty published request forms.
- Agent seats
- 10
- Public forms
- 20
- Topics
- Unlimited
- Actions
- Unlimited
- API access
- Full
- API calls a minute
- 300 / min
- Webhooks
- AI agent
- Reply
- History kept
- 1,095 days
- Past the allowance
- Metered
Scale
A desk at volume, with the longest memory.
- Unlimited agent seats and unlimited published forms.
- The AI agent may reply and mark a ticket resolved. Only a person closes it.
- Nothing ages out of the queue.
- Agent seats
- Unlimited
- Public forms
- Unlimited
- Topics
- Unlimited
- Actions
- Unlimited
- API access
- Full
- API calls a minute
- 1,200 / min
- Webhooks
- AI agent
- Resolve
- History kept
- Unlimited
- Past the allowance
- Metered
Free is the default and needs no card: it stops at the ceiling rather than billing you by surprise, while paid tiers keep accepting and meter the extra. A paid tier attaches as one line item on the single Xuda subscription your account already has, and a downgrade that would strand more forms, topics, actions or seats than the lower tier holds is refused up front with the number you need to remove. Being straight with you: the paid tiers are not switched on for sale yet, so today you can run the desk on Free and we will tell you the moment the paid rungs open. Two flags the paid plans carry are not delivered yet either: SLA breach tracking never fires on your own desk, and every form link is still on a Xuda domain rather than one of yours.
What a shared mailbox never gives you.
Most teams answer requests from a mailbox everyone can see, a form builder that emails the results, or a standalone helpdesk bolted on beside the CRM. Here is what changes when the desk is part of the platform your contacts already live in.
Xuda Tickets You | A shared mailbox | Form builder plus email | Standalone helpdesk | |
|---|---|---|---|---|
| Every request gets a number people can quote | ||||
| Requester saved as a contact automatically | Extra sync | |||
| Whole thread mirrored into your CRM | Extra sync | |||
| Timeline of every change, human and system | ||||
| Two-level topics that route the work | Labels only | |||
| Deadlines counted in your business hours | ||||
| Hosted request page you design | ||||
| Bot defence with nothing for the visitor to solve | Captcha | Captcha | ||
| Internal notes hidden from the customer | ||||
| Signed outbound webhooks | Varies | |||
| Runs on the API key your account already has | Separate key | |||
| Sits beside the rest of your account |
The things worth checking before you switch.
Turn on the desk. Send the link. Start answering.
Name your topics, describe what should happen for each one, publish a form and put its link where your customers are. Every request that arrives gets a number, a contact record, a topic, an owner and a history you can read end to end.