TicketProSupport Desk Docs
v1.0.0 Public Support Open App

Reports & Invoices

Reports show what is happening in the support desk: how many tickets came in, how quickly the team replied, whether SLA promises were met, which customers are using support heavily, and which finance items need attention. Invoices turn support contract and time-entry activity into finance workflows.

Analytics Page

The Analytics page lives at /reports. In plain language, it is the management dashboard for support work. A manager can open one report, choose a date range and filters, then read KPIs, charts, table rows, and action signals for the same slice of data.

Executive Operations Reports

  • /reports/operations-risk summarizes AI usage, knowledge gaps, inbound mail health, automation impact, recovery actions, security posture, deploy smoke, and operations readiness.
  • /reports/ai-trust summarizes AI action volume, failures, applied rate, review status, provider/model usage, and source-bound knowledge search activity.
  • Use these reports before buyer demos, release acceptance, and support leadership reviews.

Top Buttons

ButtonWhat it doesExampleWho normally uses it
Freeze SnapshotSaves the current report numbers so they can be reviewed later without recalculating live data.Freeze the April SLA report before sending it to leadership.Managers, team leads, finance reviewers.
Save Queue ViewSaves the current report filters as a reusable ticket queue view.Save a queue for all high-priority Acme tickets from this month.Agents and leads who repeatedly work the same slice of tickets.
Scheduled ReportsOpens the schedule list where recurring report emails are created and managed.Send a weekly PDF ticket volume report to the support lead.Admins and users with report schedule permission.
Export PDFDownloads the current report as a PDF file.Attach the SLA compliance PDF to a monthly review email.Anyone allowed to export reports.
Export ExcelDownloads the current report as an Excel spreadsheet.Give finance the raw rows for deeper analysis.Finance, operations, reporting users.

Analytics Tabs

TabPlain meaningWhat you read thereExample use
OverviewThe quick summary.The first four KPI cards, filters drawer, shortcuts, and compact charts.A support manager checks if ticket volume is rising this week.
TablesThe detailed rows behind the numbers.Paginated report sections with wrapped text, linked rows, and metrics by date, category, agent, organization, or report-specific group.An agent lead opens the exact tickets behind a spike.
SignalsThe interpretation and next actions.Narrative notes, forecasts, anomalies, and action buttons generated from the current report slice.A manager checks what needs attention before a weekly meeting.

KPI Cards

KPI means key performance indicator. These are the big numbers shown first so a user can understand the report without scrolling through tables. The page shows four primary KPIs in the first row. Extra metrics are kept inside the Filters & shortcuts drawer so the page stays readable.

KPI itemPlain meaningExampleHow to use it
Total TicketsHow many tickets match the selected report and filters.42 tickets from April 1 to April 30.Use this to understand workload size.
Open TicketsTickets still waiting for work or closure.12 open tickets for Acme Labs.Use this to see backlog pressure.
Closed TicketsTickets completed in the selected slice.30 closed tickets this month.Use this to compare completion against intake.
Portal TicketsTickets created through requester or portal channels.18 tickets submitted from the customer portal.Use this to understand customer self-service activity.

The exact KPI names can change by report type. For example, an SLA report may focus on compliance and breaches, while an agent report may show assigned work, resolved work, or satisfaction.

Charts

Charts are visual helpers. They do not replace the tables; they make patterns easier to see. The current page uses compact mixed charts such as column plus line, because that shows both count and trend without taking over the whole page.

ChartPlain meaningExampleWhat to look for
Report TrendShows how the main report numbers move across dates or grouped rows.Ticket count by day with a line for resolved count.Spikes, drops, or steady growth.
Grouped Records / DistributionShows which group contributes the most, with a running total line.Billing Issue, Bug Report, and Access Issue categories.Which category or group is driving workload.
Current vs PreviousCompares this selected period with the previous matching period.This month vs last month for total, open, closed, and portal tickets.Whether the team is improving or load is increasing.

Analytics Filter Fields

Filters answer the question: "Which exact data should this report show?" A blank optional filter means "include everything for that field."

