Features

Tickets

Tickets are the core of Servelo. Each ticket represents a service request or job, tracks its lifecycle from open to closed, and can carry comments, photos, charges, and quotes.

The Tickets list

The Tickets list is fully configurable. Click the โŠž Columns button to show or hide any of the available columns: Ticket #, Description, Client, Source, Phone, Email, Location, Assigned To, Priority, Paid, Payment Method, Status, Scheduled, Hours, Miles, Charge, Date Created, Date Closed, Work Type, Lead Fee, Payment Fees, and Revenue. Ticket #, Client, and Status are always shown; Phone, Email, Hours, Miles, Date Closed, Work Type, Source, Payment Method, Lead Fee, Payment Fees, and Revenue are hidden by default to keep the list compact. Date Closed only shows a value for Closed/Cancelled tickets. Both dates are also shown under the title on the ticket detail page ("Created {date}" and, once finished, "ยท Closed {date}" or "ยท Cancelled {date}") regardless of which columns are visible.

Drag any column header left or right to reorder it. If the order gets messy, open the Columns picker and click โ†บ Reset column order to put everything back to default. Column visibility and order are saved per browser and are shared with the ticket tables on the Dashboard โ€” a change made on either page shows up on the other.

Click a sortable column header to sort by that column; click again to reverse direction. The row โ‹ฎ menu offers Edit, Export PDF, Duplicate, Pin to Dashboard / Unpin, and (admins) Delete.

Check the box next to one or more rows to select them, then use the Set statusโ€ฆ dropdown to change all selected tickets at once, or delete them together (admins). Closed is not offered as a bulk status option. Closing a ticket requires the review step (Hours Worked, Work Type, assignee, closing note) described under Closing a ticket below, so it can only be done one ticket at a time from the ticket detail page.

The Search box filters by title, ticket number, client name, company, description, or work type by default. To search one field specifically, prefix the query with the field name and a colon, e.g. status: closed or payment method: cash. This works for any ticket field, not just the ones shown as columns — useful for fields like Payment Method that don't have their own dropdown filter. As you type, a dropdown suggests matching field names, and once a field is chosen it suggests the real values seen for that field so you don't have to guess spelling — typing source: lists every distinct client source in use, for example. Combine multiple fields with & to narrow further, e.g. payment method: paypal & source: hellotech matches only tickets that satisfy both. See the table below for every field name and its accepted aliases. To leave things out instead, see Excluding results below.

FieldAliases
Ticket #ticket, ticket #, ticket number
Titletitle
Descriptiondescription, desc
Notesnotes, note
Clientclient, customer, name
Companycompany
Sourcesource, customer source, client source
Phonephone
Emailemail
Locationlocation, address
Assigned Toassigned, assigned to, technician, tech
Prioritypriority
Statusstatus
Paidpaid (value yes or no)
Scheduledscheduled, scheduled date
Hourshours, hours worked (exact number)
Milesmiles, miles driven (exact number)
Chargecharge (exact number)
Date Createdcreated, date created, date
Date Closedclosed, date closed
Work Typework type, type, work
Lead Feelead fee (exact number)
Payment Feepayment fee (exact number)
Payment Methodpayment method, payment, paid via, payment type

Field names are case-insensitive. If the text before a colon isn't a recognized field, it's searched as plain text instead of returning no results. Searching for text that itself contains an &, like Smith & Sons or AT&T, still works: & only joins clauses when it has a space on each side and at least one side is a field or an exclusion. Fields marked "exact number" (Hours, Miles, Charge, Lead Fee, Payment Fee) match tickets whose value equals what you typed, rather than a text search — so hours: 0 finds tickets with exactly 0 hours logged, not every ticket whose hours happen to contain a "0" digit.

The default sort (Date Created) isn't purely chronological: active Urgent tickets float to the very top, active High priority next, then upcoming scheduled tickets (soonest first), with everything else falling back to normal date order below that. Closed and cancelled tickets are excluded from the priority float. Switching to any other sort column drops this behavior entirely and sorts strictly by the chosen field.

Excluding results ("does not contain")

Sometimes it's easier to say what you don't want to see. Both the search box and the dropdown filters can leave rows out instead of narrowing to them.

In the search box

Put a - or ! in front of a word to hide every row that contains it. To exclude on a single field, use != instead of the colon. These three all mean the same thing:

Join several with & (a space on each side) and a row has to pass every one of them. Exclusions, field searches, and plain words can all be mixed. The suggestions dropdown keeps working too: type status != and it lists the real values in use.

Type thisTo see
-printerEvery ticket that doesn't mention "printer" in its title, number, client, company, description, or work type.
status != closedEverything except closed tickets.
-printer & -scannerTickets about neither printers nor scanners.
status != closed & printerPrinter tickets that are still open.
source: hellotech & payment method != cashHelloTech tickets that weren't paid in cash.
hours != 0Tickets with time logged (hides ones with 0 or no hours).
๐Ÿ’ก Exclusions match partial text, the same way a normal search does. -mac also hides anything containing machine or imac. Use more of the word to be precise, e.g. -macbook.
โš ๏ธ On number fields (Hours, Miles, Charge, Lead Fee, Payment Fee), a - in front of the value means a negative number, not "exclude". Use ! or != there, e.g. hours != 0.

Status filter: Is and Not

The status filter is a checklist: tick as many statuses as you want. The filter shows what's ticked, for example "closed, cancelled", or "3 statuses" when there are more than two. The Is / Not button on its left decides what the ticks mean:

Whatever is ticked when you click Is becomes the hidden list, so "Is: closed" turns into "Not: closed" in one click. With nothing ticked, clicking Is brings back your saved hidden list.

Your hidden list is saved. Set it once, for example to hide Closed and Cancelled, and the Tickets list opens that way every time. It's also remembered while you're in Is mode, so switching back to Not brings it back.

A few things switch the filter back to Is so the list matches what you clicked, without erasing your hidden list:

โ„น๏ธ This replaces the old Hide button. If you had statuses hidden there, they carried over: the filter opens in Not mode with the same statuses ticked.

Priority filter

The priority filter works the same way: tick one or more priorities, and click Is so it reads Not to see every ticket except those, for example everything that isn't Low or Normal. It switches back to Is when you click Clear inside the dropdown or Clear ร—.

Creating a ticket

Go to Tickets and click New Ticket. Required fields are title and client. All other fields are optional.

FieldDescription
TitleShort description of the job (required)
ClientThe client this ticket belongs to (required)
DescriptionFull details of the request
Work TypeCategory of work, e.g. Hardware, Networking, Software. Managed in Settings
Assigned toThe technician responsible for the job
AssetA device from the client's asset list to associate with this job. Appears after a client is selected
Scheduled dateWhen the job is planned. Setting a date automatically moves the ticket to Scheduled status. Triggers Google Calendar and/or Outlook Calendar sync if the technician has connected their calendar. You can't pick a date or time in the past โ€” the picker disables them. Click ๐Ÿ•“ History next to the Schedule heading on an existing ticket to see every time the scheduled date was changed, who changed it, and when
Due dateOptional deadline for the ticket. Tickets past their due date appear in the overdue count on the dashboard
ChargeAmount collected from the client for this job. Used in the P&L summary and revenue tracking
Payment MethodHow the client paid: Cash, Credit Card, Check, Zelle, BTC, etc.
BTC/USD Rate at Payment, BTC Amount ReceivedShown only when Payment Method is set to BTC. Click Use Live Rate to pull the current BTC/USD spot price from Coinbase and auto-calculate the BTC amount from the ticket's Charge. Both fields stay editable to match the customer's actual wallet transaction, and are recorded on the revenue entry created when the ticket is marked paid.
PaidToggle that appears once a Charge is set. Marking it Paid logs a revenue entry immediately and works regardless of ticket status โ€” useful when a customer pays up front but the job isn't finished yet. Unmarking it removes the revenue entry. Closing a ticket with an amount in Collected at close sets this automatically; the toggle just lets you set it earlier (or later) too.
Hours WorkedTime spent on the job. Shown in dashboard stats and exports
Miles DrivenDistance traveled in miles. Combined with your MPG and gas price (configured in Tickets > Settings) to calculate fuel cost. Click โ†” Round trip to replace the value with the round-trip distance from your start location to the client's address, or + Add Trip to add another round trip on top of what's already there, for jobs that need more than one visit
Lead feeReferral or lead fee paid to a third party, separate from the charge. Deducted in the P&L summary. This field is per-job profitability info only; the actual charge should reach the Expenses page through your normal expense records (e.g. the credit card CSV import)
Payment feeCredit card or processor fee. Deducted in the P&L summary
Job costsOne or more out-of-pocket costs for the job: parking, tolls, supplies, subcontractor fees, parts, etc. Each row has a label, an amount, a Bill separately checkbox, and an Add to expense ledger checkbox. Left unchecked (the default), the cost is bundled into the ticket's charge and deducted from this ticket's P&L right away; costs can also be auto-added as expense entries when the ticket is marked paid (configure in Tickets > Settings). Checking Bill separately immediately creates a linked Reimbursed Expense instead (see Reimbursed Expenses) and removes the row from this list โ€” use this when you plan to itemize the cost on its own invoice line rather than folding it into the charge. Checking Add to expense ledger creates a real, categorized Expense linked to this ticket immediately, without removing the row โ€” use this for one-off costs that never touch a bank feed, like paying a contractor cash, Zelle, or check. The row's amount and note stay in sync with the linked expense as you edit them, and unchecking the box or deleting the row deletes the linked expense too
StatusCurrent state: open, in progress, scheduled, on hold, awaiting payment, closed
PriorityLow, normal, high, or urgent

Changing a ticket's client

A ticket's client isn't fixed after creation. On the ticket detail page, click Change next to the client card (or + Assign client if none is set) to search and pick a different one. If your tenant is part of a multi-tenant group and has Cross-Tenant Clients enabled for one or more sibling tenants, the same search also surfaces their clients, so you can link a ticket to a client who lives in another workspace without recreating them. See Cross-Tenant Clients for setup.

When creating a new ticket, the client picker includes a + New option to create the client inline without leaving the form.

Ticket statuses

StatusMeaning
OpenNew or unstarted. Counts toward the technician's open workload
In ProgressActively being worked on
ScheduledHas a scheduled date and is waiting for that date
On HoldPaused. Waiting on parts, approval, or the client
Awaiting PaymentWork is done and an invoice has gone out; waiting on the client to pay. Set automatically when an invoice is created for the ticket (see Creating an invoice), or manually. Marking the invoice paid moves the ticket to Closed automatically.
Not PaidWork was done but the client never paid and you've stopped pursuing it. Counts as finished, like Closed: it leaves open-work and unpaid totals and gets its own card on the Tickets page. Setting it also marks the ticket's sent invoices Not Paid, and marking an invoice Not Paid sets the ticket too; moving either back reopens the other (ticket to Awaiting Payment, invoice to Sent). If the client pays later, marking the invoice paid closes the ticket as usual. The client isn't emailed, and in the portal it shows as Closed.
ClosedWork is complete. The ticket is locked โ€” all fields are read-only and autosave is disabled; the page shows Re-open ticket to make changes instead of the usual saving indicator. Use Re-open Ticket to resume editing.

Closing a ticket

Click Close Ticket โ€” either the green button in the top-right action row on the ticket header, or the button in the reply area at the bottom. Both open the same close modal, which collects final job details before locking the ticket:

FieldNotes
Closing commentRequired. Choose Internal (staff only) or Public (client sees it). A public comment triggers a client notification email.
Work TypeRequired. Must be selected before the ticket can be closed. If the ticket already has a work type it is pre-filled. Work type is saved to the ticket on close.
Assigned ToRequired. Pre-filled from the ticket if a technician is already assigned. Saved to the ticket on close.
Hours WorkedRequired โ€” must be greater than 0. Pre-filled from whatever was already on the ticket.
Miles, FeesOptional final values. Pre-filled from whatever was already on the ticket. In the Miles Driven field, click โ†” Round trip to calculate the round-trip distance from your start location to the client's address automatically, or + Add Trip to add another round trip on top of it. Requires a start location set in My Account and an address on the client record.
Collected at closeEnter an amount to log a revenue entry and mark the ticket paid in one step.
Payment MethodOptional. Recorded alongside the revenue entry.

Two close actions are available: Mark as paid & Close (creates a revenue entry) and Close without marking paid. Both are disabled until a Work Type and an assigned technician are selected, hours worked is entered, and a closing comment is written.

Re-opening a ticket

When a ticket is closed, a Re-open Ticket button appears in the banner where the reply area normally is. Clicking it sets the status back to Open and unlocks all fields for editing. There is no confirmation step โ€” the ticket is re-opened immediately.

Autosave

Ticket detail pages save automatically. About a second after you stop typing or change a field, Servelo saves the whole form โ€” there is no Save button on desktop. A small label near the top of the page reads Unsaved changes while an edit is pending and switches to Savingโ€ฆ during the save. On mobile, a sticky Save bar stays at the bottom of the screen instead. Closed tickets don't autosave; re-open the ticket first. New tickets still use an explicit Create Ticket button.

Comments and communication

All team members can add internal comments to any ticket. Comments are visible to anyone with access to the ticket in the app.

When a comment is posted with Notify Client checked, it triggers an email notification to the client. The client can reply directly by email, the reply is threaded back to the ticket automatically. See Email Integration.

Photos and attachments

Photos and files can be uploaded to a ticket from the Files section on the ticket detail page. Up to 20 files per upload, 100 MB total. Supported formats: JPEG, PNG, GIF, WebP, HEIC/HEIF, and SVG images, plus PDF, Word, Excel, and plain text documents. Files are stored in S3 and accessible via time-limited signed URLs. Photos are also visible to the client in the customer portal.

If the ticket's client has assets on file, each image attachment shows a small ๐Ÿ“Ž button. Click it to attach that photo directly to one of the client's assets, without re-uploading โ€” useful when a photo you already took of a device turns out to be worth keeping on that device's own record. See Photos on assets.

โ„น๏ธ Photos attached by clients via the portal appear on the ticket just like internal uploads.

Documents and e-signing

Any ticket can have PDF documents attached for client review and e-signature. This is separate from the photo attachment system and is designed for contracts, liability waivers, scope-of-work agreements, and similar documents.

Uploading a document

  1. Open the ticket and scroll to the Documents section
  2. Click Upload Document and select a PDF from your device
  3. The document is stored securely and listed under the ticket

Sending a document for signing

  1. After uploading, click Send for Signing next to the document
  2. Servelo emails the client a unique signing link
  3. The client opens the link, reviews the PDF, types their full name, draws their signature, and submits
  4. The signature, signer name, IP address, and timestamp are recorded
  5. The ticket updates to show the document as signed
โ„น๏ธ Document signing on tickets uses the client's email address on file. Make sure the client record has a valid email before sending.

Device entry step

If the document being signed contains a device table (created by including a | # | Device Type | table in the document), the client signing experience adds a step before the signature. The client is prompted to enter up to 5 devices โ€” type, make/model, and serial number โ€” before reviewing and signing. Servelo fills in the table automatically so the final signed PDF contains the completed device list. Documents without a device table go straight to the signature step as usual.

Provider counter-signing

After a client signs a ticket document, an admin can add a counter-signature to create a fully executed record. Open the ticket, find the signed document in the Documents section, and click Counter-sign. Type your name and draw your signature in the panel that appears. The counter-signature is timestamped and recorded in the audit trail alongside the client's signature, and the finalized PDF is embedded in the ticket record.

For reusable agreement templates (service agreements, terms of service, etc.) that you want to attach to quotes for signing, see Digital signatures on quotes.

Deleting a document

Clicking the ๐Ÿ—‘ icon on a document moves it to that ticket's Trash panel rather than deleting it immediately. Expand the ๐Ÿ—‘ Trash (N) section under Documents to Restore a document back to the active list, or Delete Forever to permanently remove it (this also deletes the underlying file, including any signed PDF, from storage). Trashed ticket documents also appear in the global Trash page alongside deleted tickets and other records.

Schedule (week view)

The drag-and-drop week schedule by team member is on the Technicians page, below the team workload.

Service plans (recurring visits)

A service plan is work you do for a client on a regular schedule, like a quarterly inspection, a monthly service, or a pool screen check every 6 months. Set it up once and Servelo adds each visit as a ticket for you.

Appointment reminders

Servelo can email a heads-up before a scheduled visit. Under Tickets โ†’ Settings โ†’ Appointment Reminders there are two switches, both off until you turn them on, and one timing setting for both (2, 4, or 12 hours before, 1 day before, or 2 days before):

The Suppress emails box on a client covers ticket updates, portal sign-in links, booking receipts, and appointment reminders. It doesn't affect invoice and quote emails.

Ticket settings

Ticket settings save automatically a moment after you change them. There is no Save button.

Admins can access ticket-specific settings from the Settings tab on the Tickets page.

SettingDescription
Ticket NumberingSet the starting number and zero-padding for ticket IDs. Locks once any ticket exists; use Reset numbering to jump the counter forward.
Auto-add job costs to expensesWhen on, each job cost row on a ticket that isn't already linked to an expense creates one automatically when the ticket is marked paid. Leave off if costs arrive via bank import. Doesn't affect rows already added individually via the job cost row's own Add to expense ledger checkbox โ€” those are never duplicated.
Vehicle MPGYour vehicle's average fuel efficiency. Used with the gas price to calculate fuel cost per ticket.
Gas Price ($/gal)Current fuel price. Use the refresh button to pull the national average from the EIA.

Ticket numbers

Each ticket is assigned a sequential number (e.g. #0042) at creation. The starting number and zero-padding can be configured under Tickets > Settings > Ticket Numbering. Ticket numbers are stable and can be used to look up tickets from email subjects or reference in conversations with clients.

Calendar sync

Technicians who connect their Google Calendar or Microsoft Outlook Calendar via My Account will have scheduled tickets synced automatically. When a ticket's scheduled date is set or updated, a calendar event is created or updated. When a ticket is closed or its scheduled date is removed, the event is deleted.

Both Google and Outlook are supported simultaneously. Calendar sync is per-user. Each technician manages their own connection independently. Once connected, My Account shows which email address is synced, useful if you have more than one Google or Microsoft account. If you connected before this was shown, disconnect and reconnect to pick it up.

Assets on tickets

Any asset from the ticket's client can be linked to a ticket, so it's always clear which device the job is about. The asset (name, make, model, serial) appears in the ticket detail and is included when the ticket is exported or emailed.

From the ticket detail you can also run a device scan: click Scan on the linked asset to generate a PowerShell one-liner. Run it on that machine and Servelo auto-fills the OS, CPU, RAM, storage, GPU, hostname, and IP address directly into the asset record. No software needs to be installed on the client machine.

AI Job Planner

Every ticket has a built-in AI Job Planner, accessible from the ticket detail page. Click โœฆ AI Job Planner to open a persistent chat panel where you can ask follow-up questions, build a game plan, or draft a customer reply, all in the context of the current job.

The AI already has the full ticket details, client profile, client history, and any assets linked to the customer. You don't need to describe the job from scratch.

FeatureHow it works
Persistent conversationThe conversation is saved per ticket. Close the panel and reopen it later to continue where you left off.
Voice inputTap the microphone icon next to the text box to dictate your message hands-free. The mic turns red while listening. Speech is transcribed and appended to any text already in the box. Works in Chrome, Edge, and most Chromium-based browsers. Not available in Firefox or Safari.
Customer ReplyIf the AI includes a suggested customer reply, a "Use as reply" button appears. Click it to drop the text straight into the reply box.
Game PlanAsk for a game plan and the AI returns a structured step-by-step procedure. On a fresh conversation, a Generate Game Plan button in the empty state does this in one click, no need to type a prompt. A "Copy game plan" button lets you grab the result to clipboard.
Identify AssetsAlso available as a one-click button in the empty state. The AI reviews the ticket's description, notes, comments, and attached photos for devices or equipment belonging to the customer, and proposes an Add to Assets button for every one it finds โ€” a network closet photo with six devices in it produces six separate confirmation cards, not just one.
Clear conversationUse the Clear button in the planner header to wipe the conversation and start fresh for the same ticket.

Actions the AI can take

The AI Job Planner can do more than answer questions. It can take direct actions on the ticket, the client record, or a contact. When it proposes an action, a confirmation card appears before anything is changed. Review the details and click Confirm to apply, or Cancel to skip it.

ActionWhat it does
Add assetCreates a new asset record linked to the client and pre-fills make, model, type, and notes from the conversation. When more than one device is identified at once (e.g. via Identify Assets), each gets its own confirmation card so you can add them individually or all at once.
Update client recordUpdates the client's email, phone, address, notes, or ISP info โ€” useful when the AI finds a correction or a missing detail in the ticket (a photo, a comment) and you ask it to update the client record with it.
Add / update contactAdds a new person to the client's contact list, or updates an existing one's name, email, phone, or role.
Update ticketChanges ticket fields such as title, status, priority, scheduled date, charge, miles driven, or work type without leaving the chat.
Create quoteGenerates a draft quote (pending estimate) with line items, quantities, and prices. The quote is attached to the ticket immediately.
Create invoiceGenerates a new invoice (a bill for completed work, not a pending estimate) with line items, and moves the ticket to Awaiting Payment. Say "invoice" rather than "quote" to get this instead. To add a line item to an invoice that already exists on the ticket, just ask - the AI adds to the existing one instead of starting a new one.
Add job costLogs a parts or materials cost entry on the ticket (description, amount, optional vendor).
Post commentAdds an internal note or customer-visible comment to the ticket thread. Each AI Job Planner response also has a Post as internal note button that saves that specific response directly to the ticket comments.
Create follow-up ticketOpens a new linked ticket for a separate issue or return visit, pre-filled with the same client and relevant context.
โ„น๏ธ To use Anthropic Claude as the AI provider instead of the default, add your Anthropic API key under Settings > Integrations > AI Provider. Without a key the planner falls back to the built-in Groq model automatically.

Pinned tickets

Pin any ticket to keep it visible on the Dashboard regardless of its status. Pinned tickets appear in a dedicated Pinned panel on the Dashboard, making it easy to track tickets you're actively watching without searching or filtering.

You can pin a ticket from several places: the pin icon in the top-right action strip on the ticket detail page; the โ‹ฎ menu on any row of the Tickets list (Pin to Dashboard / Unpin); or the ๐Ÿ“Œ icon at the end of a row in the Dashboard's Today's Jobs, Upcoming Jobs, Unassigned Tickets, or Recent Jobs panels. Servelo also asks you directly at two points in a ticket's life: right after you create a new ticket ("Pin to dashboard?"), and right after a pinned one is closed, cancelled, or marked Not Paid ("Unpin it now?"). Both prompts are optional to act on. Unpinning shows an Undo button on the confirmation toast for a few seconds if you didn't mean to. Pins are per-user; each team member manages their own pinned list independently.

Quotes on tickets

A quote can be attached to any ticket. The quote is a line-item estimate that can be emailed to the client for acceptance or signature. See Quotes for the full flow.

P&L Summary

Each ticket shows an estimated profit and loss summary at the bottom of the Financials section once a charge or costs are entered. This is for internal reference only and is not shown to the client.

LineSource
Gross RevenueThe Charge field on the ticket
Equipment / PartsTotal of all reimbursed expenses linked to this ticket (see Reimbursed Expenses)
Customer depositIf the ticket has a linked accepted quote with a deposit, the deposit amount is shown as a credit that offsets the equipment cost, since the client pre-funded that portion
Lead FeeThe Lead Fee field on the ticket
Payment FeeThe Payment Fee field on the ticket, auto-calculated from the rate configured under Invoices > Settings > Processing Fees
Job CostsEach row from the Job Costs section that is not marked Bill separately, listed individually. Rows marked Bill separately move to Equipment / Parts above instead
Est. FuelCalculated from miles driven, MPG, and gas price settings
Est. P&LGross Revenue + deposit credit − all cost lines above. Informational only

The P&L summary only appears when at least one of charge, expenses, fees, or mileage has a value. It does not affect invoices or revenue records.

Duplicating a ticket

Duplicate a ticket to quickly create a new one pre-filled with the same client, description, work type, priority, charge rate, notes, and job cost line items. This is useful for recurring visits with the same client where the work is similar each time.

To duplicate from the ticket list, open the โ‹ฎ menu on any row and choose Duplicate. To duplicate from a ticket detail page, click the Duplicate button in the top-right action strip.

The new ticket opens immediately with status set to Open and the scheduled date blank โ€” set the date for the next visit; changes save automatically. Fields that are specific to the original job (hours worked, miles driven, P&L amounts) are not carried over.

Trash

Deleted records are moved to Trash, not immediately erased. Admins can view and manage Trash from the Trash item in the sidebar, and filter by type: Tickets, Clients, Assets, Expenses, Revenue, Quotes, Invoices, Chats, or Documents (ticket documents sent for signing, see Documents and e-signing). Items in Trash can be restored or permanently deleted. Permanently deleted tickets and documents have their S3 attachments removed as well.

Exporting tickets

Click Export on the Tickets list page to download all visible tickets as a CSV. The export respects your current filters (status, date, assignee, etc.), so filter first to get exactly the slice you want. Exported columns include ticket number, title, status, priority, assigned technician, client, scheduled date, charge, and timestamps.

Who can do what

ActionAdminTechnicianViewer
Create ticketYesYesNo
Edit ticketYesYesNo
Add commentYesYesNo
Upload photoYesYesNo
Close ticketYesYesNo
Duplicate ticketYesYesNo
Delete ticketYesNoNo
View all ticketsYesYesYes