Apps
Support Desk
Tickets from your website or app, an inbox where your team replies and resolves, and a signed webhook that mirrors every ticket into your own system.
What it does
Support Desk gives you a ticket endpoint and an inbox. Your support form or app creates tickets (ENG-T-…) with POST /v1/engage/support. New tickets are stored before notification delivery is confirmed. Email and configured webhook outcomes must be checked separately.
In Businesses > your website > Inbox > Support, your team reads, replies, assigns and closes tickets. Managed-form submissions appear under Leads. Chat escalations point visitors to your support interface.
Support Desk is delivered by the Engage SDK with a publishable key; the ticket endpoint also accepts server-to-server calls.
Features
| Feature | Detail |
|---|---|
| Ticket endpoint | POST /v1/engage/support from your own UI, a mobile app or a backend. |
| Inbox | Filter by channel, status and assignment; open a ticket, Reply, Close or Reopen. |
| Statuses | open → in_progress (on first reply) → resolved. |
| Email alerts | Notifications target the configured team address; support replies queue email to the requester. |
| Webhook mirror | ticket.created (and form.submitted) delivered with an HMAC signature — keep your own system in sync. |
| Safe retries | Idempotency-Key makes retries return the original ticket. |
| Categories | Free-text category (default general) for routing on your side. |
| Chat link | Pass conversationId to tie a ticket to a chat thread. |
How it works
- Your form or app posts
{ name, email, message, … }toPOST /v1/engage/supportwith the site key. - Buckhy stores the ticket and returns
201 { ticketId }; email andticket.createdwebhook processing do not establish delivery merely because storage succeeded. - The ticket appears in the website's Inbox > Support as open.
- Reply stores the response, queues an email to the requester and moves an open ticket to in_progress. Close resolves it; Reopen allows another reply.
Reply delivery can be queued, retrying, accepted, failed or cancelled. Email accepted means the mail provider accepted the request, not that the recipient read or received it.
Get started
- Open Businesses, add or select your website, and verify domain ownership. Choose Test for local development or Live for your production website.
- Open Apps > Support Desk > Configure. Set the app's fields and exact allowed origins. HTTP localhost origins belong only in Test.
- In Integrate, create or reuse the environment's Engage credential. Keep one SDK loader when another Engage app is already installed:
<script src="https://api.buckhy.com/v1/engage/sdk.js" defer
data-site-key="bk_live_…"></script>
Complete the Support interaction below, then open Test, run the checks and continue to Activate. Creating a credential or copying this snippet does not complete activation. 4. Create a ticket from your support form:
const res = await fetch("https://api.buckhy.com/v1/engage/support", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Api-Key": SITE_KEY,
"Idempotency-Key": crypto.randomUUID(), // once per intent, reused on retry
},
body: JSON.stringify({
name, email, phone, // name + valid email required
category: "booking", // defaults to "general"
subject, message, // message required
page: location.pathname,
}),
});
const { ticketId } = await res.json(); // "ENG-T-…"
- Inspect Businesses > your website > Inbox > Support and check notification delivery separately. Complete the app's Test > Run checks > Activate steps.
A copy-paste AI-agent prompt that wires this up: Install the Engage SDK.
Configure
| Setting | Effect |
|---|---|
| Support module | Turns the ticket endpoint on or off. Off returns 403 MODULE_DISABLED. |
| Notify email | Receives every new ticket and form submission. |
| Webhook | Set the endpoint and signing secret in website Settings > Delivery. Verify a signed ticket.created request and your receiver's acknowledgement. |
| Forms module | When on, managed-form submissions also appear in this inbox. |
Guides
Reply and resolve
Open the website's Inbox > Support. Filter by status or assignment, open a ticket and send a Reply. Its email delivery status appears beside the saved message. Close resolves the ticket without sending another message; Reopen allows a reply. A lost console response can be retried with the original request ID without queuing a second reply.
Create tickets from your own app
The endpoint accepts requests without an Origin header, so backends and native apps can create tickets with the same key. Send one Idempotency-Key per intent and reuse it on retry; a retry returns 200 with the original ticketId and duplicate: true.
Mirror tickets into your own system
Set a webhook URL and secret. Each ticket.created and form.submitted delivery carries the full ticket — contact, category, subject, messages, fields, page — signed with HMAC-SHA256. Upsert by data.ticketId; deliveries can repeat. Verifiers for Node, Next.js and .NET: Webhooks.
Link a ticket to a chat
When a visitor escalates from AI Chat, your custom UI can pass the chat's conversationId in the ticket body. The ticket then shows which conversation it came from, and chat.escalated already told your webhook about the conversation.
Reference
| Topic | Page |
|---|---|
POST /support — fields, limits, responses |
Engage API |
ticket.created payload, signature, retries |
Webhooks |
| Console ticket endpoints (reply, list) | Engage API → Console endpoints |
| Limits and error codes | Limits · Errors |
