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

# Shortcut Webhook Setup Guide

> Configure Shortcut 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/shortcut_pm/guides/connector-profile/api-key" icon="https://stackone-logos.com/api/shortcut/filled/svg" horizontal>
        Shortcut - 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/shortcut_pm/guides/link-account/api-key" icon="https://stackone-logos.com/api/shortcut/filled/svg" horizontal>
        Shortcut - API Key
      </Card>
    </Columns>
  </Step>
</Steps>

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

  <p>When the account is connected, StackOne registers a single workspace-wide Outgoing Webhook in Shortcut and removes it automatically on disconnect. Shortcut does not support subscribing to individual event types — the one registration receives every change the workspace fires — so StackOne groups events by resource: enabling a resource-level event below delivers ALL of that resource's changes (create, update, and delete), with the concrete change type carried in each delivered event (for example story.create, story.update, or story.delete).</p>
</section>

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

  <p>Each event below covers the full create/update/delete family of its resource.</p>

  <Steps>
    <Step title="Core events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Shortcut fires webhooks for Stories and Epics, including their comments and tasks.</p>

        <ul>
          <li><strong>Story Events</strong> — story.create / story.update / story.delete (updates include workflow-state moves, owners, labels, iterations, and estimates).</li>
          <li><strong>Epic Events</strong> — epic.create / epic.update / epic.delete.</li>
          <li><strong>Story Comment Events</strong> — story-comment.create / story-comment.update / story-comment.delete.</li>
          <li><strong>Story Task Events</strong> — story-task.create / story-task.update / story-task.delete.</li>
          <li><strong>Epic Comment Events</strong> — epic-comment.create / epic-comment.update / epic-comment.delete.</li>
        </ul>
      </div>
    </Step>

    <Step title="Catch-all">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>A safety net so no delivery is lost.</p>

        <ul>
          <li><strong>Other Events</strong> — any delivery whose entity type is not covered above, such as threaded comments, VCS integration events (branches and pull requests from a connected GitHub, GitLab, or Bitbucket), or a type Shortcut introduces in the future; the delivered event carries the real type.</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

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

  <p>How Shortcut delivers events to StackOne.</p>

  <Steps>
    <Step title="Key points">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>What to expect from delivered events.</p>

        <ul>
          <li>Shortcut deliveries carry no event-name field — StackOne derives the event type from the primary action's entity type and verb (entity\_type + "." + action, e.g. story.update).</li>
          <li>Each delivery contains an actions array (what changed) and a references array (related entities); the full envelope is forwarded in the event data.</li>
          <li>Other entities (labels, iterations, objectives, categories, projects, docs) never fire webhooks of their own — they appear inside story and epic events.</li>
          <li>Rapid changes made in quick succession are merged into fewer deliveries, so one event can carry several related changes.</li>
          <li>Deliveries are signed with HMAC-SHA-256 (Payload-Signature header) using a secret StackOne registers automatically — no manual verification needed.</li>
        </ul>
      </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.
