Connect

LeaveCalc with Zapier

Send approved time off to a Google Sheet or to Slack, or add a new hire to LeaveCalc from a form. You do not need a special LeaveCalc app in Zapier: its own Webhooks step does it.

On this page

Before you start

  • Webhooks by Zapier is a premium Zapier app. Zapier lists it for the Professional, Team and Enterprise plans, so check that your plan has it (Zapier help, fetched 2026-10-02).
  • To receive from LeaveCalc you use the trigger Webhooks by Zapier, Catch Hook. To send to LeaveCalc you use the action Webhooks by Zapier, Custom Request with a token.
  • To send to LeaveCalc you need a token that can read and change: Settings, Integrations, API tokens, Create token. Copy it when it is shown: it is shown once.
  • A LeaveCalc app inside Zapier is prepared and is not listed yet. When it is, these recipes get shorter. Until then this works today.

Recipe 1: approved time off to a Google Sheet row

  1. In Zapier choose Create Zap. For the trigger choose Webhooks by Zapier and the event Catch Hook. Zapier shows a Custom Webhook URL that looks like https://hooks.zapier.com/hooks/catch/1234567/abcdefg/. Copy it.
  2. In LeaveCalc add a webhook with that address and tick A request is approved. Choose Send test.
  3. Back in Zapier choose Test trigger. The first example is the test message. Approve a real request in LeaveCalc (or make a test one and approve it) and test the trigger again: you now see fields such as kind, data request employee_name, data request start_date, data request end_date and data request days.
  4. Add an action: Google Sheets, the action that creates a spreadsheet row. Choose the sheet and fill the columns from the fields above: employee name, start date, end date, days, leave type (data request policy_name).
  5. Turn the Zap on. Each approval now adds a row.
If you let the webhook send everything, add a Filter step: continue only if kind exactly matches request.approved.

Recipe 2: approved time off to a Slack message

  1. Do steps 1 to 3 of recipe 1 (the same trigger works).
  2. Add an action: Slack, the action that sends a channel message. Choose the channel.
  3. Write the message with fields from the trigger, for example: {{data request employee_name}} is off from {{data request start_date}} to {{data request end_date}} ({{data request policy_name}}).
  4. Turn the Zap on.
LeaveCalc can also post to Slack by itself: under Settings, Integrations, an owner can add the LeaveCalc Slack app (Add to Slack, with /timeoff and Approve and Deny buttons) or paste an incoming webhook address for Slack or Microsoft Teams. Use this recipe when you want your own wording or a different channel for each leave type.

Recipe 3: a new hire from a form to LeaveCalc

  1. In Zapier the trigger is your form, for example Google Forms, New Response in Spreadsheet or Typeform. Test it so Zapier has a sample answer.
  2. Add an action: Webhooks by Zapier, event Custom Request.
  3. Method POST. URL https://leavecalc.com/api/v1/ext/employees.
  4. Data (JSON), with the form fields in the placeholders:
    Data
    {
      "name": "{{name}}",
      "email": "{{email}}",
      "start_date": "{{start date}}",
      "department": "{{department}}"
    }
  5. Headers: Authorization = Bearer lc_... (your token) and Content-Type = application/json.
  6. Test the action. You should see the new person with an id. Turn the Zap on.

If someone with that email is already on the team, LeaveCalc answers 409 email_exists and does not add them twice, so it is safe to run again. If your plan is full the answer is 402 seat_limit.

What LeaveCalc answers
HTTP 201 Created
{
  "id": 3,
  "name": "Priya Shah",
  "email": "priya.shah@example.com",
  "department": "Clinic",
  "location_id": null,
  "location": null,
  "start_date": "2026-10-19",
  "end_date": null,
  "hours_per_week": 24.0,
  "working_days": [
    "mon",
    "tue",
    "wed"
  ],
  "status": "active",
  "created_at": "2026-10-05T14:03:11Z",
  "updated_at": "2026-10-05T14:03:11Z"
}

If something does not work

  • In LeaveCalc open the Log of the webhook. It shows each message, whether Zapier answered, and Send again.
  • The address must be the one Zapier shows for this Zap. If you copy the address of another Zap, messages go there.
  • A webhook that fails for 3 days is switched off and the owners get an email. Turn it on again in Settings after you fix it.
  • A 401 from the API means the token is wrong or was removed. A 403 means it can only read.

Also: API reference · Make · AI assistants (MCP) · SAML single sign-on