ConnectWise Manage Time Entries — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ConnectWise Manage Time Entries (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Time entries in ConnectWise PSA track time spent on tickets, projects, and other activities. Accurate time tracking is essential for billing, resource management, and profitability analysis. This skill covers time entry CRUD operations, work types, work roles, billing settings, and approval workflows.
note (cw_add_ticket_note); only billable duration belongs in a time entry. Use connectwise-psa-tickets.
ProjectTicket, so theticket has to be located first; use connectwise-psa-projects.
Base: /time/entriesTime can be logged against different record types:
| Charge To Type | Description |
|---|---|
ServiceTicket | Time against service tickets |
ProjectTicket | Time against project tickets |
ChargeCode | Time against charge codes (internal) |
Activity | Time against activities |
See references/fields.md for the complete time entry field reference.
Work types categorize the nature of work performed.
| Type | Description | Typical Billing |
|---|---|---|
| Regular | Normal work hours | Billable |
| Overtime | After-hours work | 1.5x rate |
| Training | Training time | Non-billable |
| Travel | Travel time | Varies |
| Remote | Remote support | Billable |
| On-site | On-site work | Billable |
| Administrative | Admin tasks | Non-billable |
Query GET /time/workTypes for the configured list.
Work roles determine billing rates based on skill level.
| Role | Description | Typical Rate |
|---|---|---|
| Level 1 Tech | Help desk | $75-100/hr |
| Level 2 Tech | Desktop support | $100-125/hr |
| Level 3 Tech | Systems admin | $125-150/hr |
| Engineer | Senior engineer | $150-200/hr |
| Consultant | Expert consultant | $200-250/hr |
| Project Manager | PM work | $125-175/hr |
Query GET /time/workRoles for the configured list.
| Option | Description |
|---|---|
Billable | Time is billable at standard rate |
DoNotBill | Time excluded from billing |
NoCharge | Time shows on invoice at $0 |
NoDefault | Use ticket/agreement default |
Precedence order, first match wins:
billableOption (if set)billTime settingPOST /time/entries
Content-Type: application/json
{
"chargeToId": 54321,
"chargeToType": "ServiceTicket",
"member": {"id": 123},
"timeStart": "2024-02-15T09:00:00Z",
"timeEnd": "2024-02-15T10:30:00Z",
"workType": {"id": 1},
"workRole": {"id": 2},
"billableOption": "Billable",
"notes": "Diagnosed email delivery issue. Identified blocked sender.",
"addToDetailDescriptionFlag": true
}actualHours can be used instead of timeStart/timeEnd. Logging against a ChargeCode requires the company field explicitly, since there's no ticket to infer it from. See references/api.md for the actual-hours and charge-code variants plus get/update/delete/search examples.
OpenSubmittedApproved or Rejected (with internalNotes explaining what to fix)BilledApprove/reject and bulk-approval requests, plus time sheet get/submit requests, are in references/api.md.
Common query conditions for time entries:
Time entries for a ticket:
conditions=chargeToId=54321 and chargeToType="ServiceTicket"Time entries by member:
conditions=member/id=123Time entries by date range:
conditions=timeStart>=[2024-02-01] and timeStart<[2024-03-01]Unbilled time entries:
conditions=status="Open" and billableOption="Billable"Approved time waiting for billing:
conditions=status="Approved" and billableOption="Billable"Charge codes are used for non-ticket time (meetings, training, etc.). Query GET /time/chargeCodes for the configured list.
| Code | Description | Billable |
|---|---|---|
| MTNG | Internal meetings | No |
| TRNG | Training | No |
| ADMIN | Administrative | No |
| PTO | Paid time off | No |
| PROJ | Project work | Yes |
| ONCALL | On-call time | Varies |
DELETE /time/entries/{id} fails once status is Billed; you must adjust the invoice instead.ServiceTicket/ProjectTicket entries infer the company from the ticket.NoDefault value falls through to the ticket, then the agreement, then the company.Open -> Submitted -> Approved/Rejected; time entries go Open -> Approved/Rejected -> Billed (no Submitted state). Approving a time sheet does not retroactively change the status of every entry inside it. See references/api.md for both status tables.See references/errors.md for the complete error reference.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.