Skip to main content

Contract Event Monitor

Watch for specific smart contract events in real-time. Filter by event signature, parameters, and transaction details. Perfect for NFT mints, token transfers, and protocol events.

What is a Contract Event Monitor?

A Contract Event Monitor listens for events emitted by smart contracts. When a matching event is detected, you receive an alert with full event details.

Use Cases

  • NFT Minting: Alert when new tokens are minted
  • Large Transfers: Detect token transfers above threshold
  • Governance: Track proposal creation and voting
  • Protocol Upgrades: Monitor upgrade events
  • DeFi Activity: Watch swap, borrow, liquidation events

Configuration

FieldDescriptionExample
Contract AddressSmart contract to monitor0x1234...5678
ChainBlockchainEthereum, Polygon, etc.
Event SignatureEvent to watchTransfer(address,address,uint256)
ABIContract ABI (optional)JSON ABI
FiltersEvent parameter filtersamount > 1000000
IntervalCheck frequency1m, 5m

Configuration Examples

NFT Mint Detection

{
  "type": "contract_event",
  "name": "NFT Mint Monitor",
  "chain": "ethereum",
  "contractAddress": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
  "eventSignature": "Transfer(address,address,uint256)",
  "filters": {
    "from": "0x0000000000000000000000000000000000000000"
  },
  "interval": 60000
}

Large Token Transfer

{
  "type": "contract_event",
  "name": "USDC Large Transfer",
  "chain": "ethereum",
  "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
  "eventSignature": "Transfer(address,address,uint256)",
  "filters": {
    "value": { "gte": "1000000000000" }
  },
  "interval": 60000
}

Governance Proposal

{
  "type": "contract_event",
  "name": "New Proposal Created",
  "chain": "ethereum",
  "contractAddress": "0x...",
  "eventSignature": "ProposalCreated(uint256,address,string)",
  "interval": 300000
}

Event Filters

Filter by Indexed Parameters

// Transfer event: Transfer(address indexed from, address indexed to, uint256 value)

// Filter: Only transfers FROM specific address
"filters": {
  "from": "0x1234...5678"
}

// Filter: Only transfers TO specific address
"filters": {
  "to": "0xabcd...ef01"
}

// Filter: Transfers between two addresses
"filters": {
  "from": "0x1234...5678",
  "to": "0xabcd...ef01"
}

Filter by Value

// Greater than
"filters": {
  "value": { "gte": "1000000000000" }
}

// Less than
"filters": {
  "value": { "lte": "100000000" }
}

// Range
"filters": {
  "value": { 
    "gte": "1000000",
    "lte": "10000000"
  }
}

Alert Example

🔔 Contract Event Detected

Contract: BAYC NFT (0xBC4C...f13D)
Event: Transfer
Chain: Ethereum

Details:
- From: 0x0000...0000 (Mint)
- To: 0x1234...5678
- Token ID: #9547
- Transaction: 0xabcd...ef01
- Block: 18,234,567

[View on Etherscan]

Common Event Signatures

ERC-20 Token Events

Transfer(address indexed from, address indexed to, uint256 value)
Approval(address indexed owner, address indexed spender, uint256 value)

ERC-721 NFT Events

Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll(address indexed owner, address indexed operator, bool approved)

Uniswap V2 Events

Swap(address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to)
Mint(address indexed sender, uint amount0, uint amount1)
Burn(address indexed sender, uint amount0, uint amount1, address indexed to)

Best Practices

1. Use Specific Filters

Avoid monitoring ALL Transfer events. Filter by address or value:

  • Good: Transfer events where value > 1M USDC
  • Bad: All Transfer events (too noisy)

2. Set Appropriate Check Intervals

  • High-frequency events: 1-2 minutes
  • Low-frequency events: 5-15 minutes
  • Governance events: 15-30 minutes

3. Include Contract ABI

Providing the ABI enables automatic event parsing:

  • Human-readable event names
  • Decoded parameter values
  • Type-safe filtering

4. Monitor Multiple Contracts

For protocols with multiple contracts:

  • Create separate monitor for each contract
  • Tag monitors for organization
  • Use same alert channels

Troubleshooting

No Events Detected

Possible Causes:

  • Event signature incorrect
  • Contract address wrong
  • Filters too restrictive
  • Event not emitted yet

Solution:

  • Verify event signature matches contract ABI
  • Test with broader filters first
  • Check contract on block explorer

Too Many Alerts

Solution:

  • Add stricter filters (value threshold)
  • Filter by specific addresses
  • Increase check interval

Next Steps