A tiny plugin (2 files, ~200 lines of PHP) that sends HTTP POST requests
with JSON ticket events to your endpoint — for example, a MAX messenger
bot — using GLPI item_add / item_update hooks.
The webhook subsystem in GLPI 11.0.x is unreliable: events originating from cron contexts (mail collector, automatic actions) and from child objects (followups, solutions) are sometimes never delivered. Plugin hooks have been a stable API since 9.x and fire for every event source: web UI, e-mail, REST API, forms, bulk actions.
| Hook | Condition | item_type / event |
|---|---|---|
Ticket item_add |
always | Ticket / new |
Ticket item_update |
only when status changed |
Ticket / update |
ITILFollowup item_add |
tickets only (itemtype=Ticket) |
Followup / new |
ITILSolution item_add |
tickets only (itemtype=Ticket) |
Solution / new |
Ticket (new / update):
{"item_type": "Ticket", "event": "new", "ticket_id": 123,
"name": "Subject", "status": 1, "status_name": "Новая",
"entity_name": "Organization",
"date_creation": "2026-07-03 10:00:00", "date_solve": ""}Followup:
{"item_type": "Followup", "event": "new", "content": "<p>Text</p>",
"is_private": 0, "user_name": "login", "ticket_id": 123,
"ticket_name": "Ticket subject"}Solution:
{"item_type": "Solution", "event": "new", "content": "<p>Text</p>",
"user_name": "login", "ticket_id": 123}Notes:
user_nameis the GLPI login; the receiver can resolve the full name via REST API.contentis HTML with entities already decoded ("→").status_nameuses a built-in Russian label map — adjustplugin_maxbridge_status_name()inhook.phpfor another locale (the numericstatusfield is locale-independent).
- Unpack into
glpi/plugins/maxbridge/ - Set your endpoint URL in the
PLUGIN_MAXBRIDGE_URLconstant (top ofsetup.php) - GLPI → Setup → Plugins → MAX Bridge → Install → Enable
All parameters are constants at the top of setup.php: endpoint URL and
connect/request timeouts. Timeouts are short (2/3 s) so ticket saving is not
slowed down when the receiver is unavailable.
Delivery errors are logged to glpi/files/_log/maxbridge.log.
Tested on GLPI 11.0.4 (PHP 8.2+). Declared range: min 10.0 / max 12.0.
- 1.0.1 —
ticket_namefield in followup payloads (readable notifications) - 1.0.0 — initial release
GPL-2.0-or-later