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

# Outbound Webhooks

> Send data to external systems in real time.

**Outbound Webhooks** allow Inflection to send data to external systems in real time. Use them to enrich contact records with third-party data, trigger actions in other tools, or connect Inflection to any service that accepts HTTP requests, all without writing code.

Outbound Webhooks support GET, POST, PUT, PATCH, DELETE, and HEAD request methods, and can be used as a step in any journey to automate data flow at scale.

<AccordionGroup>
  <Accordion title="View and Manage Webhooks">
    Navigate to **Outbound Webhooks** from the left sidebar to view all configured webhooks.

    <img src="https://mintcdn.com/inflection-4b2c0de4/N4VRWuxaoalXbMy_/images/connections/outbound-webhooks/01.png?fit=max&auto=format&n=N4VRWuxaoalXbMy_&q=85&s=a05e24986bc9db7f8468f5a24afe1090" alt="Outbound Webhooks entry in the left sidebar" width="149" height="468" data-path="images/connections/outbound-webhooks/01.png" />

    The listing page displays each webhook's name, request method, response mapping status, creator, and creation date. Use the search box to find a webhook by name, or filter by request type, creator, or date range.
  </Accordion>

  <Accordion title="Create a New Webhook">
    There are two ways to create a new outbound webhook:

    * Click **Outbound Webhooks** in the left sidebar, then click **New Outbound Webhook** on the listing page.
    * Navigate to a folder and create a new 'Outbound webhook' directly in the folder
  </Accordion>

  <Accordion title="Configure the Webhook">
    1. Enter a name and description for the webhook.
    2. Select a request method (GET, POST, PUT, PATCH, DELETE, or HEAD).
    3. Enter the destination URL. Use the variable picker to insert fields directly into the URL if needed.
    4. Add any custom request headers. For example, to authenticate with an external service, add an **Authorization** header with a Bearer token.
    5. Click **Save Draft**

           <img src="https://mintcdn.com/inflection-4b2c0de4/N4VRWuxaoalXbMy_/images/connections/outbound-webhooks/02.png?fit=max&auto=format&n=N4VRWuxaoalXbMy_&q=85&s=dbaade54e65b39521a5324148dce89bd" alt="Configure tab with request method, destination URL, and custom headers" width="1829" height="590" data-path="images/connections/outbound-webhooks/02.png" />

    ### Import From cURL

    Instead of manually configuring a webhook, import a cURL command to auto-populate the method, URL, headers, and payload.

    1. Click **Import from cURL** on the **Configure** tab.
    2. Paste a cURL command into the text area and click **Parse**.
    3. Review the parsed preview showing the method, URL, headers, and body.

           <img src="https://mintcdn.com/inflection-4b2c0de4/N4VRWuxaoalXbMy_/images/connections/outbound-webhooks/03.png?fit=max&auto=format&n=N4VRWuxaoalXbMy_&q=85&s=90c7b3a97ecd4b3acd45570d89586527" alt="Import from cURL dialog with parsed preview of method, URL, headers, and body" width="574" height="600" data-path="images/connections/outbound-webhooks/03.png" />

    Click **Import** to apply the configuration to the webhook. This replaces any existing configuration
  </Accordion>

  <Accordion title="Configure the Request Body">
    1. Navigate to the **Request Body** tab.

    2. Select a content type: `application/json`, `text/plain`, or `application/xml`.

    3. Enter the request payload. Use the variable picker to insert contact variables.

       For example, if you want to send email, first name, and last name to the endpoint, your request body would look something like this:

       ```json theme={null}
       {
         "email": "{{ column("email") }}",
         "firstname": "{{ column("first_name") }}",
         "lastname": "{{ column("last_name") }}"
       }
       ```

    4. Click **Save Draft**.
  </Accordion>

  <Accordion title="Test the Webhook">
    1. Navigate to the **Test** tab.

    2. Search for a contact by email and select one from the dropdown. If applicable, select the org context for the contact.

    3. Click **Send Test Request**. Contact variables in the URL and payload are replaced with the selected contact's actual values before sending.

           <img src="https://mintcdn.com/inflection-4b2c0de4/N4VRWuxaoalXbMy_/images/connections/outbound-webhooks/04.png?fit=max&auto=format&n=N4VRWuxaoalXbMy_&q=85&s=efc605422bbeba3dd8267a8eb4d36079" alt="Test tab showing a test request result for a selected contact" width="1920" height="911" data-path="images/connections/outbound-webhooks/04.png" />

    4. Expand **View request sent** to review the exact URL, headers, and body that were sent.

    A successful test returns a 2xx status code. A failed test returns a 4xx or 5xx status code, clearly marked in the UI.

    <Info>
      Response mapping is optional. After a successful test, navigate back to the listing page if response mapping is not needed.
    </Info>
  </Accordion>

  <Accordion title="Set Up Response Mapping">
    Response mapping allows webhook response data to automatically update contact properties in Inflection. After running a successful test, the response fields are available for mapping.

    1. Navigate to the **Response Mapping** tab. Each field from the response appears as a row with its detected data type.

           <img src="https://mintcdn.com/inflection-4b2c0de4/N4VRWuxaoalXbMy_/images/connections/outbound-webhooks/05.png?fit=max&auto=format&n=N4VRWuxaoalXbMy_&q=85&s=c8caf7c5ea22949739194bb8679c740e" alt="Response Mapping tab listing response fields with detected data types" width="1920" height="964" data-path="images/connections/outbound-webhooks/05.png" />

    2. Click **Edit** to enter edit mode.

    3. For each field to map, select a **Contact Property** from the dropdown. Only contact properties that match the field's data type are shown.

    4. Select a **Mapping Rule** for each mapped field:
       * **Update If Empty:** Updates the contact property only if it currently has no value. This is the default.
       * **Always Overwrite:** Updates the contact property every time, regardless of its current value.

    5. Click **Save**.

    Each contact property can only be mapped to one response field. The stats badge at the top shows how many fields are mapped out of the total.

    <Info>
      Each contact property can only be mapped to one response field. The stats badge at the top shows how many fields are mapped out of the total.
    </Info>
  </Accordion>

  <Accordion title="Use a Webhook in a Journey">
    Add an outbound webhook as a step in any journey to send data to external systems as contacts flow through the journey.

    1. Open a journey in the flow builder.
    2. Add a **Run Outbound Webhook** step to the flow.
    3. Click the webhook step and select a webhook from the list.
    4. Save the journey.

    <Info>
      When the journey runs, each contact that reaches the webhook step triggers the configured HTTP request. Fields in the URL and payload are replaced with each contact's actual values.
    </Info>

    <Tip>
      After the journey runs, the webhook step displays success and failure counts on the canvas. Click the counts to open a detailed report showing individual results.
    </Tip>

    <Info>
      If response mapping is configured, contact properties are updated according to the mapping rules as each webhook call completes.
    </Info>
  </Accordion>
</AccordionGroup>
