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

# Webhooks

> Receive a webhook when a wallet automation submits its wallet action.

Privy emits `wallet_automation.submitted` after an automation creates a wallet action and submits it for processing.

This event marks the handoff from automation matching to the [wallet action lifecycle](/wallets/actions/lifecycle). It does not mean the generated action succeeded.

## Setup

Subscribe to `wallet_automation.submitted` from the **Configuration > Webhooks** page in the [Privy Dashboard](https://dashboard.privy.io/apps?page=webhooks).

For signature verification, retries, and endpoint setup, see the [webhooks overview](/api-reference/webhooks/overview).

<Info>
  Webhooks can be tested at no cost in development environments. Production webhooks require an
  Enterprise plan.
</Info>

## Payload

```json theme={"system"}
{
  "type": "wallet_automation.submitted",
  "trigger_id": "fmfdj6yqly31huorjqzq38zc",
  "wallet_id": "cm4sourcewallet123",
  "action_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "automation_id": "a2h6k9m3p7q1r4t8v5x0y3z6b",
  "created_at": "2026-07-27T18:00:00.000Z",
  "trigger_caip2": "eip155:8453",
  "trigger_asset_address": "0x1234567890abcdef1234567890abcdef12345678"
}
```

| Field                   | Description                                                                     |
| ----------------------- | ------------------------------------------------------------------------------- |
| `trigger_id`            | ID of the automation execution. Use it to deduplicate webhook deliveries.       |
| `wallet_id`             | ID of the source wallet where the trigger arrived.                              |
| `action_id`             | ID of the wallet action created to fulfill the automation.                      |
| `automation_id`         | ID of the matched automation definition.                                        |
| `created_at`            | ISO 8601 timestamp when the wallet action was submitted.                        |
| `trigger_caip2`         | CAIP-2 identifier for the chain where the trigger arrived.                      |
| `trigger_asset_address` | Trigger asset contract address, or `native-token` for the chain's native asset. |

See the [webhook API reference](/api-reference/webhooks/wallet-automation/submitted) for the complete schema.

## Track the final outcome

Use `action_id` to correlate this event with the generated swap. The app can either fetch the [wallet action status](/wallets/actions/status) or subscribe to its terminal webhooks:

| Event                       | Meaning                                                    |
| --------------------------- | ---------------------------------------------------------- |
| `wallet_action.*.succeeded` | The automated swap completed successfully.                 |
| `wallet_action.*.rejected`  | Privy rejected the swap before an onchain effect occurred. |
| `wallet_action.*.failed`    | The swap failed after processing began.                    |

The initial automation webhook surface does not include separate completed, skipped, or failed events. Automation failures that occur before a wallet action exists are available through the [execution list API](/api-reference/wallet-automations/list-executions).

Treat the execution list as the source of truth. Webhooks are delivery notifications and should not be the only record of automation activity.
