Claude-code-plugins-plus-skills quicknode-webhooks-events
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/quicknode-pack/skills/quicknode-webhooks-events" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-quicknode-webhooks-events && rm -rf "$T"
manifest:
plugins/saas-packs/quicknode-pack/skills/quicknode-webhooks-events/SKILL.mdsource content
QuickNode Webhooks Events
Overview
Set up QuickNode Streams for real-time on-chain event processing with custom filters and webhook delivery.
Prerequisites
- QuickNode account with Streams access
- HTTPS webhook endpoint
Instructions
Step 1: Create a Stream via Dashboard
1. Dashboard > Streams > Create Stream 2. Select chain: Ethereum Mainnet 3. Filter: Contract events for specific address 4. Destination: Webhook URL 5. Set payload format: JSON
Step 2: Handle Stream Events
import express from 'express'; const app = express(); app.post('/webhooks/quicknode', express.json(), async (req, res) => { const events = req.body; for (const event of events) { console.log(`Block: ${event.blockNumber}`); console.log(`TX: ${event.transactionHash}`); console.log(`Topics: ${event.topics}`); // Process on-chain event await processBlockchainEvent(event); } res.status(200).json({ received: true }); });
Step 3: Filter by Contract Events
// Stream filter function (runs on QuickNode infrastructure) function main(data) { const targetContract = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'; // USDC const transferTopic = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'; return data.streamData.filter(tx => { return tx.logs?.some(log => log.address.toLowerCase() === targetContract.toLowerCase() && log.topics[0] === transferTopic ); }); }
Output
- Real-time blockchain event streaming
- Custom filter functions for specific contracts/events
- Webhook delivery for processed events
Error Handling
| Issue | Cause | Solution |
|---|---|---|
| No events received | Filter too restrictive | Test with broader filter first |
| Duplicate events | Block reorganization | Implement idempotency by tx hash |
| Webhook timeout | Slow processing | Return 200 immediately, process async |
Resources
Next Steps
Optimize performance:
quicknode-performance-tuning