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

# Hyperliquid Trade

Triggers whenever a public trade occurs on a Hyperliquid market. Includes trader wallet addresses (taker + maker). Optionally enrich with taker's full position data for whale tracking.

Trigger Other

Triggers whenever a public trade occurs on a Hyperliquid market. Includes trader wallet addresses (taker + maker). Optionally enrich with taker's full position data for whale tracking.

## At a Glance

| Field | Value |
| --- | --- |
| Trigger ID | `hyperliquid-trade` |
| Category | Other |
| Tags | `hyperliquid`, `perps`, `trade`, `market-monitoring`, `whale-tracking`, `wallet-monitoring`, `websocket`, `real-time` |

## Trigger Configuration

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `coin` | `string` | Yes | Hyperliquid perpetual coin symbol \(e.g., BTC, ETH, SOL, or trade.xyz assets like TSLA, SP500, GOLD\) |
| `dex` | `string` | No | DEX venue for TradFi markets \(TSLA, SP500, GOLD\). Leave as default for crypto perps. |
| `side` | `string` | No | Optional trade side filter. If omitted, both sides trigger. |
| `minSize` | `number` | No | Optional minimum traded base size |
| `minNotional` | `number` | No | Optional minimum trade notional in USDC |
| `enriched` | `boolean` | No | When enabled, fetches the taker's fill details for this trade \(direction, realized PnL, starting position\). Adds ~100ms latency per trigger fire. The enrichment object is always present when enabled, but its 'available' flag is false \(and the other fields are zero/empty\) when the fill could not be fetched — always guard on 'enrichment.available'. |

## Trigger Result

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `triggeredAt` | `string` | Yes | Timestamp when the trade was detected \(UTC, RFC3339 format\) |
| `coin` | `string` | Yes | Hyperliquid coin symbol |
| `taker` | `string` | No | Wallet address of the trade aggressor \(taker\) |
| `trade` | `object` | Yes | - |
| `enrichment` | `object` | No | Taker's fill details for this trade. Present whenever enriched=true \(absent only when enriched=false\). When the fill cannot be fetched \(REST timeout/error, or no fill matching the trade\) 'available' is false and every other field holds a zero/empty placeholder — always check 'available' before trusting the values. |

## Workflow Root Example

```json
{
  "nodes": {
    "root": {
      "type": "hyperliquid-trade",
      "payload": {
        "coin": "example-coin"
      },
      "children": [
        "log_event"
      ]
    },
    "log_event": {
      "type": "log",
      "payload": {
        "message": "Triggered at {{$trigger.triggeredAt}}"
      },
      "children": []
    }
  }
}
```

**Reference trigger output**

Downstream nodes can use `{{$trigger.triggeredAt}}` and any result fields listed above. Event triggers usually expose the raw source payload under a field such as `event`, `body`, `trade`, or `raw`.