Vacation Tracker Docs
Zapier Integration

Webhook Payloads

Complete payload schema for Zapier webhook deliveries, including enrichment fields and per-event differences.

Every Zapier trigger delivers an enriched leave request payload as a JSON object. The payload includes the core leave request data plus resolved names and emails for the employee, leave type, and approver.

Sample payload

This is a typical payload for a LEAVE_REQUEST_APPROVED event:

{
  "id": "leaveRequest-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "companyId": "company-1234-5678-abcd",
  "userId": "user-abcd-1234-5678",
  "leaveTypeId": "leaveType-c3d4e5f6-a7b8-9012-cdef-123456789012",
  "startDate": "2026-03-20",
  "endDate": "2026-03-20",
  "isPartDay": false,
  "status": "APPROVED",
  "workingDays": 1,
  "calendarDays": 1,
  "daysList": [
    {
      "day": "2026-03-20",
      "leaveHours": 8,
      "workingHoursInDay": 8
    }
  ],
  "totalThisYear": 1,
  "totalNextYear": 0,
  "created": "2026-03-20T12:00:00.000Z",
  "teamId": "team-d4e5f6a7-b8c9-0123-defa-234567890123",
  "locationId": "location-e5f6a7b8-c9d0-1234-efab-345678901234",
  "leavePolicyId": "location-e5f6a7b8-c9d0-1234-efab-345678901234#leaveType-c3d4e5f6-a7b8-9012-cdef-123456789012",
  "wasApprovedBeforeAction": false,
  "autoApproved": false,
  "approverId": "email-f6a7b8c9-d0e1-2345-fabc-456789012345",
  "approverName": "John Manager",
  "approverEmail": "john.manager@example.com",
  "userName": "Jane Doe",
  "userEmail": "jane.doe@example.com",
  "leaveTypeName": "Paid Time Off"
}

Core fields

These fields are always present in the payload:

FieldTypeDescription
idstringUnique leave request ID
companyIdstringCompany ID
userIdstringID of the employee who owns the leave request
leaveTypeIdstringID of the leave type
startDatestringStart date in YYYY-MM-DD format
endDatestringEnd date in YYYY-MM-DD format
isPartDaybooleanWhether this is a partial day leave
statusstringCurrent status: OPEN, APPROVED, DENIED, CANCELLED, or DELETED
workingDaysnumberNumber of working days consumed
calendarDaysnumberTotal calendar days of the leave
daysListarrayBreakdown of each day with day, leaveHours, and workingHoursInDay
totalThisYearnumberDays consumed in the current year
totalNextYearnumberDays consumed in the next year (for cross-year leaves)
createdstringISO 8601 timestamp when the request was created
teamIdstringID of the employee's team/department
locationIdstringID of the employee's location
leavePolicyIdstringCompound ID of the leave policy (locationId#leaveTypeId)

Enrichment fields

These fields are added by looking up related entities. If a lookup fails, the field is omitted rather than causing the webhook to fail.

FieldTypeDescription
userNamestringFull name of the employee
userEmailstringEmail address of the employee
userEmployeeIdstringEmployee ID (if set)
leaveTypeNamestringName of the leave type (e.g., "Paid Time Off")
approverNamestringFull name of the approver (when applicable)
approverEmailstringEmail address of the approver (when applicable)
approverEmployeeIdstringEmployee ID of the approver (when applicable)
wasApprovedBeforeActionbooleanWhether the request was in an approved state before this event occurred

wasApprovedBeforeAction logic

This field helps you determine the prior state of a leave request:

For cancelled requests (LEAVE_REQUEST_CANCELLED):

  • true — the request was approved before it was cancelled
  • false — the request was still pending when it was cancelled

For all other events:

  • true — the request was approved before this action (e.g., an approved request was edited)
  • false — the request was not previously approved
EventTypical value
LEAVE_REQUEST_CREATEDfalse
LEAVE_REQUEST_ADDEDfalse
LEAVE_REQUEST_APPROVEDfalse
LEAVE_REQUEST_DENIEDfalse
LEAVE_REQUEST_UPDATEDtrue
LEAVE_REQUEST_CANCELLEDtrue
LEAVE_REQUEST_DELETEDfalse

Per-event field differences

Not all fields are present in every event. The key differences:

LEAVE_REQUEST_CREATED

Does not include approver fields (approverId, approverName, approverEmail) or autoApproved, because the request has not entered the approval workflow yet.

LEAVE_REQUEST_ADDED

Does not include approver fields. Includes autoApproved: true.

LEAVE_REQUEST_DELETED

Does not include approver fields.

All other events

Include the full set of fields, including approver information.

Stripped fields

The following fields from the internal leave request are never included in webhook payloads, for privacy and relevance:

FieldReason
reasonMay contain sensitive information (e.g., medical details)
statusReasonInternal manager note
cancelledBeforeReviewInternal flag (consumed to compute wasApprovedBeforeAction)
originalVersionInternal previous-state snapshot
errorsInternal error tracking
isResentInternal resend flag
resentLeaveRequestIdInternal reference
hasWorkingHoursScheduleInternal scheduling flag
leaveDaysListDeprecated (superseded by daysList)
partDayStartHourInternal hour value
partDayEndHourInternal hour value
isEditedInternal edit tracking flag

On this page