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
| Field | Description | Example |
|---|---|---|
| Contract Address | Smart contract to monitor | 0x1234...5678 |
| Chain | Blockchain | Ethereum, Polygon, etc. |
| Event Signature | Event to watch | Transfer(address,address,uint256) |
| ABI | Contract ABI (optional) | JSON ABI |
| Filters | Event parameter filters | amount > 1000000 |
| Interval | Check frequency | 1m, 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