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

# On-chain events

> Track transaction activity across EVM and SVM networks

The `wallet.activity` event tracks all confirmed transaction activity for user WaaS (embedded) wallets. This enables you to monitor blockchain transactions across chains in real-time without polling or indexing.

## Supported networks

### EVM networks

| Network   | Mainnet | Testnet | Internal transfers |
| :-------- | :------ | :------ | :----------------- |
| Ethereum  | ✓       | Sepolia | ✓                  |
| Polygon   | ✓       | Amoy    | ✓                  |
| Optimism  | ✓       | Sepolia | ✓                  |
| Base      | ✓       | Sepolia | ✓                  |
| Arbitrum  | ✓       | Sepolia | ✓                  |
| BNB Chain | ✓       | Testnet | ✗                  |
| Avalanche | ✓       | Testnet | ✗                  |

<Note>
  Internal transfers are transactions where the wallet address is involved in an internal (nested) call rather than as the direct `to` or `from` on the top-level transaction — for example, interactions routed through smart contracts, bridges, or account abstraction entry points. On networks that do not support internal transfer tracking, `wallet.activity` events fire only when the wallet address appears directly in the top-level transaction.
</Note>

### SVM networks

| Network | Mainnet | Testnet |
| :------ | :------ | :------ |
| Solana  | ✓       | Devnet  |

## How it works

When a confirmed transaction involves a user's WaaS (embedded) wallet, Dynamic sends a `wallet.activity` webhook event to your configured endpoint. This includes both incoming and outgoing transactions.

## Registration event

When a new embedded wallet is created and the environment has on-chain activity tracking enabled, Dynamic registers the wallet address with on-chain monitoring providers. A `wallet.activity.registered` event is sent once this registration succeeds.

This event fires only once per wallet — not on duplicates, replays, or already-registered addresses. Use it to confirm that a wallet is actively monitored before expecting `wallet.activity` transaction events.

#### Example payload

```json theme={"system"}
{
  "eventId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "messageId": "f0e1d2c3-b4a5-6789-0abc-def123456789",
  "webhookId": "a86acea4-e050-4846-8e4f-0ae039f6e37c",
  "userId": "a5914498-7a8b-4c58-b04c-9624fef2897c",
  "eventName": "wallet.activity.registered",
  "environmentId": "123e4567-e89b-12d3-a456-426614174000",
  "environmentName": "sandbox",
  "timestamp": "2025-06-09T14:30:59.210Z",
  "data": {
    "walletAddress": "0x3FcE1F4F28DbA209344072867134A3a7F547C7f1",
    "walletId": "484e49ba-3026-4e2c-9bf0-ed98ae224833",
    "userId": "a5914498-7a8b-4c58-b04c-9624fef2897c"
  }
}
```

## Use cases

* Notify users when they receive funds
* Track transaction history for compliance or analytics
* Trigger downstream workflows based on on-chain activity
* Build real-time activity feeds in your application

## Getting started

To receive on-chain events:

1. [Set up a webhook endpoint](/overview/developer-dashboard/webhooks/setup)
2. Subscribe to the `wallet.activity` and/or `wallet.activity.registered` event types
3. Process incoming events in your webhook handler

See the [wallet.activity event reference](/overview/developer-dashboard/webhooks/events#param-wallet-activity) and [wallet.activity.registered event reference](/overview/developer-dashboard/webhooks/events#param-wallet-activity-registered) for the full event payload structures.
