Skip to content

timesheet.saved

Crewsum sends timesheet.saved when a user saves their timesheet without submitting it.

timesheet.saved
  • Clicking Save on the time entry page in the Crewsum app.

Crewsum sends the event only after the change is saved. A request that fails or is rejected sends no event. See Delivery for timing and retries.

data.timesheet is the saved timesheet. timeCards has one entry per project and task, and each timecard’s data has one entry per day of the week.

{
"event": "timesheet.saved",
"data": {
"timesheet": {
"timesheetId": "acme#alex.rivera#20260926_20261002",
"tenantId": "acme",
"userId": "acme#alex.rivera",
"userFullName": "Alex Rivera",
"periodStart": "2026-09-26",
"periodEnd": "2026-10-02",
"submittedAt": null,
"resubmissionAllowed": false,
"supplierId": null,
"supplierName": null,
"timeCards": [
{
"data": {
"Saturday": {
"isoDate": "2026-09-26",
"hours": 0,
"description": null,
"review": null,
"reviewComment": null
},
"Sunday": {
"isoDate": "2026-09-27",
"hours": 0,
"description": null,
"review": null,
"reviewComment": null
},
"Monday": {
"isoDate": "2026-09-28",
"hours": 8,
"description": "On-site survey",
"review": null,
"reviewComment": null
},
"Tuesday": {
"isoDate": "2026-09-29",
"hours": 8,
"description": "On-site survey",
"review": null,
"reviewComment": null
},
"Wednesday": {
"isoDate": "2026-09-30",
"hours": 6,
"description": "On-site survey",
"review": null,
"reviewComment": null
},
"Thursday": {
"isoDate": "2026-10-01",
"hours": 0,
"description": null,
"review": null,
"reviewComment": null
},
"Friday": {
"isoDate": "2026-10-02",
"hours": 0,
"description": null,
"review": null,
"reviewComment": null
}
},
"managerComments": null,
"clientId": "client-ghi123jkl4567890",
"clientName": "Northwind Logistics",
"projectId": "project-mno123pqr4567890",
"projectName": "Warehouse Automation Rollout",
"projectBillingCategory": "BILLABLE",
"reviewedAt": null,
"approverName": null,
"approverEmail": null,
"status": "draft",
"taskId": "task-pqr123stu4567890",
"isDefault": false,
"taskName": "Site Survey",
"taskBillingCategory": "BILLABLE",
"timesheetId": "acme#alex.rivera#20260926_20261002",
"userFullName": "Alex Rivera",
"userId": "acme#alex.rivera",
"clientCustomFields": {
"region": "West"
},
"projectCustomFields": {
"poNumber": "PO-1042"
}
}
],
"userCustomFields": {
"employeeNumber": "E-2041"
}
}
}
}

Timecard status is draft, pending, approved, or rejected. Each day’s review is true (approved), false (rejected), or null (not reviewed).

The public API has no endpoint that saves a draft, so no API call sends this event. Use these endpoints to read timesheets.