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

# Webhook Post

export const ComponentMetadata = ({warehouses, unsupportedWarehouses = [], componentType, connectionInputs, connectionOutputs}) => {
  const allWarehouses = [...warehouses.map(w => ({
    name: w,
    supported: true
  })), ...unsupportedWarehouses.map(w => ({
    name: w,
    supported: false
  }))];
  return <div style={{
    background: 'var(--colors-background-light, #f9fafb)',
    border: '1px solid var(--colors-border-default, #e5e7eb)',
    borderRadius: '12px',
    padding: '20px 28px',
    marginBottom: '28px',
    boxShadow: '0 1px 4px rgba(0,0,0,0.10)'
  }}>
      <table style={{
    width: '100%',
    borderCollapse: 'collapse'
  }}>
        <tbody>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle',
    width: '180px'
  }}>Project Availability</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>
              <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '8px'
  }}>
                {allWarehouses.map((w, i) => <span key={i} style={{
    background: w.supported ? '#dcfce7' : '#fee2e2',
    color: w.supported ? '#15803d' : '#b91c1c',
    border: `1px solid ${w.supported ? '#bbf7d0' : '#fca5a5'}`,
    borderRadius: '9999px',
    padding: '3px 12px',
    fontSize: '0.85rem',
    fontWeight: '500',
    whiteSpace: 'nowrap'
  }}>
                    {w.name} {w.supported ? '✅' : '❌'}
                  </span>)}
              </div>
            </td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Component Type</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{componentType}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Connection Inputs</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{connectionInputs}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Connection Outputs</td>
            <td style={{
    verticalAlign: 'middle'
  }}>{connectionOutputs}</td>
          </tr>
        </tbody>
      </table>
    </div>;
};

<ComponentMetadata warehouses={["Snowflake", "Databricks", "Amazon Redshift", "Google BigQuery"]} componentType="Orchestration, Test" connectionInputs="One" connectionOutputs="Unlimited" />

The Webhook Post component lets you post a payload to a unique URL. A webhook is an automated message sent from an app upon the occurrence of an event. Webhooks have messages—or payloads—that are sent to the unique URL.

<Note>
  The Webhook Post component sends outbound webhooks only. Incoming webhook data isn't supported, so webhooks can't be used to trigger a pipeline run or pass data into a pipeline. Outbound payloads aren't signed with HMAC, so receiving endpoints can't use HMAC to verify the request.
</Note>

## Properties

