Slack Integration
Welcome to the Support Genix documentation for the Slack integration! This guide provides comprehensive instructions…
Read moreSend real-time ticket and user events to external systems via HTTP POST. This guide covers all available events, their payload formats, and configuration details. This is a Pro feature.
Outgoing webhooks automatically send data to an external URL whenever specific events occur in Support Genix. Use them to integrate with CRMs, project management tools, Slack (custom), Zapier, Make (Integromat), or any system that accepts HTTP POST requests.
Go to Support Genix > Settings > Webhooks > Outgoing.
| Field | Description |
|---|---|
| Title | A name for this webhook (e.g., “CRM Sync”, “Zapier Trigger”) |
| Remote URL | The HTTPS endpoint that will receive the POST requests |
| Events | Select which events trigger this webhook (see below) |
| Status | Active or Inactive |
You can create multiple webhooks with different URLs and different event selections.
| Event | Code | Fires When |
|---|---|---|
| Ticket Created | on_tckt_create | A new ticket is created (from portal, email, chatbot, or webhook) |
| Ticket Replied | on_tckt_replied | An agent or customer adds a reply to a ticket |
| Ticket Closed | on_tckt_closed | A ticket’s status changes to Closed |
| Client Created | on_client_create | A new customer account is created |
Select one or more events per webhook. A single webhook can listen to all 4 events.
All payloads are sent as HTTP POST with form-encoded body. The event field identifies which event triggered the webhook.
Sent when a new ticket is created.
{
"event": "ticket.created",
"id": 123,
"ticket_track_id": "TKT-00042",
"category_id": 5,
"category_title": "Billing",
"ticket_user_id": 45,
"ticket_user_email": "[email protected]",
"ticket_user_title": "John Doe",
"title": "Cannot access my account",
"ticket_body": "<p>I am unable to log in since this morning...</p>",
"opened_time": "2026-02-17T10:30:00+00:00",
"status": "Open",
"ticket_link": "https://yoursite.com/wp-admin/admin.php?page=support-genix#/tickets/123",
"assigned_on": "Jane Agent",
"assigned_date": "2026-02-17T10:31:00+00:00",
"related_url": "",
"custom_fields": {
"order_number_8": "ORD-12345",
"product_name_12": "Widget Pro"
}
}| Field | Type | Description |
|---|---|---|
event | string | Always "ticket.created" |
id | integer | Internal ticket ID |
ticket_track_id | string | Public ticket reference number |
category_id | integer | Category ID |
category_title | string | Category name |
ticket_user_id | integer | Customer’s user ID |
ticket_user_email | string | Customer’s email |
ticket_user_title | string | Customer’s display name |
title | string | Ticket subject |
ticket_body | string | Ticket description (HTML) |
opened_time | string | Creation timestamp (ISO 8601) |
status | string | Ticket status text |
ticket_link | string | Direct admin URL to the ticket |
assigned_on | string | Assigned agent’s name |
assigned_date | string | Assignment timestamp |
related_url | string | Related external URL (if any) |
custom_fields | object | Custom field values (see below) |
Sent when a reply is added to a ticket.
{
"event": "ticket.replied",
"id": 123,
"ticket_track_id": "TKT-00042",
"ticket_user_id": 45,
"ticket_user_email": "[email protected]",
"ticket_user_title": "John Doe",
"title": "Cannot access my account",
"status": "Active",
"ticket_link": "https://yoursite.com/wp-admin/admin.php?page=support-genix#/tickets/123",
"ticket_replied_user_id": 12,
"ticket_replied_user": "Jane Agent",
"replied_text": "<p>Hi John, I've reset your password. Please try logging in again.</p>"
}| Field | Type | Description |
|---|---|---|
event | string | Always "ticket.replied" |
ticket_replied_user_id | integer | User ID of the person who replied |
ticket_replied_user | string | Name of the person who replied |
replied_text | string | Reply content (HTML) |
| (other fields) | Same as Ticket Created |
Sent when a ticket is closed.
{
"event": "ticket.closed",
"id": 123,
"ticket_track_id": "TKT-00042",
"category_id": 5,
"category_title": "Billing",
"ticket_user_id": 45,
"ticket_user_email": "[email protected]",
"ticket_user_title": "John Doe",
"title": "Cannot access my account",
"opened_time": "2026-02-17T10:30:00+00:00",
"closed_time": "2026-02-17T14:45:00+00:00",
"status": "Closed",
"ticket_link": "https://yoursite.com/wp-admin/admin.php?page=support-genix#/tickets/123",
"custom_fields": {
"order_number_8": "ORD-12345"
}
}| Field | Type | Description |
|---|---|---|
event | string | Always "ticket.closed" |
closed_time | string | Closure timestamp (ISO 8601) |
| (other fields) | Same as Ticket Created |
Sent when a new customer account is created.
{
"event": "user.created",
"id": 45,
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"custom_fields": {
"company_name_3": "Acme Inc",
"phone_number_7": "+1-555-0100"
}
}| Field | Type | Description |
|---|---|---|
event | string | Always "user.created" |
id | integer | WordPress user ID |
first_name | string | Customer’s first name |
last_name | string | Customer’s last name |
email | string | Customer’s email address |
custom_fields | object | Custom user field values |
Custom fields are included as a flat object with normalized keys:
{field_label}_{field_id} (lowercase, spaces replaced with underscores)order_number_8Only fields that have values are included. Empty fields are omitted.
| Setting | Value |
|---|---|
| Method | POST |
| Content-Type | application/x-www-form-urlencoded |
| Timeout | 120 seconds |
| Max Redirects | 5 |
| Retry | No automatic retry |
| SSL Verification | Standard WordPress HTTP API behavior |
https://hooks.zapier.com/hooks/catch/...).Receive webhooks in any backend:
# Python / Flask example
from flask import Flask, request
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def handle_webhook():
event = request.form.get('event')
if event == 'ticket.created':
ticket_id = request.form.get('ticket_track_id')
customer = request.form.get('ticket_user_email')
subject = request.form.get('title')
# Process the new ticket...
elif event == 'ticket.closed':
# Process ticket closure...
return 'OK', 200// Node.js / Express example
app.post('/webhook', (req, res) => {
const { event, ticket_track_id, ticket_user_email, title } = req.body;
if (event === 'ticket.created') {
// Process new ticket
}
res.sendStatus(200);
});Select multiple webhooks and: