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.
| Field | Aliases |
|---|---|
| Ticket # | ticket, ticket #, ticket number |
| Title | title |
| Description | description, desc |
| Notes | notes, note |
| Client | client, customer, name |
| Company | company |
| Source | source, customer source, client source |
| Phone | phone |
email | |
| Location | location, address |
| Assigned To | assigned, assigned to, technician, tech |
| Priority | priority |
| Status | status |
| Paid | paid (value yes or no) |
| Scheduled | scheduled, scheduled date |
| Hours | hours, hours worked (exact number) |
| Miles | miles, miles driven (exact number) |
| Charge | charge (exact number) |
| Date Created | created, date created, date |
| Date Closed | closed, date closed |
| Work Type | work type, type, work |
| Lead Fee | lead fee (exact number) |
| Payment Fee | payment fee (exact number) |
| Payment Method | payment 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:
status != closedstatus: !closed-status: closed
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 this | To see |
|---|---|
-printer | Every ticket that doesn't mention "printer" in its title, number, client, company, description, or work type. |
status != closed | Everything except closed tickets. |
-printer & -scanner | Tickets about neither printers nor scanners. |
status != closed & printer | Printer tickets that are still open. |
source: hellotech & payment method != cash | HelloTech tickets that weren't paid in cash. |
hours != 0 | Tickets with time logged (hides ones with 0 or no hours). |
-mac also hides anything containing machine or imac. Use more of the word to be precise, e.g. -macbook.
- 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:
- Is shows only tickets in one of the ticked statuses, for example Open and In Progress together.
- Not hides the ticked statuses, for example everything except Closed and Cancelled.
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:
- Clicking a status card (Open, Closed, and so on) at the top of the page.
- Opening the Tickets page from a Dashboard card for a status or a time period (for example Open, Tickets, or Hours Worked), so the list matches the count on the card.
- Clicking Clear ร.
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.
| Field | Description |
|---|---|
| Title | Short description of the job (required) |
| Client | The client this ticket belongs to (required) |
| Description | Full details of the request |
| Work Type | Category of work, e.g. Hardware, Networking, Software. Managed in Settings |
| Assigned to | The technician responsible for the job |
| Asset | A device from the client's asset list to associate with this job. Appears after a client is selected |
| Scheduled date | When 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 date | Optional deadline for the ticket. Tickets past their due date appear in the overdue count on the dashboard |
| Charge | Amount collected from the client for this job. Used in the P&L summary and revenue tracking |
| Payment Method | How the client paid: Cash, Credit Card, Check, Zelle, BTC, etc. |
| BTC/USD Rate at Payment, BTC Amount Received | Shown 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. |
| Paid | Toggle 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 Worked | Time spent on the job. Shown in dashboard stats and exports |
| Miles Driven | Distance 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 fee | Referral 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 fee | Credit card or processor fee. Deducted in the P&L summary |
| Job costs | One 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 |
| Status | Current state: open, in progress, scheduled, on hold, awaiting payment, closed |
| Priority | Low, 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
| Status | Meaning |
|---|---|
| Open | New or unstarted. Counts toward the technician's open workload |
| In Progress | Actively being worked on |
| Scheduled | Has a scheduled date and is waiting for that date |
| On Hold | Paused. Waiting on parts, approval, or the client |
| Awaiting Payment | Work 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 Paid | Work 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. |
| Closed | Work 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:
| Field | Notes |
|---|---|
| Closing comment | Required. Choose Internal (staff only) or Public (client sees it). A public comment triggers a client notification email. |
| Work Type | Required. 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 To | Required. Pre-filled from the ticket if a technician is already assigned. Saved to the ticket on close. |
| Hours Worked | Required โ must be greater than 0. Pre-filled from whatever was already on the ticket. |
| Miles, Fees | Optional 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 close | Enter an amount to log a revenue entry and mark the ticket paid in one step. |
| Payment Method | Optional. 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.
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
- Open the ticket and scroll to the Documents section
- Click Upload Document and select a PDF from your device
- The document is stored securely and listed under the ticket
Sending a document for signing
- After uploading, click Send for Signing next to the document
- Servelo emails the client a unique signing link
- The client opens the link, reviews the PDF, types their full name, draws their signature, and submits
- The signature, signer name, IP address, and timestamp are recorded
- The ticket updates to show the document as signed
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.
- Setting one up: open the Service Plans tab on the Tickets page (or the Service Plans card on a client's page) and click + New Service Plan. Pick the client, give it a title and description, choose how often (weekly, every 2 weeks, monthly, every 2 months, quarterly, every 6 months, yearly, or every so many days), the first visit date and time, and optionally who's assigned, the price per visit, work type, priority, and an end date.
- How visits are added: each visit becomes a normal ticket with status Scheduled, a set number of days before its date (14 by default, change it with Add ticket this many days ahead). It gets the next ticket number, syncs to the assigned person's calendar, and emails them the assignment, like any ticket. The visit time uses your business timezone from Global Settings.
- Monthly-style plans stay on the same day: a plan that starts on the 31st lands on the last day of shorter months, then goes back to the 31st.
- Create next visit now: adds the next visit's ticket right away instead of waiting for it.
- Pause / Resume stops and restarts new visits. Delete (admins) removes the plan; visits already created stay as normal tickets.
- Tickets created by a plan say Service plan visit under their title. They count toward your plan's monthly ticket limit; if the limit is reached, the visit waits until it can be created.
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):
- Remind the assigned person: whoever is assigned to the ticket gets the time, client, phone, address, description, and a link to the ticket.
- Remind the client: the client gets the day and time in your business timezone, what the visit is for, the address, and the technician. Replies go to your business email so they can reschedule. Only clients with Suppress emails unchecked get it.
- It applies to any ticket with status Scheduled, including service plan visits. Each scheduled time is reminded once; moving the visit sends a fresh reminder for the new time.
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.
| Setting | Description |
|---|---|
| Ticket Numbering | Set 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 expenses | When 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 MPG | Your 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.
| Feature | How it works |
|---|---|
| Persistent conversation | The conversation is saved per ticket. Close the panel and reopen it later to continue where you left off. |
| Voice input | Tap 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 Reply | If 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 Plan | Ask 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 Assets | Also 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 conversation | Use 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.
| Action | What it does |
|---|---|
| Add asset | Creates 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 record | Updates 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 contact | Adds a new person to the client's contact list, or updates an existing one's name, email, phone, or role. |
| Update ticket | Changes ticket fields such as title, status, priority, scheduled date, charge, miles driven, or work type without leaving the chat. |
| Create quote | Generates a draft quote (pending estimate) with line items, quantities, and prices. The quote is attached to the ticket immediately. |
| Create invoice | Generates 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 cost | Logs a parts or materials cost entry on the ticket (description, amount, optional vendor). |
| Post comment | Adds 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 ticket | Opens a new linked ticket for a separate issue or return visit, pre-filled with the same client and relevant context. |
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.
| Line | Source |
|---|---|
| Gross Revenue | The Charge field on the ticket |
| Equipment / Parts | Total of all reimbursed expenses linked to this ticket (see Reimbursed Expenses) |
| Customer deposit | If 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 Fee | The Lead Fee field on the ticket |
| Payment Fee | The Payment Fee field on the ticket, auto-calculated from the rate configured under Invoices > Settings > Processing Fees |
| Job Costs | Each 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. Fuel | Calculated from miles driven, MPG, and gas price settings |
| Est. P&L | Gross 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
| Action | Admin | Technician | Viewer |
|---|---|---|---|
| Create ticket | Yes | Yes | No |
| Edit ticket | Yes | Yes | No |
| Add comment | Yes | Yes | No |
| Upload photo | Yes | Yes | No |
| Close ticket | Yes | Yes | No |
| Duplicate ticket | Yes | Yes | No |
| Delete ticket | Yes | No | No |
| View all tickets | Yes | Yes | Yes |