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

# Webhooks

> Learn the difference between flow control hooks and informational webhooks, and pick the one you need.

Portal calls your server in two different ways. **Flow control hooks** pause a wallet operation until your server answers, and your answer decides what happens next. **Informational webhooks** tell your server that something already happened, and nothing waits on your response.

Each kind has its own page in the [Portal Admin Dashboard](https://app.portalhq.io), under **Webhooks** in the sidebar: **Flow control** and **Informational**.

## Compare the two kinds

| | Flow control hooks | Informational webhooks |
| - | - | - |
| What Portal waits on | Your response. The signature, backup, or recovery doesn't continue until your server answers. | Nothing. The event has already happened. |
| What your response does | Approves or rejects a signature, stores a backup share, or returns one for recovery. | Confirms delivery. Return a `2xx` and Portal stops retrying. |
| Endpoints | One base URL. Portal calls `/sign-approval`, `/backup`, and `/backup/fetch` under it. | One endpoint URL for every event. The payload's `type` field tells you which event arrived. |
| Timeout | 10 seconds. A timeout counts as a failure. | 10 seconds. A timeout counts as a failed delivery. |
| Retries | None. The operation fails if your server doesn't answer correctly. | Failed deliveries are retried with exponential backoff, and you can resend any failed event. |

## Which one do I need?

Use **flow control hooks** if you need to:

* Approve or reject every signature before it happens, for example to enforce your own transaction limits.
* Store your clients' custodian backup shares in your own infrastructure instead of using Portal-managed backups.

Use **informational webhooks** if you need to:

* Track deposits, withdrawals, token approvals, and revocations on your clients' EVM and Solana wallets.
* Keep your records in sync when a client creates, backs up, recovers, or ejects a wallet.

You can configure both. Each environment has at most one flow control configuration and one informational webhook.

<Note>
  If your environment uses Portal-managed backups, the dashboard hides the `/backup` and `/backup/fetch` hooks, and signature approvals are the only flow control hook available.
</Note>

## Get started

<Columns cols={2}>
  <Card title="Flow control hooks" icon="hand" href="/resources/flow-control-hooks/overview">
    Response contracts for signature approvals and self-managed backups.
  </Card>

  <Card title="Informational webhooks" icon="bell" href="/resources/informational-webhooks/overview">
    Delivery, retries, deduplication, and the event log.
  </Card>

  <Card title="Set up flow control hooks" icon="list-check" href="/resources/flow-control-hooks/set-up">
    Walk through the flow control wizard in the dashboard.
  </Card>

  <Card title="Set up informational webhooks" icon="list-check" href="/resources/informational-webhooks/set-up">
    Walk through the informational wizard in the dashboard.
  </Card>
</Columns>

Integration webhooks (Due, Noah, Meld) are documented on each integration's page.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.