FieldWhat it meansExample valueWhat happens when you use it
ReportThe type of report you want to read.Ticket VolumeChanges the whole report: KPI labels, charts, tables, and signals.
Date FromThe first day included in the report.April 1, 2026Only tickets or records from this date forward are counted.
Date ToThe last day included in the report.April 30, 2026Only tickets or records up to this date are counted.
CategoryLimits the report to one ticket category.Bug ReportUseful when you only want to study one kind of issue.
AgentLimits the report to one assigned internal user.Nida RahmanUseful for workload, performance, or coaching reviews.
LeadLimits the report to tickets or accounts owned by a lead user.Ammar ShahUseful for lead accountability and escalation review.
OrganizationLimits the report to one customer account.Acme LabsUseful for QBRs, contract reviews, and customer health checks.
Context TypeThe type of linked business record attached to tickets.Order, Asset, Subscription, ProjectUse this before choosing a specific context record.
Context RecordThe exact linked record inside the selected context type.ORD-2026-1001 - Acme LabsShows only tickets tied to that specific order, asset, subscription, or similar record.

Filter Buttons

ButtonWhat it meansExample
Apply FiltersRefreshes the report using the selected filters.Choose Acme Labs and click Apply Filters to see only Acme data.
ResetClears filters and returns to the default report state.Remove the Acme-only view and go back to all organizations.
Export PDFExports the currently filtered report to PDF.PDF for a manager review meeting.
Export ExcelExports the currently filtered report to Excel.Spreadsheet for finance or deeper pivot-table analysis.

Report Types

Report typePlain-language purposeExample question it answers
Ticket VolumeShows how much ticket work came in and how it moved through the queue.Did support receive more tickets this week than last week?
Resolution TimeShows how long tickets take to resolve.Which categories take the longest to finish?
SLA ComplianceShows whether response and resolution promises were met.Are we breaching response commitments for urgent tickets?
Agent PerformanceShows agent-level workload and outcome information.Who has too many open tickets or strong satisfaction feedback?
Lead AccountabilityShows ownership and lead-level follow-through.Which lead owns overdue or escalated work?
Team HealthShows operational pressure across the support team.Is one team carrying more backlog than the others?
Organization BurnShows customer usage and support consumption.Which account is using support fastest?
Agent QualityShows quality signals, not just ticket count.Where do reopened tickets, feedback, or review signals point?
Finance & AgingShows finance-facing report signals such as invoice or aging visibility.Which billing items need attention?
Contract UtilizationShows support contract usage and coverage pressure.Is a customer close to using their monthly support allowance?
Status & Incident OperationsShows public status and incident-operation activity.Are status components and incidents being handled cleanly?

Filters & Shortcuts Drawer

The Filters & shortcuts drawer keeps secondary controls out of the way so the page starts with KPIs. It can show schedule counts, saved report views, role packs, recent snapshots, overflow metrics, and the filter form.

ItemPlain meaningExample
SchedulesHow many report schedules exist.3 total schedules.
ActiveHow many schedules are currently allowed to send emails.2 active schedules.
Due TodayHow many schedules are planned to run today.1 schedule due today.
Saved viewsReusable report/filter shortcuts.Executive Queue Health or Finance Pack.
Recent snapshotsFrozen copies of past report results.April SLA Snapshot.

Scheduled Reports Page

The Scheduled Reports page lives at /report-schedules. It is used to send report files to internal users automatically. A schedule is not an instant email button. It is a rule that says: "At this time, generate this report with these filters and email it to these people."

Schedule List

ColumnWhat it showsExampleWhy it matters
ScheduleThe schedule name, report type, output format, and timezone.Acme Weekly Volume Snapshot, Ticket Volume, PDF, Asia/KarachiIdentifies what will be sent.
DeliveryThe daily or weekly timing plus next and last send times.Weekly on Monday at 09:00. Next: 12 May 2026. Last: Never sent.Shows when the email will run.
RecipientsThe internal users selected to receive the report.Admin, Nida Rahman, 2 configured recipients.Shows who will get the attachment.
StatusWhether the schedule is active or inactive.ActiveInactive schedules stay saved but do not send emails.
ActionsEdit or delete controls.Pencil to edit, trash to delete.Use edit for timing or recipient changes; delete to stop and remove the schedule.

Create/Edit Schedule Fields

