-
Notifications
You must be signed in to change notification settings - Fork 63
Description
Summary
We are running a Chainhook V2 hosted webhook (registered via https://api.hiro.so/chainhooks/v1/me) to monitor print_event emissions from a Stacks smart contract. We have observed that some events are silently dropped — the webhook is never called for certain on-chain transactions, with no error or retry visible on our end.
Details
Contract: SPV9K21TBFAK4KNRJXF5DFP8N7W46G4V9RCJDC22.pepe-nft-marketplace
Chainhook predicate:
{
"version": "1",
"name": "pepe-nft-marketplace-v2",
"chain": "stacks",
"network": "mainnet",
"filters": {
"events": [
{
"type": "print_event",
"contract_identifier": "SPV9K21TBFAK4KNRJXF5DFP8N7W46G4V9RCJDC22.pepe-nft-marketplace",
"contains": "event"
}
]
},
"action": {
"type": "http_post",
"url": "https://styxbtc.com/api/chainhook/pepe-marketplace"
},
"options": {
"decode_clarity_values": true,
"enable_on_registration": true
}
}Observed Behavior
- An
nft-soldevent for token #896 was emitted on-chain and confirmed in a successful transaction. - Our webhook endpoint never received the event payload. No request hit our server for that transaction (verified via server logs).
- Other events from the same contract (e.g.,
nft-soldfor token chore: use stacks-codec #542,nft-unlistedfor tokens #911 and chore: upgrade to build with rust 1.80 #631) were delivered successfully around the same time period (Jan 27, 2026).
Expected Behavior
All print_event emissions matching the predicate should be delivered to the webhook URL. If delivery fails, retries should be attempted and ideally there should be a way to see delivery failures via the API.
Impact
Missed events leave our application in an inconsistent state (listings stuck as "purchase pending" indefinitely). There is currently no way for consumers to:
- Know that an event was missed
- Query for failed/pending deliveries
- Request redelivery of missed events
Questions
- Are there known conditions under which hosted chainhook v2 webhooks can silently drop events?
- Is there a delivery guarantee (at-least-once) or is it best-effort?
- Is there a way to view delivery logs or failed attempts for a registered hook?
- Would it be possible to add a replay/redelivery API for missed events?
Environment
- Chainhook V2 hosted (via
api.hiro.so) - Stacks mainnet
- Date of missed event: ~January 27, 2026