Macros
A macro is a ready-made set of actions an operator applies to a ticket in one click. Macros are shared across the project: every operator sees them, and a macro can't be limited to a department.
Creating a macro
Open Settings → Macros and click Create Macro. Fill in:
- Name and Description — what the operator sees in the list.
- Actions — switch on the ones you need. They run in this order:
- Send Reply — text sent to the customer on the operator's behalf. With Internal Note ticked it becomes a note the customer doesn't see.
- Change Status — New, Open, In Progress, Resolved or Closed.
- Assign Operator — pick the operator from the project's operators.
- Transfer to Department — pick the department from the project's departments. This action is only there if your plan includes departments.
- Add Tags and Remove Tags — comma-separated.
- Actions in BILLmanager — only if the project has a BILLmanager channel: Prolong the service for free, Add a bonus to the balance and Ticket's service (suspend, resume or reboot the VPS). They always run last, in this order. More below.
Reorder macros with Move up and Move down; the Usage count shows next to each.
Variables in the reply
Below the reply box are the variables: click one to put it at the cursor. The values are filled in when the macro runs.
{{contact.name}},{{contact.email}},{{contact.telegram}},{{ticket.id}},{{ticket.subject}},{{ticket.status}},{{operator.name}},{{workspace.name}}— the customer, the ticket, the operator and the project, as in reply templates.{{service.name}},{{service.ip}},{{service.tariff}},{{service.paid_until}},{{client.balance}}— the service the BILLmanager ticket is about and the customer's balance, read from BILLmanager when the macro runs. With a prolongation or a bonus in the macro, the date and the balance are the ones after them.
If a variable has no value (the ticket has no service, BILLmanager didn't answer, the customer has no Telegram), the reply doesn't go out with a hole: the whole macro doesn't run, and the operator sees which variable was missing. The editor won't save an unknown variable like {{service.…}}.
Actions in BILLmanager
- Every action is on the service the BILLmanager ticket is about (SupportHub reads it from BILLmanager when the macro runs), and only if the service belongs to this ticket's customer. The macro stores no service number.
- Ticket's service: Suspend and Resume do what the Stop and Start buttons in the customer card do; Reboot the VPS is for VPS only. Needs the channel's “Manage VM” permission.
- Prolong the service for free moves the paid-until date on by the given number of days, with no charge to the customer (for a lapsed service, from today). Prolonging doesn't start a suspended service — add Resume to the same macro: it runs after the prolongation. For VPS and dedicated servers.
- Add a bonus to the balance — an amount in the currency of the customer's account and a comment (it becomes the payment's purpose). BILLmanager gets a payment with the payment method chosen in the channel card, credited right away; BILLmanager sends the customer its usual payment notification.
- Money (prolongation and bonus) runs only for someone with the channel's “Money: free prolongation and bonuses” permission. At first only the project owner has it, and only the owner can grant it.
- The owner sets the limits in the BILLmanager channel card, Permissions tab: how many days one macro may prolong (30 by default), the largest bonus (bonuses are off until it's set) and the payment method for bonuses. They're checked when a macro is saved and on every run; above them is the platform ceiling of 365 days and 100,000.
- On a module channel (v2), reboot, prolongation and bonuses need SupportHub module 1.0.0-14 or later on the BILLmanager server. With an older module these steps don't run, and the confirmation window says “Update the SupportHub module on the BILLmanager server to 1.0.0-14”; suspend, resume and the variables work with any version. Prolongation and bonuses also need “Allow prolongation and bonuses” ticked in the SupportHub gateway in BILLmanager (off by default).
How operators apply a macro
The ticket's reply box has a Macros button (Ctrl+Shift+M): the operator picks a macro and all its actions run on that ticket right away. A macro only works on a ticket the operator can access by department, just like the ticket's buttons.
Permissions for the actions themselves are checked for the whole macro before the first action. A note, closing (Resolved, Closed), reopening to Open and tags are open to any operator. A reply to the customer, assigning an operator, a department transfer and other status changes are for the ticket's assignee, anyone while the ticket is unassigned, and the owner and admins on any ticket. If any action isn't allowed for the operator, the whole macro is refused (the API answers 422).
A macro with actions in BILLmanager first shows exactly what it will do — “Prolong service VPS #632 until 08.10.2026”, “Add 500 € to the balance of Sergey” — and runs only on Run. If something won't go through (no permission, no service on the ticket, a limit exceeded), the same window says so and the macro doesn't run at all. Clicking again doesn't run it a second time. If a step fails while running, the remaining BILLmanager steps don't run, and the operator sees a step-by-step report: what was done, what wasn't and why. Each action in BILLmanager leaves an internal note in the ticket and an audit log entry.
How a macro changes the status
- Closed — a full close, as with the Close button: the customer gets a closing message and, if enabled, a rating request, the card in the Telegram group is updated, and the BILLmanager ticket is closed.
- Resolved — the same as moving the card to “Resolved” on the board: a snoozed ticket is resumed first, and the BILLmanager ticket is closed. A macro doesn't turn a closed ticket into Resolved; it stays closed.
- New, Open, In Progress — a closed or resolved ticket is reopened first, as with the Reopen button, and a snoozed one is resumed, as with the Resume button; then the status changes the same way as when you move the card on the board.

