NEAR Activity
Address Activity webhooks (ADDRESS_ACTIVITY) also run on NEAR. A NEAR webhook watches account IDs such as alice.near and delivers the native NEAR, token, NFT, and protocol actions those accounts take part in. Delivery, retries, and signing work the same as on EVM chains; this page covers what is different.
Contract Events (CONTRACT_EVENT) webhooks are EVM-only. On NEAR, watch a contract’s account ID with Address Activity instead.
Account IDs
Watched addresses and token contracts are NEAR account IDs:
- 2–64 characters of lowercase
a-z,0-9, and the separators-,_,.. - No leading, trailing, or consecutive separators.
- Implicit accounts (64 lowercase hex characters) and ETH-implicit accounts (
0x+ 40 hex characters) are accepted.
Uppercase IDs are rejected rather than lowercased, so the value you watch is exactly the value delivered in fromAddress and toAddress.
The categories
NEAR categories are delivered with the same value you filter on.
| Category | What it is | fromAddress → toAddress |
|---|---|---|
external | A native NEAR Transfer action, or a deposit to or withdrawal from a gas key. | Sender → receiver. |
function_call | A contract method call. value is the NEAR deposit attached to the call. | Caller → contract. |
nep141 | A fungible-token transfer, mint, or burn. | Token sender → token receiver. |
nep171 | An NFT transfer, mint, or burn. | Previous owner → new owner. |
nep245 | A multi-token transfer, mint, or burn, such as tokens held in intents.near. | Token sender → token receiver. |
stake | A Stake action. value is the account’s new total stake, not the change. | Staking account → none. |
create_account | A new account is created. | Creator → new account. |
delete_account | An account is deleted. | Deleted account → beneficiary. |
deploy_contract | Contract code is deployed or a global contract is used. | Deployer → account. |
add_key / delete_key | An access key is added or removed; publicKey names it. | Caller → account. |
delegate | A meta-transaction (NEP-366) relayed on behalf of a user. Its inner actions arrive as their own entries. | Relayer → user. |
unknown | A protocol action Spectrum does not classify yet, so new action kinds still reach you. | Caller → receiver. |
On a mint fromAddress is empty, and on a burn toAddress is empty.
NEAR attached to a contract call is delivered as function_call, not external. Filtering on external alone misses most NEAR value that moves through contracts.
Operations
operation names the variant within a category:
| Category | operation |
|---|---|
external | transfer |
nep141, nep171, nep245 | transfer, mint, or burn |
stake | unstake_all when rawValue is "0", otherwise set_stake |
delegate | delegate or delegate_v2 |
unknown | The protocol action name |
Other categories have no operation.
Filter options
| Option | Effect |
|---|---|
addresses | Required. Account IDs to watch; an entry matches when a watched account is its fromAddress or toAddress. |
categories | Optional. Any of the categories above. All categories are delivered by default. |
tokens | Optional. NEP-141, NEP-171, or NEP-245 contract account IDs. When set, only token activity from these contracts is delivered, and native NEAR and action entries are dropped. It narrows activity that already involves a watched account; it does not watch the token contract itself. |
excludeZeroValue | Drops function_call entries with no attached deposit. |
excludeSelfCalls | Drops function calls an account makes to itself. |
excludeActions | Drops protocol actions by name: transfer, function_call, stake, create_account, delete_account, deploy_contract, add_key, delete_key, delegate, delegate_v2, deploy_global_contract, deploy_global_contract_by_account_id, use_global_contract, use_global_contract_by_account_id, deterministic_state_init, universal_state_init, transfer_to_gas_key, withdraw_from_gas_key. Token activity is never excluded by this option. |
includeGasRefunds | Delivers the gas refunds NEAR sends from the system account, flagged gasRefund: true. Dropped by default. |
includeFailed | Delivers actions from failed receipts, flagged failed: true. Their value was not applied, and a failed receipt never produces token activity. Dropped by default. |
includeReverted and the optional fields (logIndex, log, subIndex, typeTraceAddress) are EVM-only and rejected on NEAR.
Entry fields
NEAR entries share category, fromAddress, toAddress, hash, value, rawValue, and asset with EVM entries, and add:
| Field | Description |
|---|---|
hash | The originating transaction hash, or the receiptId when the source does not supply one. |
receiptId | The receipt whose execution produced the entry. |
operation | See Operations. |
actionIndex | Position of the action in the receipt, for action-derived entries. |
logIndex, dataIndex | Position of the token event in the receipt’s logs and in the event’s data array. A nep141 transfer recovered from an ft_transfer call that logged no event carries actionIndex instead. |
tokenIndex | Position in the event’s token_ids array, for nep171 and nep245. |
tokenId | The NFT or multi-token ID, for nep171 and nep245. |
method | The called method, for function_call. |
publicKey | The key involved, for stake, add_key, delete_key, and gas-key deposits and withdrawals. |
gasRefund | true on an opted-in gas refund. |
failed | true on an opted-in failed action. |
Values and assets
- Native NEAR uses
asset: { "symbol": "NEAR", "decimals": 24 }, sorawValueis in yoctoNEAR. nep141andnep245carry the token contract inasset.address, plusname,symbol, anddecimalsfrom the token’s metadata.valueisnulluntil decimals are known.nep171always hasvalue: "1".- A
function_callwith no deposit hasvalue: null, an emptyrawValue, and an emptyasset.
Example payload
{
"id": "whevt_a1b2c3d4e5f6",
"type": "ADDRESS_ACTIVITY",
"webhookId": "wh_4dbc2155930fa7054493aed0",
"createdAt": "2026-10-09T12:34:56.789Z",
"event": {
"chain": "near",
"blockHash": "4D5p1esztCrJR1wVJsbVAKkEuN6wmLmc2DEzBiHMbh8K",
"blockNumber": 217990083,
"blockTimestamp": 1790815788,
"removed": false,
"activity": [
{
"category": "external",
"fromAddress": "alice.near",
"toAddress": "bob.near",
"hash": "9x...",
"value": "0.1",
"rawValue": "100000000000000000000000",
"asset": { "symbol": "NEAR", "decimals": 24 },
"operation": "transfer",
"receiptId": "Grk...",
"actionIndex": 0
},
{
"category": "nep141",
"fromAddress": "alice.near",
"toAddress": "bob.near",
"hash": "7y...",
"logIndex": 0,
"value": "1.5",
"rawValue": "1500000",
"asset": {
"name": "USDC",
"symbol": "USDC",
"decimals": 6,
"address": "17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1"
},
"operation": "transfer",
"receiptId": "Ab...",
"dataIndex": 0
}
]
}
}Finality and reorgs
Spectrum only delivers NEAR blocks once they are final, so NEAR deliveries are never rolled back and event.removed is always false. NEAR can skip block heights, so gaps in blockNumber between deliveries are normal.