## Create account {#create-account}

Create an Adal account before you configure webhook intake. Adal currently supports registration by email.

1. Open [Adal dashboard registration](https://dashboard.adal.cloud/auth/register).
2. Enter your email address and complete registration.
3. Open the message from Adal and follow the verification link.
4. Sign in to the dashboard.

> **Expected result:** Your account is active and you can use the dashboard.

## Create Server {#create-server}

A Server provides the stable public URL that receives your webhooks.

1. Open the [Servers dashboard](https://dashboard.adal.cloud/servers).
2. Select **Create server**.
3. Choose the processing region and enter a name.
4. Keep the remaining settings at their defaults for this quickstart, then save the Server.

After creation, copy the **Public Ingest URL** and save the **CLI token**.

> **Important:** The CLI token is shown only once. Treat it as a secret: store it securely, do not commit it to source control, and do not include it in logs or support messages.

> **Expected result:** The Server is created and you have its Public Ingest URL and CLI token.

## Create Destination {#create-destination}

A Destination defines where an accepted Request is delivered. One Request can be delivered independently to more than one Destination.

1. Open the [Destinations dashboard](https://dashboard.adal.cloud/destinations).
2. Select **Add destination**.
3. Choose the same region and the Server you created.
4. Enter a name and the URL of the service that should receive the webhook.
5. Save the Destination.

For a local CLI test, the URL can be similar to `http://127.0.0.1:3000/webhooks`. Your local application must be running and listening at the configured address. For direct delivery, use a URL that is reachable from the internet.

> **Expected result:** The Destination is attached to your Server and is ready to receive Deliveries.

## Run Adal CLI {#run-cli}

Adal CLI maintains a secure outbound connection and forwards incoming Requests to a local or private service. [Download a release](https://github.com/adal-cloud/adal-cli/releases) or [build it from source](https://github.com/adal-cloud/adal-cli).

Start the CLI with the token you saved when creating the Server:

```bash
adal-cli --token <your-cli-token>
```

Useful options:

```bash
adal-cli --version
adal-cli --verbose <level>
```

Verbosity levels are:

| Level | Output |
| --- | --- |
| `0` | Errors only; this is the default. |
| `1` | Basic connection and delivery information. |
| `2` | Detailed operational logs. |
| `3` | Debug-level logs. |

For example:

```bash
adal-cli --token <your-cli-token> --verbose 1
```

> **Expected result:** The CLI connects successfully and waits for incoming Deliveries.

## Send a test webhook {#send-test-webhook}

Replace the placeholder below with the Public Ingest URL from the dashboard, then send a test request:

```bash
SERVER_URL='https://your-server-id.region.adal.cloud'

curl --request POST "$SERVER_URL" \
  --header 'Content-Type: application/json' \
  --header 'X-Test-Source: quickstart' \
  --data '{"message":"Hello from Adal"}'
```

Adal accepts the webhook as a Request, creates a Delivery for the configured Destination, and forwards it through the connected CLI or directly over HTTP, depending on your configuration. The original HTTP method, path, query string, headers, and body are preserved.

> **Expected result:** The Request appears in Adal and a delivery attempt reaches the configured Destination. A successful Delivery means Adal received the expected HTTP response from the Destination; it does not prove that a downstream business operation completed.

## Inspect the Request {#inspect-request}

Open the [Requests dashboard](https://dashboard.adal.cloud/requests), select the Request from the previous step, and open its details.

You can inspect:

- the HTTP method, path, and query string;
- request headers and body;
- the received time and Request status;
- each Destination Delivery and its attempt history.

You can also preview supported body formats or download the original body when that option is available.

> **Important:** Retries and manual replay can cause the same event to reach your application more than once. Verify the sender's signature, validate all input, make webhook handlers idempotent, and deduplicate by a stable provider event ID when one is available.

> **Expected result:** You can see what Adal received and trace the outcome of every Delivery attempt.

## Next steps {#next-steps}

You have completed the basic flow: a Server accepted a webhook, Adal recorded it as a Request, and a Destination received a Delivery.

Continue with these guides:

- [Core concepts](/docs/concepts)
- [Servers](/docs/servers)
- [Destinations](/docs/destinations)
- [Requests](/docs/requests)
- [Retries and replay](/docs/retries)
- [Adal CLI](/docs/adal-cli)