FieldPlain meaningExample valueRules and effect
Schedule NameA friendly internal name for this recurring email.Acme Weekly Volume SnapshotRequired. Pick a name that tells users what the schedule sends.
Report TypeThe report that will be generated and attached.Ticket VolumeChoose any report type available on the Analytics page, such as Ticket Volume, SLA Compliance, Agent Performance, Finance & Aging, or Contract Utilization.
FormatThe file type attached to the email.PDFRequired. Choose PDF for reading, Excel for spreadsheet analysis.
FrequencyHow often the schedule should run.WeeklyRequired. Daily runs once per day. Weekly runs once per week.
Run Hour (24h)The hour of the day when the schedule should run.9Required. Use 0 to 23. 9 means 09:00, 17 means 17:00.
WeekdayThe day used for weekly schedules.MondayRequired only when Frequency is Weekly. Daily schedules ignore this field.
TimezoneThe timezone used to understand Run Hour.Asia/KarachiRequired. Use a valid PHP timezone such as UTC, Asia/Karachi, or America/New_York.
Date FromThe start date saved inside the report filters.April 1, 2026Optional. If blank, the report service uses its default date window.
Date ToThe end date saved inside the report filters.April 30, 2026Optional. If entered, it must be the same as or after Date From.
Category FilterLimits the scheduled report to one ticket category.Billing IssueOptional. Blank means all categories.
Agent FilterLimits the scheduled report to one assigned internal user.Nida RahmanOptional. Blank means all agents.
Organization FilterLimits the scheduled report to one customer account.Acme LabsOptional. Blank means all organizations.
Context Type FilterLimits the report by linked business record type.OrderOptional. Choose this before choosing a Context Record.
Context Record FilterLimits the report to one exact linked business record.ORD-2026-1001 - Acme LabsOptional. Requires a Context Type. The selected record must be valid for that context type.
RecipientsInternal users who will receive the scheduled report email.Admin, Nida RahmanRequired. At least one user is needed. Users without email addresses are skipped at send time.
Active ScheduleWhether this schedule is allowed to send emails.OnOn means it can send when due. Off keeps the schedule saved but prevents delivery.

Schedule Buttons

ButtonWhat it doesExample
Create ScheduleSaves a new recurring report rule.Create a weekly PDF report for the support lead.
Save ChangesUpdates the existing schedule settings.Change the recipients or run hour.
Delete ScheduleRemoves the schedule and stops future deliveries.Delete an old report that is no longer needed.
Back to ListReturns to the schedule list without using the current form as an action.Go back after reviewing a schedule.

How Scheduled Reports Reach Users

  1. An admin creates a schedule and selects internal recipients.
  2. The app calculates next_run_at from Frequency, Run Hour, Weekday, and Timezone.
  3. Laravel's scheduler runs reports:send-scheduled hourly.
  4. The command finds active schedules where next_run_at is due.
  5. The app generates the report export using the saved filters.
  6. The app emails the selected internal users with the PDF or Excel file attached.
  7. The schedule is updated with last_run_at and the next future next_run_at.
Plain-language example: If Frequency is Weekly, Weekday is Monday, Run Hour is 9, Timezone is Asia/Karachi, and Recipients are Admin and Nida Rahman, the app prepares the selected report every Monday around 09:00 Asia/Karachi time and emails the attachment to Admin and Nida Rahman when the hourly scheduler checks due reports.
Important: Saving a schedule does not immediately send an email. It only saves the rule. Email delivery requires the Laravel scheduler, mail settings, and queue worker configuration to be working on the server.

Command and Server Setup

The command behind scheduled reports is reports:send-scheduled. It is not a web page button. It is a background command that must run on the server.

ItemPlain meaningExample
CommandThe Laravel command that checks due schedules.php artisan reports:send-scheduled
Scheduler entryThe app calls the command hourly from Laravel's scheduler.Schedule::command('reports:send-scheduled')->hourly()
Server cronThe operating system must wake Laravel's scheduler every minute.* * * * * cd /var/www/TicketPro && /usr/bin/php artisan schedule:run
Queue workerNeeded when QUEUE_CONNECTION is database, Redis, or any async queue.php artisan queue:work --tries=3 --timeout=120

Manual Test

Use this test after creating an active schedule with at least one recipient who has an email address:

cd /path/to/TicketPro
php artisan reports:send-scheduled

If a report is due, the command prints a sent count. If it prints Sent 0 scheduled reports., check whether the schedule is active, next_run_at is in the past, recipients have email addresses, and the date/time is correct for the selected timezone.

VPS Setup

  1. SSH into the server.
  2. Go to the app folder and confirm the command works: php artisan reports:send-scheduled.
  3. Find the PHP binary with which php.
  4. Edit cron with crontab -e for the deployment user.
  5. Add the Laravel scheduler cron:
* * * * * cd /var/www/TicketPro && /usr/bin/php artisan schedule:run >> /dev/null 2>&1

Use the real project path and PHP path for the server. This one cron entry also runs SLA checks and ticket automations, so do not remove it after scheduled reports start working.

If the hosting setup cannot run Laravel's scheduler and you only need scheduled reports, use this direct hourly fallback:

0 * * * * cd /var/www/TicketPro && /usr/bin/php artisan reports:send-scheduled >> /var/www/TicketPro/storage/logs/scheduled-reports.log 2>&1

The direct fallback does not run SLA checks or ticket automations. Use schedule:run whenever possible.

Shared Hosting Setup

On cPanel, open Cron Jobs and add a command like this:

/usr/local/bin/php /home/USERNAME/TicketPro/artisan schedule:run >> /home/USERNAME/TicketPro/storage/logs/cron.log 2>&1

Set the timing to every minute if available. If the host only allows every 5 or 15 minutes, use the shortest option. The report can be late by that much, but it should still send after the cron runs.

Direct shared-hosting fallback for scheduled reports only:

/usr/local/bin/php /home/USERNAME/TicketPro/artisan reports:send-scheduled >> /home/USERNAME/TicketPro/storage/logs/scheduled-reports.log 2>&1

On Plesk, create a Scheduled Task, choose "Run a command", and use the same absolute PHP path plus the absolute artisan path.

Do not expose this command as a public URL. If a shared host cannot run cron, ask the host to enable cron or move the app to a VPS. A public web route for background commands can be abused unless it is protected very carefully.

Production Checklist

CheckWhy it mattersExample or fix
APP_URLLinks inside emails need the correct live URL.APP_URL=https://support.example.com
Mail settingsReports are delivered by email.Set MAIL_MAILER, host, port, username, password, encryption, and MAIL_FROM_ADDRESS.
Queue workerQueued notifications will sit in the queue until a worker runs.Use Supervisor, systemd, hosting worker, or php artisan queue:work.
Cron logsShows whether the server is actually running the scheduler.Temporarily log to storage/logs/cron.log.
Operations heartbeatConfirms the app saw the command run.Operations Center should show a recent reports:send-scheduled heartbeat.
Recipient emailsUsers without email addresses are skipped.Open Team Directory and confirm each recipient has an email address.

Troubleshooting Delivery

SymptomLikely reasonWhat to check
Sent 0 scheduled reports.No active schedule is due yet.Check Active Schedule, next_run_at, Frequency, Run Hour, Weekday, and Timezone.
Command runs but no email arrives.Mail or queue is not processing.Check SMTP settings, spam folder, storage/logs/laravel.log, failed jobs, and queue:work.
Report sends at the wrong local time.The schedule timezone or server timezone is misunderstood.Use a PHP timezone such as Asia/Karachi and remember Run Hour uses 0 to 23.
Shared hosting sends late.The host does not allow every-minute cron.Use the shortest cron interval available or move scheduling to a VPS.
Operations heartbeat is stale.The scheduler cron is not running.Run php artisan schedule:run manually and fix the server cron path.

Invoices

  • /invoices lists finance workflows.
  • Draft invoices can be generated from support contracts.
  • Invoice detail supports board movement, workflow actions, adjustments, disputes, and export to PDF or XLSX.
  • Time entries, support contracts, line item sources, rates, and overages feed invoice calculations.

Adjustments and Disputes

Invoices can receive adjustment requests and dispute records. Adjustments can be approved or rejected, and disputes can be resolved. These workflows preserve finance accountability and keep billing decisions attached to the invoice.

  • Limit report export permission to trusted users.
  • Use export approval for sensitive organizations when required by governance policy.
  • Review report schedules after user changes so inactive users are not still recipients.
  • Validate billable hourly rates, internal cost rates, and overage rates on contracts before drafting invoices.