Automation
Selectors, triggers, scheduler jobs, macros, SLAs with business hours and webhooks.
All automation shares two building blocks: a selector that says which tickets are meant, and an action catalog that says what happens to them.
Selector
A selector is a JSON document of field, operator and value conditions, nested with AND and OR. The same selector runs in two ways with identical semantics: evaluated in memory against one ticket (for triggers), and compiled to SQL (for scheduler jobs and overviews). Fields include ticket attributes, organization_id, the SLA deadlines and custom.<key> for custom fields.
Actions
Status, assignee, mailbox, tags, internal notes, mails to the customer or to an agent, a pending-until date, custom field values and webhooks. One executor runs them for triggers, scheduler jobs, macros and SLA escalations.
Triggers
A trigger is an event plus a selector plus actions. The events are conversation.created, conversation.updated, message.customer and message.agent. Triggers run asynchronously; loop protection lets each trigger fire once per event chain and cuts chains at depth 5.
Scheduler jobs
A scheduler job is a cron expression plus a selector plus actions, run through pg-boss on at most 500 tickets per run. A job acts at most once per ticket until the ticket changes, so notes and mails do not repeat on every run.
Macros
A macro bundles actions that an agent applies to a ticket in one step, optionally continuing with the next ticket in the queue.
SLA
An SLA selects tickets and sets targets for first response, update and solution, counted in business minutes. Business hours come from a calendar with a weekly plan, holidays and an IANA time zone; the status “pending” stops the clock. Deadlines are stored on the ticket and recomputed on ticket events and by a sweep every minute. When the earliest deadline passes, the SLA’s escalation actions run once, and an “Escalated” overview can list those tickets.
Webhooks
Outgoing webhooks fire as an action or as a subscription to trigger events, with a JSON ticket payload signed in the header X-Helpdesk-Signature (HMAC-SHA256 over timestamp and body). Deliveries are retried with exponential backoff, 4xx responses are not retried, and the last 100 attempts per webhook are listed. Targets that resolve to private, loopback or link-local addresses are refused, and redirects are not followed.
Guard rails for automated mail
Mails from automation carry Auto-Submitted: auto-generated. Mails to customers are capped at 3 per ticket and 10 per recipient in 24 hours, and skipped for tickets with an unverified sender.
Where to configure it
Admins manage triggers, scheduler jobs, macros, overviews, webhooks, SLAs with calendars and privacy jobs under the settings in the web UI.