Notifications
Manage email notifications and webhooks.
Via the Notifications screen, you can set up email and webhook notifications that will keep you updated about events that occur in the Customer Portal.
Email notifications
The Customer Portal can be configured to send notifications to a configured email address about events such as new referrals and new tickets.
Webhooks
The built-in webhook integration allows you to connect to any service that supports webhooks. Webhook connections ensure that ticket activity in the Customer Portal is replicated in your application in real time.
You can configure a webhook for when a ticket is opened, updated, or closed:
- Opened Ticket Notifications (
ticket_opened): sent when a new ticket is created. - Updated Ticket Notifications (
ticket_updated): sent when a ticket is updated. - Closed Ticket Notifications (
ticket_closed): sent when a ticket is closed. - New Chat Message Notifications (
new_chat_message): sent when there's a new chat message on a ticket.
Tickets, not incidentsThese webhooks fire only on ticket activity — when a support ticket is opened or worked. They do not fire on device incidents/alerts. So if you want an external record created only when a real support ticket is raised (and never for routine incidents), this is the right tool — the filtering is built in, with nothing to configure.
Configure a webhook
Each webhook has two fields:
| Field | Description |
|---|---|
| Webhook URL | The endpoint Xyte sends the HTTP POST to — your receiving system's URL. |
| Request secret | A shared secret Xyte uses to sign each request, so your endpoint can verify the call genuinely came from Xyte. |
To set one up:
- Go to Settings → Notifications → Webhooks.
- In the relevant card (for example, Opened Ticket Notifications), paste your endpoint into Webhook URL.
- Enter a Request secret, and store the same value on the receiving side.
- Click Test to send a sample payload and confirm your endpoint accepts it.
- Click Connect to activate.
- Repeat for Updated and Closed if you want to sync the ticket through its whole life.
Payload reference
Xyte sends a JSON body with each event. Example — ticket_opened:
{
"event_type": "ticket_opened",
"ticket_id": "TICKET_ID",
"organization_display_name": "ORGANIZATION_DISPLAY_NAME",
"partner_display_name": "PARTNER_DISPLAY_NAME",
"user_email": "USER_EMAIL",
"user_name": "USER_NAME",
"user_id": "USER_ID",
"status": "STATUS",
"title": "TITLE",
"description": "DESCRIPTION",
"space_name": "SPACE_NAME",
"device_id": "DEVICE_ID",
"device_name": "DEVICE_NAME",
"device_sn": "DEVICE_SN",
"device_mac": "DEVICE_MAC",
"device_cloud_id": "DEVICE_CLOUD_ID",
"device_model_name": "DEVICE_MODEL_NAME",
"device_sub_model": "DEVICE_SUB_MODEL",
"device_created_at": "DEVICE_CREATED_AT"
}| Field | Meaning |
|---|---|
event_type | ticket_opened | ticket_updated | ticket_closed | new_chat_message |
ticket_id | Xyte ticket identifier — use it to de-duplicate on later events |
title / description | Ticket subject and body |
status | Current ticket status |
user_email / user_name / user_id | Who opened the ticket |
organization_display_name / partner_display_name | Organization and partner context |
space_name | Space the device sits in |
device_* | The device the ticket is about (id, name, serial, MAC, cloud id, model, sub-model, created date) |
The ticket_updated payload uses the same shape with the matching event_type. The ticket_closed payload is minimal (event_type + ticket_id), and new_chat_message includes event_type, ticket_id, user_name, and text. Use the Test button on each card to see its exact payload.
TipStore the Xyte
ticket_idon the external record (for example, as an external ID). Thenticket_updatedandticket_closedevents can update the same record instead of creating duplicates.
Verifying requests
Xyte signs every request with the Request secret you set. On your receiving endpoint, verify the signature before acting on the payload, and reject any request whose signature doesn't match — so you only ever accept genuine Xyte calls.
Sending to an external system
Point Webhook URL at whatever will receive the event. Two common patterns:
- Direct — if your system exposes an endpoint that accepts this JSON as-is, use its URL directly.
- Via an automation / middleware — most help desks expect a different payload shape or need their own authentication, so send to a no-code tool (such as Zapier "Catch Hook" or Make) or a small function that reshapes the payload, authenticates, and creates the record.
Example — create a Zendesk ticket. Zendesk has no endpoint that accepts this payload directly, so use one of:
- Zapier (no-code, any Zendesk plan):
Opened Ticket webhook → Zapier "Catch Hook" → Zapier action "Zendesk: Create Ticket". Maptitle → Subject,description → Comment,user_email → Requester, andticket_id → External ID. - Native (no third party): a Zendesk ZIS inbound webhook plus a flow that calls the Zendesk Ticketing API. Requires Zendesk Suite Growth (or Support Professional) or higher, and developer setup.
The same approach applies to Freshdesk, Freshservice, ServiceNow, Zoho, ConnectWise, Halo PSA, and similar — only the receiving endpoint changes.
Two-way sync (optional)To reflect changes made in the external system back into Xyte, have that system call the Updated / Closed webhook endpoints when its own ticket changes.
Test
- Open a test ticket in Xyte (device → Support → Open Ticket).
- Confirm the matching record appears in your external system within a few seconds.
- Update and close the Xyte ticket, and confirm the external record follows (if you connected those webhooks).
Updated 14 days ago
