Skip to content

Chainhook V2 hosted webhook silently drops print_event deliveries #739

@Rapha-btc

Description

@Rapha-btc

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-sold event 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-sold for token chore: use stacks-codec #542, nft-unlisted for 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:

  1. Know that an event was missed
  2. Query for failed/pending deliveries
  3. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions