> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Clockify Webhook Setup Guide

> Configure Clockify to deliver events to StackOne.

## Prerequisites

Before continuing, you should have already completed the following for this connector:

<Steps>
  <Step title="Configure the Connector">
    Enable the connector and set up its connector profile in your project. See <a href="/guides/explore-connectors">Managing Connectors</a>.

    <Columns cols={2}>
      <Card title="Connector Profile" href="/connectors/clockify/guides/connector-profile/api-key" icon="https://stackone-logos.com/api/clockify/filled/png" horizontal>
        Clockify - API Key
      </Card>
    </Columns>
  </Step>

  <Step title="Link an Account">
    Connect an account using <a href="/guides/embedding-stackone-hub">StackOne Hub</a> or <a href="/guides/auth-link">Auth Link</a>.

    <Columns cols={2}>
      <Card title="Link Account" href="/connectors/clockify/guides/link-account/api-key" icon="https://stackone-logos.com/api/clockify/filled/png" horizontal>
        Clockify - API Key
      </Card>
    </Columns>
  </Step>
</Steps>

<section data-guide-section data-guide-scopes="">
  <h2>How Clockify webhooks are set up</h2>

  <p>Clockify webhooks are provisioned automatically when you connect your account — there is nothing to configure in Clockify and no URL to paste. StackOne registers one Clockify webhook per event you enable, pointing at StackOne's receiver.</p>

  <ul>
    <li>No callback URL to copy, and no verification step to complete.</li>
    <li>Webhooks are created on the account's default workspace.</li>
    <li>Only the events you enable in StackOne are registered in Clockify and delivered.</li>
  </ul>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Before you connect</h2>

  <p>Make sure the API key you connect with can access the resources you want events for, and that your plan allows enough webhooks.</p>

  <ul>
    <li>Use an API key belonging to a workspace member with access to the relevant resources; some events (for example project or user changes) require workspace admin rights.</li>
    <li>Clockify limits webhooks per workspace by plan — the Free plan allows up to 3. Enable only the events you need so provisioning stays within your plan's limit.</li>
  </ul>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Available webhook events</h2>

  <p>The following Clockify events can be enabled. Only events selected in StackOne are registered in Clockify and delivered — Clockify will not send events you have not subscribed to.</p>

  <Steps>
    <Step title="Client events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on clients.</p>

        <ul>
          <li><strong>New Client</strong> (`NEW_CLIENT`) — Fired when a client is created</li>
          <li><strong>Client Updated</strong> (`CLIENT_UPDATED`) — Fired when a client is updated</li>
          <li><strong>Client Deleted</strong> (`CLIENT_DELETED`) — Fired when a client is deleted</li>
        </ul>
      </div>
    </Step>

    <Step title="Project events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on projects.</p>

        <ul>
          <li><strong>New Project</strong> (`NEW_PROJECT`) — Fired when a project is created</li>
          <li><strong>Project Updated</strong> (`PROJECT_UPDATED`) — Fired when a project is updated</li>
          <li><strong>Project Deleted</strong> (`PROJECT_DELETED`) — Fired when a project is deleted</li>
        </ul>
      </div>
    </Step>

    <Step title="Task events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on tasks within projects.</p>

        <ul>
          <li><strong>New Task</strong> (`NEW_TASK`) — Fired when a task is created on a project</li>
          <li><strong>Task Updated</strong> (`TASK_UPDATED`) — Fired when a task is updated</li>
          <li><strong>Task Deleted</strong> (`TASK_DELETED`) — Fired when a task is deleted</li>
        </ul>
      </div>
    </Step>

    <Step title="Tag events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on tags.</p>

        <ul>
          <li><strong>New Tag</strong> (`NEW_TAG`) — Fired when a tag is created</li>
          <li><strong>Tag Updated</strong> (`TAG_UPDATED`) — Fired when a tag is updated</li>
          <li><strong>Tag Deleted</strong> (`TAG_DELETED`) — Fired when a tag is deleted</li>
        </ul>
      </div>
    </Step>

    <Step title="Time entry events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on time entries.</p>

        <ul>
          <li><strong>New Time Entry</strong> (`NEW_TIME_ENTRY`) — Fired when a time entry is created</li>
          <li><strong>Time Entry Updated</strong> (`TIME_ENTRY_UPDATED`) — Fired when a time entry is updated</li>
          <li><strong>Time Entry Deleted</strong> (`TIME_ENTRY_DELETED`) — Fired when a time entry is deleted</li>
          <li><strong>Time Entry Split</strong> (`TIME_ENTRY_SPLIT`) — Fired when a time entry is split into multiple entries</li>
          <li><strong>Time Entry Restored</strong> (`TIME_ENTRY_RESTORED`) — Fired when a deleted time entry is restored</li>
        </ul>
      </div>
    </Step>

    <Step title="Timer events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on the running timer.</p>

        <ul>
          <li><strong>Timer Started</strong> (`NEW_TIMER_STARTED`) — Fired when a running timer is started</li>
          <li><strong>Timer Stopped</strong> (`TIMER_STOPPED`) — Fired when a running timer is stopped</li>
        </ul>
      </div>
    </Step>

    <Step title="Time off and balance events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on time off requests and balances (requires the Time Off paid feature).</p>

        <ul>
          <li><strong>Time Off Requested</strong> (`TIME_OFF_REQUESTED`) — Fired when a time off request is submitted</li>
          <li><strong>Time Off Request Approved</strong> (`TIME_OFF_REQUEST_APPROVED`) — Fired when a time off request is approved</li>
          <li><strong>Time Off Request Rejected</strong> (`TIME_OFF_REQUEST_REJECTED`) — Fired when a time off request is rejected</li>
          <li><strong>Time Off Request Updated</strong> (`TIME_OFF_REQUEST_UPDATED`) — Fired when a time off request is updated</li>
          <li><strong>Time Off Request Withdrawn</strong> (`TIME_OFF_REQUEST_WITHDRAWN`) — Fired when a time off request is withdrawn</li>
          <li><strong>Balance Updated</strong> (`BALANCE_UPDATED`) — Fired when a time off balance changes</li>
        </ul>
      </div>
    </Step>

    <Step title="Approval events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on timesheet approval requests (requires the Approvals paid feature).</p>

        <ul>
          <li><strong>New Approval Request</strong> (`NEW_APPROVAL_REQUEST`) — Fired when an approval request is submitted</li>
          <li><strong>Approval Request Status Updated</strong> (`APPROVAL_REQUEST_STATUS_UPDATED`) — Fired when an approval request is approved, rejected, or withdrawn</li>
        </ul>
      </div>
    </Step>

    <Step title="Expense events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on expenses (requires the Expenses paid feature).</p>

        <ul>
          <li><strong>Expense Created</strong> (`EXPENSE_CREATED`) — Fired when an expense is created</li>
          <li><strong>Expense Updated</strong> (`EXPENSE_UPDATED`) — Fired when an expense is updated</li>
          <li><strong>Expense Deleted</strong> (`EXPENSE_DELETED`) — Fired when an expense is deleted</li>
          <li><strong>Expense Restored</strong> (`EXPENSE_RESTORED`) — Fired when a deleted expense is restored</li>
        </ul>
      </div>
    </Step>

    <Step title="Invoice events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on invoices (requires the Invoicing paid feature).</p>

        <ul>
          <li><strong>New Invoice</strong> (`NEW_INVOICE`) — Fired when an invoice is created</li>
          <li><strong>Invoice Updated</strong> (`INVOICE_UPDATED`) — Fired when an invoice is updated</li>
        </ul>
      </div>
    </Step>

    <Step title="Scheduling events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on scheduled assignments (requires the Scheduling paid feature).</p>

        <ul>
          <li><strong>Assignment Created</strong> (`ASSIGNMENT_CREATED`) — Fired when a scheduled assignment is created</li>
          <li><strong>Assignment Updated</strong> (`ASSIGNMENT_UPDATED`) — Fired when a scheduled assignment is updated</li>
          <li><strong>Assignment Deleted</strong> (`ASSIGNMENT_DELETED`) — Fired when a scheduled assignment is deleted</li>
          <li><strong>Assignment Published</strong> (`ASSIGNMENT_PUBLISHED`) — Fired when scheduled assignments are published</li>
        </ul>
      </div>
    </Step>

    <Step title="Rate events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on billable and cost rates.</p>

        <ul>
          <li><strong>Billable Rate Updated</strong> (`BILLABLE_RATE_UPDATED`) — Fired when a billable rate is changed</li>
          <li><strong>Cost Rate Updated</strong> (`COST_RATE_UPDATED`) — Fired when a cost rate is changed</li>
        </ul>
      </div>
    </Step>

    <Step title="Workspace user events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on workspace membership and user profiles.</p>

        <ul>
          <li><strong>Users Invited to Workspace</strong> (`USERS_INVITED_TO_WORKSPACE`) — Fired when users are invited to the workspace</li>
          <li><strong>Limited Users Added to Workspace</strong> (`LIMITED_USERS_ADDED_TO_WORKSPACE`) — Fired when limited users are added to the workspace</li>
          <li><strong>User Joined Workspace</strong> (`USER_JOINED_WORKSPACE`) — Fired when a user accepts an invite and joins the workspace</li>
          <li><strong>User Activated</strong> (`USER_ACTIVATED_ON_WORKSPACE`) — Fired when a user is activated on the workspace</li>
          <li><strong>User Deactivated</strong> (`USER_DEACTIVATED_ON_WORKSPACE`) — Fired when a user is deactivated on the workspace</li>
          <li><strong>User Removed</strong> (`USER_DELETED_FROM_WORKSPACE`) — Fired when a user is removed from the workspace</li>
          <li><strong>User Email Changed</strong> (`USER_EMAIL_CHANGED`) — Fired when a user's email address changes</li>
          <li><strong>User Updated</strong> (`USER_UPDATED`) — Fired when a user's profile is updated</li>
        </ul>
      </div>
    </Step>

    <Step title="User group events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Events on user groups.</p>

        <ul>
          <li><strong>User Group Created</strong> (`USER_GROUP_CREATED`) — Fired when a user group is created</li>
          <li><strong>User Group Updated</strong> (`USER_GROUP_UPDATED`) — Fired when a user group is updated</li>
          <li><strong>User Group Deleted</strong> (`USER_GROUP_DELETED`) — Fired when a user group is deleted</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Delivery format</h2>

  <p>Details of how Clockify delivers events to StackOne.</p>

  <Steps>
    <Step title="JSON payloads">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Clockify delivers each event as its own HTTP POST with a JSON body containing the affected entity (its `id` is used as the event ID). Clockify sends one event per request; deliveries are not batched.</p>
      </div>
    </Step>

    <Step title="Signature">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Clockify signs each delivery with a `clockify-signature` header (an HMAC of the payload using the subscription's signing secret).</p>
      </div>
    </Step>
  </Steps>
</section>

## Verify

Your Connector should now be able to receive and process events. Try triggering an event and you should see an Event appear in the Connector logs.
