Skip to main content
A single index of the settings most often asked about in support. Each entry lists the field name, where it lives in the workflow/agent JSON, the default, and a one-line description. If a question starts with “how do I…” or “what does X do?”, the answer probably starts here.

Triggering

entity_type and trigger_type can’t be changed after creation. Both controls are disabled in the builder once the workflow or agent exists, and an API update that sends a different value is rejected with a 400 naming the field. To process a different entity — or to switch between scheduled and triggered — create a new agent with the setting you want; the filters, conditions, and downstream actions are all shaped by these two fields, so there is no in-place conversion.
Before 2026-07-31, the “What to process” dropdown in the agent builder looked editable on an existing agent (the workflow builder always locked it). Changing it appeared to save but reverted on reload, and a later unrelated save could silently switch the agent back to processing tickets. If a customer reports an agent that “keeps resetting to Ticket”, that was this bug — it is fixed, and the three affected agents were corrected.

Scheduling (SCHEDULED workflows)

schedule object on the workflow. Common gotcha — business-hours triggering: schedule.daily_execution_windows only constrains when the workflow itself runs. For TRIGGERED workflows (event-driven, not scheduled), the trigger fires whenever the PSA event matches — there is no “only trigger during business hours” knob today. If you need that, gate it with a filter on the ticket’s received_at or a deterministic business-hours filter.

Filters

The trigger filter lives on the first action, FIND_ENTITIES, at input_as_dict.ticket_conditions.conditions (for entity_type=ticket) or input_as_dict.time_entry_conditions.conditions (for entity_type=time_entry). conditions is a rule tree: a group with a combinator and a list of rules, where each rule is either a leaf (a single condition) or a nested group. Two optional sibling blocks sit next to conditions under ticket_conditions: Where a rule sits changes the logic. A company exclusion (companyID notIn […]) placed inside an or group only excludes when the other branches also miss — to exclude unconditionally it must be a top-level rule under the root and. AI filters. Alongside the deterministic rules above, a filter can include natural-language (“AI”) conditions — e.g. “ticket content is related to a printer issue” — and Neo can generate the deterministic rules for you from a description. These are configured in the filter builder; see Filter tickets. AI conditions are slower and consume credits per evaluation, so lead with deterministic rules and use them only for fuzzy matches. Common gotcha — NULL handling in ConnectWise filters: ConnectWise’s API uses SQL three-valued logic. A filter like Owner != "Alice" AND Owner != "Bob" silently drops tickets where Owner IS NULL, because NULL != "Alice" evaluates to NULL (not TRUE). To include unassigned tickets, use Owner IS NULL OR (Owner NOT IN ["Alice", "Bob"]) instead.

Test mode & re-running

Technician-in-the-Loop (TIL)

Custom instructions

Notify-action delays

Notify actions support a configurable random delay so messages don’t all leave at the same second. If include_random_delay=true but min and max are both 0/null, the delay is skipped (not an error).

Sub-entity callbacks

Inbox notifications

Credits

Versioning & sharing

See also