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

# Use webhooks

> Set up webhooks to trigger Cassidy Workflows from any external system that can send HTTP requests.

Webhooks let any external system trigger a Cassidy [Workflow](/workflows/overview) by sending an HTTP POST request to a unique URL. This is ideal for connecting Cassidy to apps that don't have a native integration but support outbound webhooks.

## Set up a webhook trigger

<Steps>
  <Step title="Create or open a Workflow">
    Go to the [Workflows](/workflows/overview) page and create a new Workflow, or open an existing one you want to trigger via webhook.

    <Frame>
      <img src="https://mintcdn.com/cassidy/jL2NfbhR1omEZxnz/images/integrations/webhook-trigger-img-0.png?fit=max&auto=format&n=jL2NfbhR1omEZxnz&q=85&s=22a79f121e7688258de0bd5f6ee2de1f" alt="Workflow builder with webhook trigger selected" width="559" height="290" data-path="images/integrations/webhook-trigger-img-0.png" />
    </Frame>
  </Step>

  <Step title="Select Webhook as the trigger type">
    In the trigger configuration panel, select **Webhook** as the trigger type.

    <Frame>
      <img src="https://mintcdn.com/cassidy/jL2NfbhR1omEZxnz/images/integrations/webhook-trigger-img-1.png?fit=max&auto=format&n=jL2NfbhR1omEZxnz&q=85&s=8c431b55a09674f1aea60bf306871b63" alt="Trigger type selection showing the Webhook option" width="636" height="840" data-path="images/integrations/webhook-trigger-img-1.png" />
    </Frame>
  </Step>

  <Step title="Configure response settings">
    Optionally enable **Return results from webhook** if you need to send data back to the calling system. This is useful when the external app expects a response — for example, a chatbot waiting for an AI-generated reply.

    <Frame>
      <img src="https://mintcdn.com/cassidy/jL2NfbhR1omEZxnz/images/integrations/webhook-trigger-img-2.png?fit=max&auto=format&n=jL2NfbhR1omEZxnz&q=85&s=753fdfeb37da8b3fc67fc979351683ee" alt="Webhook trigger settings with Return results and Require API Key options" width="625" height="175" data-path="images/integrations/webhook-trigger-img-2.png" />
    </Frame>
  </Step>

  <Step title="Set up security">
    In **Advanced settings**, optionally enable **Require API Key** to secure your webhook. When enabled, the calling system must include your API key in the request headers.

    <Frame>
      <img src="https://mintcdn.com/cassidy/jL2NfbhR1omEZxnz/images/integrations/webhook-trigger-img-3.png?fit=max&auto=format&n=jL2NfbhR1omEZxnz&q=85&s=38fc94a5a1409dd1268b04dde3591c59" alt="Webhook URL displayed in the trigger settings" width="908" height="334" data-path="images/integrations/webhook-trigger-img-3.png" />
    </Frame>
  </Step>

  <Step title="Copy the webhook URL">
    Copy the unique **Webhook URL** provided by Cassidy. You'll paste this into your external system's webhook configuration.
  </Step>

  <Step title="Send a test event">
    Configure the external system to send a POST request with a JSON body to your webhook URL. Once Cassidy receives the first event, the incoming data fields appear in the trigger settings.
  </Step>

  <Step title="Map event properties to variables">
    Map the incoming event properties to Workflow variables so you can use the data in subsequent actions.

    <Frame>
      <img src="https://mintcdn.com/cassidy/jL2NfbhR1omEZxnz/images/integrations/webhook-trigger-img-4.png?fit=max&auto=format&n=jL2NfbhR1omEZxnz&q=85&s=de97c7c5e2a20730104861340f3e823d" alt="External system sending a test event to the webhook URL" width="621" height="278" data-path="images/integrations/webhook-trigger-img-4.png" />
    </Frame>
  </Step>

  <Step title="Activate the trigger">
    Toggle the trigger to active and continue building the rest of your Workflow. The Workflow now runs automatically whenever the external system sends a request to your webhook URL.

    <Frame>
      <img src="https://mintcdn.com/cassidy/jL2NfbhR1omEZxnz/images/integrations/webhook-trigger-img-5.png?fit=max&auto=format&n=jL2NfbhR1omEZxnz&q=85&s=9df844db32bf1b87b3ffa685c030c851" alt="Event property mapping interface showing incoming fields mapped to Workflow variables" width="568" height="343" data-path="images/integrations/webhook-trigger-img-5.png" />
    </Frame>
  </Step>
</Steps>

<Tip>Test your webhook by sending a sample POST request (using a tool like Postman or cURL) before activating in production. This lets you verify the data mapping without waiting for a real event.</Tip>

## Next steps

<CardGroup cols={2}>
  <Card title="Build a Workflow" icon="diagram-project" href="/workflows/overview">
    Learn how to add actions and logic after your webhook trigger.
  </Card>

  <Card title="Connect non-native apps" icon="code" href="/integrations/connect-non-native-apps">
    Explore other methods for connecting apps without native integrations.
  </Card>
</CardGroup>
