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

> ## Agent Instructions
> Automate.ax automations are TypeScript programs.
> Use Bun for installation and command examples.
> Use Automate.ax for the product name and automate.ax for the package, CLI, and domain.
> Treat documented public APIs as current; do not invent transitional or deprecated names.

# Custom triggers

> Receive unsupported events through an HTTP webhook.

Automate.ax does not currently support user-defined, platform-managed triggers. Managed triggers depend on privileged server components for subscription setup, authentication, renewal, event ingestion, and durable delivery, so an automation cannot define one entirely in its own code.

## Use an HTTP trigger

Use `onHttpRequest` as the callback for an unsupported webhook:

```ts automations/receive-custom-webhook.automation.ts theme={null}
import { automation, onHttpRequest, sendEmail, t } from "automate.ax"

export default automation("Receive a custom webhook", () => {
  const request = onHttpRequest()

  sendEmail({
    subject: "Webhook received",
    text: t`Received ${request.method} ${request.path}.`,
    to: "*",
  })
})
```

Deploy the automation, then register the HTTP trigger URL printed by the CLI as the provider's webhook callback. Each request starts an automation execution, and its headers, query parameters, and parsed body are available on the request signal.

You are responsible for configuring and renewing the provider's webhook, authenticating requests, validating its payload, and handling provider retries or duplicate events. Automate.ax provides the HTTP endpoint and execution delivery; it does not manage the provider-side subscription for a custom webhook.

Use `waitForResponse: true` with `respondToHttpRequest` when the provider requires a verification challenge or synchronous response. See [On HTTP request](/reference/triggers/on-http-request) for the full request shape and response timeout.
