> ## 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.

# Workable Webhook Setup Guide

> Configure Workable 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="/connect/managing-connectors/overview">Managing Connectors</a>.

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

  <Step title="Link an Account">
    Connect an account using <a href="/embed/account-linking/overview">StackOne Hub</a> or <a href="/embed/account-linking/auth-link">Auth Link</a>.

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

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

  <p>There is no manual webhook setup in Workable — it is fully automatic. On connection, StackOne calls Workable's `POST /spi/v3/subscriptions` endpoint once for each event you enable, using a delivery URL unique to this connection that carries a secret token. Workable then sends one HTTPS POST per event, StackOne routes it to your integration, and only the events you enable are dispatched. Disconnecting the account deletes the subscriptions.</p>

  <ul>
    <li>No callback URL to copy, and no verification step to complete.</li>
    <li>Connect with a Workable account whose API token has the relevant read scopes (`r_candidates` for candidate events, `r_employees` for employee events).</li>
    <li>Only the events you enable in StackOne are subscribed in Workable and delivered.</li>
  </ul>
</section>

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

  <p>The following Workable events can be enabled. Only events selected in StackOne are subscribed in Workable and delivered.</p>

  <Steps>
    <Step title="Review candidate events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fired for candidates in your recruiting pipeline (require the `r_candidates` scope).</p>

        <ul>
          <li><strong>Candidate Created</strong> (`candidate_created`) — Fired when a new candidate is created.</li>
          <li><strong>Candidate Moved</strong> (`candidate_moved`) — Fired when a candidate is moved to a different stage.</li>
        </ul>
      </div>
    </Step>

    <Step title="Review employee events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fired for employees in Workable HR (require the `r_employees` scope).</p>

        <ul>
          <li><strong>Employee Created</strong> (`employee_created`) — Fired when an employee is created.</li>
          <li><strong>Employee Updated</strong> (`employee_updated`) — Fired when an employee record is modified.</li>
          <li><strong>Employee Published</strong> (`employee_published`) — Fired when an employee record is published.</li>
          <li><strong>Onboarding Completed</strong> (`onboarding_completed`) — Fired when an employee completes onboarding.</li>
          <li><strong>Time Off Updated</strong> (`timeoff_updated`) — Fired when a time off request is approved or reverted (delivered with an `event_type` of `timeoff_request_approved` or `timeoff_request_reverted`). Requires Workable's paid Time Off module.</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Inspect the delivery format</h2>

  <p>Workable sends each event as a single HTTPS POST with a JSON body. Top-level fields are `id` (the candidate or employee id), `event_type` (e.g. `candidate_moved`), `resource_type` (`candidate`/`employee`), `fired_at` (ISO 8601 event time) and `data` (the full resource). StackOne maps `event_type` to the event type, `id` to the record id and `fired_at` to the event timestamp, and passes the full body through as the event data. A single change can produce more than one event (for example, creating an employee fires both `employee_created` and `employee_updated`), and Workable retries failed deliveries, so design your integration to handle duplicate deliveries idempotently using the record id.</p>
</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.
