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

# http_poll events

> Changes found by a Watch a URL source.

Every `http_poll` event has these fields:

<ResponseField name="type" type="string" required>The event type.</ResponseField>
<ResponseField name="source_id" type="string" required>The source that made the event.</ResponseField>
<ResponseField name="url" type="string" required>The URL, with no query string, fragment or user info.</ResponseField>
<ResponseField name="polled_at" type="string" required>When the poll ran (RFC 3339).</ResponseField>
<ResponseField name="truncated" type="boolean">`true` when the event was over 3 MiB. Then `before`, `after` and `item` are removed.</ResponseField>

`changed_fields` is a sorted list of dotted paths. Arrays are compared as a whole, so a change inside an array shows the path of the array.

## http\_poll.changed

Document mode. The watched value changed.

```json theme={null}
{
  "type": "http_poll.changed",
  "source_id": "2mJ8kQ4vXw9aB3cD5eF7gH1iK0L",
  "url": "https://api.example.com/v1/rates",
  "polled_at": "2026-09-24T10:15:00Z",
  "before": { "USD": 1520.5, "GBP": 2011.2 },
  "after": { "USD": 1534.0, "GBP": 2011.2 },
  "changed_fields": ["USD"]
}
```

<ResponseField name="before" type="any">The old value. `null` when the old value was too large to keep (over 2 MiB). Then `changed_fields` is `["$"]`.</ResponseField>
<ResponseField name="after" type="any">The new value.</ResponseField>
<ResponseField name="changed_fields" type="string[]">The paths that changed.</ResponseField>

## http\_poll.item.added

Items mode. A new item is in the list.

```json theme={null}
{
  "type": "http_poll.item.added",
  "source_id": "2mJ8kQ4vXw9aB3cD5eF7gH1iK0L",
  "url": "https://shop.example.com/api/orders",
  "polled_at": "2026-09-24T10:15:00Z",
  "item_id": "9311",
  "item": { "id": 9311, "status": "pending", "total": 45000 }
}
```

<ResponseField name="item_id" type="string">The value of the ID field, as text.</ResponseField>
<ResponseField name="item" type="object">The item.</ResponseField>

## http\_poll.item.changed

Items mode. An item changed.

```json theme={null}
{
  "type": "http_poll.item.changed",
  "source_id": "2mJ8kQ4vXw9aB3cD5eF7gH1iK0L",
  "url": "https://shop.example.com/api/orders",
  "polled_at": "2026-09-24T10:20:00Z",
  "item_id": "9311",
  "item": { "id": 9311, "status": "paid", "total": 45000 },
  "before": { "id": 9311, "status": "pending", "total": 45000 },
  "changed_fields": ["status"]
}
```

<ResponseField name="item" type="object">The item now.</ResponseField>
<ResponseField name="before" type="object">The item before. Not present when the old item was too large to keep. Then `changed_fields` is `["$"]`.</ResponseField>
<ResponseField name="changed_fields" type="string[]">The paths that changed. Fields in **Ignore fields** are not counted.</ResponseField>

## http\_poll.item.removed

Items mode. An item is no longer in the list.

```json theme={null}
{
  "type": "http_poll.item.removed",
  "source_id": "2mJ8kQ4vXw9aB3cD5eF7gH1iK0L",
  "url": "https://shop.example.com/api/orders",
  "polled_at": "2026-09-24T10:25:00Z",
  "item_id": "9311",
  "before": { "id": 9311, "status": "paid", "total": 45000 }
}
```

<ResponseField name="before" type="object">The last copy of the item, when hooksnode kept it.</ResponseField>
