Filters

Complete reference for all Chainhooks filter types

Filters define which blockchain events will trigger your chainhook.

Here is a complete reference for all Chainhooks filter types:

FilterWhen to use
ft_eventCatch every SIP-010 transfer, mint, or burn across assets.
ft_transferFollow a single asset such as USDC; optionally add sender/receiver for wallet-level triggers.
ft_mintTrack supply expansions or bridge inflows for one asset (set asset_identifier).
ft_burnTrack redemptions or supply contractions for one asset (set asset_identifier).
nft_eventMonitor every transfer, mint, or burn for all collections.
nft_transferFollow a SIP-009 collection; add sender, receiver, or value for owner/token targeting.
nft_mintWatch every new mint for a collection (set asset_identifier).
nft_burnCatch burns or redemptions (set asset_identifier).
stx_eventCapture all native transfers, mints, or burns.
stx_transferTrack every STX transfer; add sender or receiver to spotlight specific principals.
contract_deployReact to new contracts entering the network.
contract_callObserve every invocation; narrow with contract_identifier and function_name.
contract_logCatch print/log output from a contract (set contract_identifier).
coinbaseWatch miner rewards hitting the chain.
tenure_changeTrack 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 any print events:

{
"type": "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"
}
]
}
}

How is this guide?