How to import Zammad tickets for SLA reporting
Zammad has no CSV export for tickets, but its Reporting feature downloads them as an Excel file, and Metproof reads that file as it is. For a live feed, Zammad can also send each ticket as it changes.
Export from Zammad
- Open Reporting (your role needs access to Reporting). Choose the profile, such as -all-, and the time range you want.
- In the Created count, use the download link to get the tickets as an Excel file (
.xlsx). There is no need to convert it to CSV.
The file lists the tickets created in that range, open and closed. Tickets that were merged into another are not included, so they are never counted twice.
Import into Metproof
- Pick the client, choose Zammad as the source and upload the
.xlsxfile. - The columns (
#,Created At,Priority,State,Owner,First Response AtandClosed At), the date format, the priorities and the states are filled in for you. Check them and fix anything marked as not matched. - Run the import. Re-importing later updates the tickets by number, so there are no duplicates.
How Zammad’s values are read
- Priority:
1 lowis Low,2 normalis Normal and3 highis High. Zammad has nothing above that, so no Zammad ticket becomes Critical unless you map a custom priority yourself. - State:
newandopenare open,pending reminderandpending closeare waiting on the client, andclosedis resolved. Amergedticket is set to Do not import. - First response: Zammad records it when an agent adds a reply such as an email or a phone entry. An internal note does not count, in Zammad or here.
- Unassigned: Zammad writes
-as the owner of a ticket nobody has taken, and that is read as no agent. - Time zone: the dates are in the time zone shown at the bottom of the report. Make sure it matches the client’s business hours. The note itself is ignored.
The export has no column for time spent waiting on the client, so an imported ticket has no paused time. The webhook below credits it exactly.
Keep it up to date with a webhook
On the Team plan, Zammad can send each ticket to Metproof as it changes, with its default payload and no template.
- In Metproof, open Clients, create the client’s webhook and copy the address. It is shown only once.
- In Zammad, go to Settings › System › Webhook and add a webhook with that address. Leave the payload as it is.
- Go to Settings › System › Trigger and add triggers that perform that webhook: one for Action is created, and one for each of State, Priority and Owner has changed.
The state trigger is the important one. Zammad’s Action is updated only fires when an article is added, so on its own it misses a ticket moving to pending or closed, and those changes are what start and stop the SLA pause. Repeated calls for the same ticket are harmless, because tickets are matched by number.
More on the import route
The general method works for any helpdesk: see SLA tracking from your helpdesk’s CSV export.