> For the complete documentation index, see [llms.txt](https://docs.hydromancer.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hydromancer.xyz/readme/builder-guides/monitor-approved-builder-users.md).

# Monitor approved builder users

Track live and historical activity from users who approved your builder fee.

Builder approvals identify users who have authorized your builder fee. Approval-based data shows their activity even when it was not routed through your application.

Use it for user monitoring, lifecycle analytics, and risk alerts.

### Choose the attribution model

Use routed-builder data when measuring your revenue and execution flow. Use approval-based data when measuring activity from users who approved you.

| Need                                         | Use                                                                                          |
| -------------------------------------------- | -------------------------------------------------------------------------------------------- |
| Fills routed through your builder code       | [builderFills](/readme/websocket/builder-data/builderfills.md)                               |
| All fills while a user approved your builder | [builderApprovedFills](/readme/websocket/builder-data/builderapprovedfills.md)               |
| Historical approved-user fills               | [builderApprovedFillsByTime](/readme/rest-api/historical-data/builderapprovedfillsbytime.md) |

Approved-user fills can include trades placed through another frontend. They can also include liquidations and TWAP sub-fills, which do not carry a builder code.

### Subscribe to live activity

Subscribe to `builderApprovedFills` for live fills. Subscribe to `builderApprovedFundings` and `builderApprovedNonFundingLedgerEvents` for balance and ledger changes.

```json
{
  "type": "subscribe",
  "subscription": {
    "type": "builderApprovedFills",
    "builder": "0xYOUR_BUILDER"
  }
}
```

Deduplicate replayed and live fills using `(time, txIndex)`. Approval-based ledger events need `(time, txIndex, user, role)`.

### Backfill history

Use [builderApprovedFillsByTime](/readme/rest-api/historical-data/builderapprovedfillsbytime.md) before starting the live subscription. Paginate oldest-first with the returned `(time, txIndex)` cursor.

This creates a contiguous activity record across historical and live data.

### Interpret approvals correctly

Approval state is evaluated at the event's block. Revoking approval stops future attribution. It does not remove historical events.

A user may approve several builders. Each approved builder receives its own activity stream. Treat this as approved-user activity, not routed revenue.

{% hint style="warning" %}
Do not use approval-based fills to calculate builder revenue. A fill can appear even when its `builder` field is `null` or names another builder.
{% endhint %}

### Inspect approval state

Use [approvedBuilders](/readme/rest-api/roles-and-agents/approvedbuilders.md) to retrieve the builders approved by a user. Use [maxBuilderFee](/readme/rest-api/delegations/maxbuilderfee.md) to check the fee limit for a user-builder pair.