<Tabs>
  <Tab title="Snowflake">
    <ResponseField name="Name" type="string" required>
      A human-readable name for the component.
    </ResponseField>

    {/* <!-- param-start:[incomingWebhookUrl] | warehouses: [snowflake] --> */}

    <ResponseField name="Incoming Webhook URL" type="string" required>
      Enter a valid webhook URL. The URL must start with HTTP or HTTPS.
    </ResponseField>

    {/* <!-- param-start:[payloadTemplate] | warehouses: [snowflake] --> */}

    <ResponseField name="Payload Template" type="drop-down" required>
      The default setting is \[Custom].
    </ResponseField>

    {/* <!-- param-start:[payload] | warehouses: [snowflake] --> */}

    <ResponseField name="Payload" type="JSON" required>
      Enter a valid JSON payload body. If the payload is not valid JSON, an error message will be displayed: "Payload is not valid JSON".

      To use variables in this field, type the name of the variable prefixed by the dollar symbol and surrounded by \{ } brackets, as follows: `${variable}`. Once you type `${`, a drop-down list of autocompleted suggested variables will appear. This list updates as you type; for example, if you type `${date`, functions and variables containing `date` will be listed.
    </ResponseField>
  </Tab>

  <Tab title="Databricks">
    <ResponseField name="Name" type="string" required>
      A human-readable name for the component.
    </ResponseField>

    {/* <!-- param-start:[incomingWebhookUrl] | warehouses: [databricks] --> */}

    <ResponseField name="Incoming Webhook URL" type="string" required>
      Enter a valid webhook URL. The URL must start with HTTP or HTTPS.
    </ResponseField>

    {/* <!-- param-start:[payloadTemplate] | warehouses: [databricks] --> */}

    <ResponseField name="Payload Template" type="drop-down" required>
      The default setting is \[Custom].
    </ResponseField>

    {/* <!-- param-start:[payload] | warehouses: [databricks] --> */}

    <ResponseField name="Payload" type="JSON" required>
      Enter a valid JSON payload body. If the payload is not valid JSON, an error message will be displayed: "Payload is not valid JSON".

      To use variables in this field, type the name of the variable prefixed by the dollar symbol and surrounded by \{ } brackets, as follows: `${variable}`. Once you type `${`, a drop-down list of autocompleted suggested variables will appear. This list updates as you type; for example, if you type `${date`, functions and variables containing `date` will be listed.
    </ResponseField>
  </Tab>

  <Tab title="Amazon Redshift">
    <ResponseField name="Name" type="string" required>
      A human-readable name for the component.
    </ResponseField>

    {/* <!-- param-start:[incomingWebhookUrl] | warehouses: [redshift] --> */}

    <ResponseField name="Incoming Webhook URL" type="string" required>
      Enter a valid webhook URL. The URL must start with HTTP or HTTPS.
    </ResponseField>

    {/* <!-- param-start:[payloadTemplate] | warehouses: [redshift] --> */}

    <ResponseField name="Payload Template" type="drop-down" required>
      The default setting is \[Custom].
    </ResponseField>

    {/* <!-- param-start:[payload] | warehouses: [redshift] --> */}

    <ResponseField name="Payload" type="JSON" required>
      Enter a valid JSON payload body. If the payload is not valid JSON, an error message will be displayed: "Payload is not valid JSON".

      To use variables in this field, type the name of the variable prefixed by the dollar symbol and surrounded by \{ } brackets, as follows: `${variable}`. Once you type `${`, a drop-down list of autocompleted suggested variables will appear. This list updates as you type; for example, if you type `${date`, functions and variables containing `date` will be listed.
    </ResponseField>
  </Tab>

  <Tab title="Google BigQuery">
    <ResponseField name="Name" type="string" required>
      A human-readable name for the component.
    </ResponseField>

    {/* <!-- param-start:[url] | warehouses: [bigquery] --> */}

    <ResponseField name="URL" type="string" required>
      Enter a valid webhook URL. The URL must start with HTTP or HTTPS.
    </ResponseField>

    {/* <!-- param-start:[payload] | warehouses: [bigquery] --> */}

    <ResponseField name="Payload" type="JSON" required>
      A valid JSON payload body. If the payload is not valid JSON, an error message will be displayed: "Payload is not valid JSON".

      To use variables in this field, type the name of the variable prefixed by the dollar symbol and surrounded by \{ } brackets, as follows: `${variable}`. Once you type `${`, a drop-down list of autocompleted suggested variables will appear. This list updates as you type; for example, if you type `${date`, functions and variables containing `date` will be listed.

      You can also define new variables in the payload body, limited in scope to only this component, by enclosing a name in curly braces. For example `{{ variableName }}` will create a new variable called `variableName`. Any variables you add in this way should be given values in the **Payload variables** property.
    </ResponseField>

    {/* <!-- param-start:[payloadVariables] | warehouses: [bigquery] --> */}

    <ResponseField name="Payload variables" type="column editor" optional>
      Any new variables you defined in the payload body should have their values defined here.

      * **Name:** Select a variable from the drop-down. The drop-down contains all variables defined in the payload body.
      * **Value:** Enter the variable value. The value will be substituted for the variable each time it appears in the payload body.
    </ResponseField>

    {/* <!-- param-start:[timeout] | warehouses: [bigquery] --> */}

    <ResponseField name="Timeout (seconds)" type="string" required>
      The maximum time to wait for the endpoint to respond, in seconds.
    </ResponseField>
  </Tab>
</Tabs>
