Filter Reference

Complete reference for all Chainhook filter types

Filter Reference

Filters define which blockchain events will trigger your chainhook—use the matrix below to pick the right entry for filters.events[].

FilterWhen to use
ft_eventFT: catch every SIP-010 transfer, mint, or burn across assets.
ft_transferFT: follow a single asset such as USDC; optionally add sender/receiver for wallet-level triggers.
ft_mintFT: track supply expansions or bridge inflows for one asset (set asset_identifier).
ft_burnFT: track redemptions or supply contractions (set asset_identifier).
nft_eventNFT: monitor every transfer, mint, or burn for all collections.
nft_transferNFT: follow a SIP-009 collection; add sender, receiver, or value for owner/token targeting.
nft_mintNFT: watch every new mint for a collection (set asset_identifier).
nft_burnNFT: catch burns or redemptions (set asset_identifier).
stx_eventSTX: capture all native transfers, mints, or burns.
stx_transferSTX: trace every transfer; add sender or receiver to spotlight specific principals.
contract_deployContracts: react to new contracts entering the network.
contract_callContracts: observe every invocation; narrow with contract_identifier and function_name.
contract_logContracts: catch print/log output from a contract (set contract_identifier).
coinbaseSystem: watch miner rewards hitting the chain.
tenure_changeSystem: track Proof-of-Transfer tenure updates; add cause ("block_found" or "extended") for specificity.

Fungible Token Events (FT)

Any FT Event

Match any fungible token event (transfer, burn, or mint):

{
"type": "ft_event"
}

FT Transfer

Match FT transfers for a specific asset:

{
"type": "ft_transfer",
"asset_identifier": "SP...ABC.ft::usdc"
}

Filter by sender:

{
"type": "ft_transfer",
"asset_identifier": "SP...ABC.ft::usdc",
"sender": "SP...FROM"
}

Filter by receiver:

{
"type": "ft_transfer",
"asset_identifier": "SP...ABC.ft::usdc",
"receiver": "SP...TO"
}

FT Mint

Match FT mint events:

{
"type": "ft_mint",
"asset_identifier": "SP...ABC.ft::usdc"
}

FT Burn

Match FT burn events:

{
"type": "ft_burn",
"asset_identifier": "SP...ABC.ft::usdc"
}

Non-Fungible Token Events (NFT)

Any NFT Event

Match any NFT event (transfer, burn, or mint):

{
"type": "nft_event"
}

NFT Transfer

Match NFT transfers for a specific collection:

{
"type": "nft_transfer",
"asset_identifier": "SP...COLL.nft::collectible"
}

Filter by sender:

{
"type": "nft_transfer",
"asset_identifier": "SP...COLL.nft::collectible",
"sender": "SP...FROM"
}

Filter by receiver:

{
"type": "nft_transfer",
"asset_identifier": "SP...COLL.nft::collectible",
"receiver": "SP...TO"
}

Filter by specific token ID:

{
"type": "nft_transfer",
"asset_identifier": "SP...COLL.nft::collectible",
"value": "u123"
}

NFT Mint

Match NFT mint events:

{
"type": "nft_mint",
"asset_identifier": "SP...COLL.nft::collectible"
}

NFT Burn

Match NFT burn events:

{
"type": "nft_burn",
"asset_identifier": "SP...COLL.nft::collectible"
}

STX Events

Any STX Event

Match any STX event (transfer, burn, or mint):

{
"type": "stx_event"
}

STX Transfer

Match any STX transfer:

{
"type": "stx_transfer"
}

Filter by sender:

{
"type": "stx_transfer",
"sender": "SP...SENDER"
}

Filter by receiver:

{
"type": "stx_transfer",
"receiver": "SP...RECEIVER"
}

Contract Events

Contract Deploy

Match any contract deployment:

{
"type": "contract_deploy"
}

Filter by deployer:

{
"type": "contract_deploy",
"sender": "SP...DEPLOYER"
}

Contract Call

Match any contract call:

{
"type": "contract_call"
}

Match calls to a specific contract:

{
"type": "contract_call",
"contract_identifier": "SP...XYZ.counter"
}

Match calls to a specific function:

{
"type": "contract_call",
"contract_identifier": "SP...XYZ.counter",
"function_name": "increment"
}

Filter by caller:

{
"type": "contract_call",
"contract_identifier": "SP...XYZ.counter",
"function_name": "increment",
"sender": "SP...CALLER"
}

Contract Log

Match contract print events:

{
"type": "contract_log",
"contract_identifier": "SP...XYZ.counter"
}

Filter by transaction sender:

{
"type": "contract_log",
"contract_identifier": "SP...XYZ.counter",
"sender": "SP...SENDER"
}

System Events

Coinbase

Match coinbase events (block rewards):

{
"type": "coinbase"
}

Tenure Change

Match any tenure change:

{
"type": "tenure_change"
}

Match tenure changes by cause (block found):

{
"type": "tenure_change",
"cause": "block_found"
}

Match tenure changes by cause (extended):

{
"type": "tenure_change",
"cause": "extended"
}

Combining Filters

You can combine multiple filters in the filters.events array. A chainhook will trigger if any of the filters match:

{
"filters": {
"events": [
{
"type": "ft_transfer",
"asset_identifier": "SP...ABC.token::diko"
},
{
"type": "contract_call",
"contract_identifier": "SP...XYZ.counter",
"function_name": "increment"
}
]
}
}

This chainhook will trigger on either DIKO transfers or calls to the increment function.

How is this guide?