ByAUJay
Evaluate the Blockchain Infrastructure & Web3 Development Company Chainstack on Solana Webhooks and Multi-Chain Support SLAs
TL;DR for decision‑makers
- So, if you're looking for ready-to-go push-based Solana webhooks, keep in mind that Chainstack isn't exactly a plug-and-play “HTTP webhook” provider. You’ll need to set up a lightweight bridge using their WebSocket or Geyser streams. But hey, on the bright side, this gives you better control, lower latency, and you won’t be locked into specific event parsing. Check out more details here.
- As for Chainstack’s uptime, their standard service level agreement (SLA) promises 99.9% uptime each quarter, plus there are service credits if they fall short. If you're considering an Enterprise plan, they even offer “Custom Uptime SLAs.” The platform tends to flaunt a 99.99%+ uptime and SOC 2 Type II compliance, but it’s crucial to differentiate between the marketing claims and the actual enforceable SLA you’ll sign. Dive into the specifics here.
Why this evaluation now
Solana is picking up speed again with its sub-second block production. For webhook-driven apps--think trading, monitoring, and compliance--it's super important to have event delivery that can handle reorgs, spikes, and any endpoint hiccups. At the same time, procurement teams are looking for a single vendor that can cover “all our chains” along with a unified SLA. That’s where Chainstack comes in, offering both a wide range of multi-chain support and “real-time” options for Solana. In this piece, we'll dive into the two things you asked about: Solana webhooks and multi-chain SLAs. Check it out here: (docs.chainstack.com).
What Chainstack offers today for “Solana webhooks”
Short answer: Chainstack doesn’t offer managed HTTP webhooks specifically for Solana events. However, they do have two solid, production-ready data feeds that you can connect to your own webhook endpoint:
1) Solana WebSocket subscriptions
- If you're diving into Solana, you'll be happy to know that supported RPC methods include
logsSubscribe,accountSubscribe, androotSubscribeon any Solana node you set up, whether it's Global or Dedicated. These methods push JSON events over WSS, and you get to control the filtering based on mentions, program IDs, and commitment levels. Check out the details in the Chainstack docs. - Now, there’s also
blockSubscribeavailable on Solana, but just a heads up--it’s marked as unstable by the Solana core team. The Chainstack docs give a fair warning about issues like 1006/1009 disconnects when dealing with high-traffic programs. For those looking for reliable block tracking in production, they recommend using Geyser instead. You can find more info in the Solana docs.
2) Yellowstone gRPC Geyser Streaming (Paid Add-On)
- This feature streams transactions, account updates, blocks, and slots directly from validator memory using a protobuf/gRPC interface. It even supports from_slot replay for catch-up. You can access it on the mainnet if you're on the Growth plan or higher, and it comes with different pricing tiers for streams. Check out the details here: (docs.chainstack.com)
- By default, Chainstack activates Jito ShredStream on Solana nodes, which really amps up low-latency streaming when you're using Geyser. If you're curious about how it works, you can find more info here: (docs.chainstack.com)
- Want to dive deeper? Chainstack's tutorials walk you through some concrete, program-filtered pipelines (think Raydium swaps and Bonk.fun launches) and even stack them up against WebSockets. Their benchmarks show that Geyser consistently snags events hundreds of milliseconds earlier. Pretty cool, right? Check it out here: (chainstack.com)
Takeaway: You can set up your own webhooks easily and reliably by using WSS or Geyser and sending data to HTTP. This way, you get complete control over retry logic, signing, and persistence--something a lot of teams appreciate for better control and auditability. Check it out here: (docs.chainstack.com)
How to build robust Solana webhooks on Chainstack (reference patterns)
Here are some solid patterns we often use for client projects. Choose one that fits your latency and operational requirements best.
- Pattern A: WSS → Cloudflare Workers (or AWS Lambda) → Your webhook
- For this approach, you can use
logsSubscribeoraccountSubscribeto focus on specific events and then send signed POSTs to your internal HTTP endpoint. It's a solid choice if you're dealing with moderate traffic and want to keep things simple on the infrastructure side. Check out the details here.
- For this approach, you can use
- Pattern B: Geyser → Kafka/PubSub → Stateless webhook deliverer
- In this setup, the Geyser client writes protobuf events straight into Kafka or Pub/Sub. A stateless consumer will then convert those to JSON, sign them, and post them with an exponential backoff strategy plus a dead-letter queue. This one's perfect for handling high volumes and achieving sub-second detection and replay. You can dive deeper into it here.
Recommended Implementation Details:
- Make sure to use HMAC SHA‑256 signatures and include timestamp headers. It's super important to reject stale timestamps and duplicate IDs to ensure idempotency. This approach is pretty standard, just like what Coinbase does for webhook verification. Check it out here.
- Keep in mind that you're going to get “at least once” delivery, so it’s a good idea to design your idempotent handlers by using a combination of event_id and signature.
- If you’re working with WebSocket Secure (WSS), don’t forget to set the right WebSocket URL in the Solana CLI. The Solana config might not calculate WSS correctly, so you’ll need to use the
--wsflag. You can find more info on that here. - Finally, try to steer clear of using
blockSubscribein production when you’re handling busy programs. Instead, go forlogsSubscribealong withgetTransaction, or if you need full fidelity and lower latency, Geyser is the way to go. More details can be found here.
Example: Tiny Node.js Bridge (WSS → HTTP Webhook)
If you're looking to set up a simple bridge using Node.js that connects a WebSocket Secure (WSS) connection to an HTTP webhook, you’re in the right place. Here's a straightforward example to get you going.
Step 1: Install Dependencies
First things first, make sure you have Node.js installed. Then, you’ll need to set up a couple of packages. Run the following command in your terminal:
npm install ws axios express
- ws: This will help you manage the WebSocket connections.
- axios: You’ll use this for making HTTP requests.
- express: A lightweight framework to handle HTTP requests easily.
Step 2: Create Your Bridge
Now, let’s jump into the code. Create a file called bridge.js and add the following:
const WebSocket = require('ws');
const express = require('express');
const axios = require('axios');
// Set up the websocket server
const wss = new WebSocket.Server({ port: 8080 });
// Set up the express app
const app = express();
app.use(express.json());
// Your webhook endpoint
const WEBHOOK_URL = 'https://your-webhook-url.com/endpoint';
// Listen for WebSocket connections
wss.on('connection', (ws) => {
console.log('New WebSocket connection established.');
ws.on('message', async (message) => {
console.log(`Received message: ${message}`);
// Send the message to the webhook
try {
const response = await axios.post(WEBHOOK_URL, { data: message });
console.log(`Webhook response: ${response.status}`);
} catch (error) {
console.error(`Error sending to webhook: ${error}`);
}
});
});
// Start the Express server
app.listen(3000, () => {
console.log('HTTP server is running on port 3000');
});
Step 3: Run Your Bridge
To kick things off, just run the following command in your terminal:
node bridge.js
Now, your Node.js bridge is up and running! It listens for incoming WebSocket connections on port 8080 and sends any received messages to your specified HTTP webhook.
Summary
You’ve just created a tiny bridge that connects WebSocket messages to an HTTP endpoint. This setup can easily handle real-time data and push it to your webhook. Feel free to tweak the code as needed for your specific use case!
import WebSocket from "ws";
import crypto from "crypto";
import fetch from "node-fetch";
const WSS = process.env.SOLANA_WSS; // Chainstack WSS
const WEBHOOK_URL = process.env.WEBHOOK_URL;
const SECRET = process.env.WEBHOOK_SECRET;
const ws = new WebSocket(WSS);
ws.on("open", () => {
// logsSubscribe for pump.fun (replace program id)
ws.send(JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "logsSubscribe",
params: [{ mentions: ["6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"] }, { commitment: "finalized" }]
}));
});
ws.on("message", async (raw) => {
const timestamp = Date.now().toString();
const sig = crypto.createHmac("sha256", SECRET).update(`${timestamp}.${raw}`).digest("hex");
for (let attempt = 0; attempt < 5; attempt++) {
const r = await fetch(WEBHOOK_URL, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Webhook-Timestamp": timestamp,
"X-Webhook-Signature": sig
},
body: raw
});
if (r.ok) break;
await new Promise(res => setTimeout(res, 2 ** attempt * 1000)); // backoff 1s,2s,4s,8s,16s
}
});
- When you're working with Geyser, make sure to use the Yellowstone protobufs and filters to focus on just the program IDs that matter to you. The
from_slotfeature is super handy for replaying any missed windows after a restart. You can check it out here.
What competitors call “Solana webhooks” (and why it matters)
If you really need a straightforward "create webhook → we deliver to your URL" setup, then Helius and QuickNode have got you covered with their managed Solana webhooks. They handle retries and can manage large address sets for each webhook, so you get push delivery with optional parsing right off the bat. Just keep in mind that with this convenience, you also deal with vendor-specific schemas, pricing that varies by event, and a bit less control over your delivery pipeline compared to running your own bridge. Check it out at (helius.dev).
Multi‑chain coverage: what’s real today
- Breadth: Chainstack has got a massive range, supporting over 70 blockchains! You’ll find popular ones like Ethereum, Solana, Base, Polygon, BNB, Arbitrum, and zk, along with appchains like CDK and Subnets. Plus, they’re also diving into some newer ecosystems like Hyperliquid, Unichain, Berachain, Plasma, and Monad. If you check their enterprise plans, they proudly mention “70+ Blockchains.” (chainstack.com)
- Depth and regional placement: You can see exactly where everything is with their “Available clouds, regions & locations” section. For instance, the Solana mainnet is global, but Chainstack Cloud has specific spots in London and New York. Plus, they've got the devnet available in both Global and Ashburn. They even break down whether Archive vs. Full modes are supported and if Debug/Trace is on for each chain. (docs.chainstack.com)
- Platform API: This is a great tool for discovering networks and nodes programmatically with a simple call (GET /v1/networks/{id}). It works really well with resilience proxies like eRPC for automatic multi-chain failover. What a lifesaver! (docs.chainstack.com)
Practical takeaway: Looking for a single vendor to help you standardize access across your EVMs, Solana, L2 rollups, and a few non-EVMs? Check out Chainstack! They really are multi-chain and they’re open about what and where they operate. You can dive into the details at their documentation site.
SLA reality check: what you can hold Chainstack to
- Default SLA: You get a solid 99.9% uptime each quarter for key features like Network Services, Management Console, and Platform API. They measure downtime from when you report an issue until it’s all fixed. If uptime drops to 99.9% or below but above 99.0%, you can snag a 10% service credit. If it dips below 99.0%, that bumps up to a 25% credit. Keep in mind, they usually schedule maintenance for Tuesdays and Sundays from 06:00 to 10:00 UTC, but they’ll give you a heads-up a week in advance. They’re pretty diligent about monitoring with nodes checked every 30 seconds from four different locations--if three out of four nodes agree within 30 seconds, it’s considered a network issue instead of downtime. (chainstack.com)
- Enterprise add-ons: On their pricing page, you’ll spot options like “Custom Uptime SLAs” and “24/7 Priority Support.” It’s a good idea to negotiate for uptime better than 99.9%--a lot of folks aim for 99.99% especially for their critical paths--and make sure the severity and response terms fit your playbooks. (chainstack.com)
- Marketing vs. contract: Chainstack boasts “99.99%+ uptime” and they’ve also got SOC 2 Type II under their belt, which is impressive. But remember, the only terms that really count are what’s in your order form and the SLA itself. So, it’s best to make sure they line up nicely. (chainstack.com)
- Support tiers and response times: If you opt for Premium support, they’re aiming for an initial response time of less than an hour, available 24/7. You’ll get access to communication channels like Slack, Telegram, and Discord, plus a Technical Account Manager. For Standard and Professional tiers, the response times aren’t quite as fast, though. (chainstack.com)
- Status visibility: You can keep an eye on Chainstack’s health in real time through their status page. Plus, they offer Slack, Email, and Webhook notifications for incidents, which is super handy for integrating into your ops alerts. (chainstack.com)
What to Ask in an RFP/SOW:
- Make sure to get a clear commitment on numeric uptime for each chain family (like Solana versus EVM) and for each product (think RPC versus Geyser).
- Nail down the incident SEVs for any streaming hiccups (like Geyser stream instability) and how you’ll handle credit calculations if streams--beyond just RPC--don’t meet the targets.
- Get specifics on maintenance windows for each region and know when your blackout periods are (especially during trading hours).
- Secure the right-to-audit for the SOC 2 Type II report under NDA. You can find more details over at chainstack.com.
Concrete, up‑to‑date plan limits that affect webhook‑style builds
- When it comes to request units, here’s the breakdown: you’ve got 3M for the Developer plan, 20M for Growth, 80M for Pro, 140M for Business, and a hefty 400M for Enterprise. If you go over, the extra usage drops to just $5 per 1M on Enterprise. On the RPS side, you’ll see a bump from 25 RPS for Developer all the way up to 600 RPS for Business. Check it out here: (chainstack.com)
- If you're looking for an unlimited option, there’s a flat‑fee, RPS‑tiered endpoint that starts at $149/month for “unlimited” requests (with 25 RPS). It’s a smooth way to scale up without the stress of request unit worries--perfect for those times when you're bridging events. More details can be found here: (chainstack.com)
- And don’t forget about the Yellowstone Geyser add-on! The pricing tiers start at $49/month for 1 stream, $149/month for 5 streams, and $449/month for 25 streams. It’s available from the Growth plan and works on the mainnet only. For more info, head over to: (chainstack.com)
Tip: If you're using Solana WSS clients, be cautious--unstable blockSubscribe can lead to drops. Instead, go for logsSubscribe or accountSubscribe, or even better, use Geyser for those busy programs. Keep an eye on those WSS close codes 1006/1009 and set up auto-reconnect with some jitter to smooth things out. Check out more details here!
Example: Geyser → Kafka → resilient webhooks in 8 steps
- Set up the Solana mainnet using either Global or Chainstack Cloud in places like London or New York, and don't forget to enable the Yellowstone gRPC Geyser add-on. You can find the details here.
- To better manage your volume, make use of program filters (like Raydium AMM and your app’s program IDs) in your SubscribeRequest. More info can be found here.
- When consuming gRPC, serialize it into an internal JSON envelope containing event_id, slot, signature, and a compact payload. Check out the specifics here.
- Send the data to Kafka while using topic partitioning based on program_id (or account) for better parallel processing.
- The consumer needs to sign the envelope with HMAC and then POST it to your internal webhook URL. Make sure to respond with a 200 OK only after you’ve done a durable write! You can read more about it here.
- For retries, use an exponential backoff strategy up to a maximum window. If it’s still not working after that, drop to a Dead Letter Queue (DLQ) with the exact event_id and headers so you can replay it later.
- When it’s time to replay after an outage, reconnect to Geyser using from_slot derived from your last committed slot to make sure there are no gaps. Get the full scoop here.
- For better observability, link Chainstack’s status/webhook alerts to your incident channel. Keep an eye on stream lag, reconnect counts, and the success rate for each endpoint. More details can be found here.
Result: it works just like a hosted webhook service but with lower latency and gives you greater control over retries, signatures, and storage.
Multi‑chain reliability stack you can deploy on Day 1
- Access rules: Keep RPC tight by locking it down with IP/domain in the console. This helps block unwanted traffic before it even reaches your nodes. (chainstack.com)
- Automatic multi‑endpoint failover: Say goodbye to the hassle of manually switching endpoints! With eRPC and Chainstack’s Platform API, you can easily discover and rotate across your Chainstack nodes by project, region, or provider. (docs.chainstack.com)
- Debug/Trace coverage: Chainstack provides standard debug_trace APIs across tons of EVMs--super handy for forensic webhook handlers that need the full execution context. (docs.chainstack.com)
- Regional placement: If you want to keep Solana close to your user base, pin it to London or NYC--and do the same for each chain! The “Available clouds, regions & locations” matrix has all the details you need to plan your latency budgets. (docs.chainstack.com)
- Independent monitoring: Check out Chainstack’s Compare Dashboard, which publicly tracks provider performance by chain and region. It’s a great tool to incorporate into your pre-trade checks. (docs.chainstack.com)
Best emerging practices for Solana “webhooks” on Chainstack
- If you’re working with time-sensitive strategies like sniping, MEV, or real-time risk, go with Geyser. It’s a solid choice! You might want to use logsSubscribe only if keeping things simple or budget constraints take priority over speed. Check out the details here.
- Make sure your push interface stays yours! Avoid leaking vendor-specific schemas into any downstream systems. It’s best to translate events to fit your own domain model at the bridge.
- Always verify every webhook you receive: use HMAC with a timestamp, reject anything with a skew greater than 5 minutes, and keep the raw body for non-repudiation. Coinbase has some great developer docs that provide a clear framework for verification. You can find them here.
- Aim for at-least-once delivery: set up idempotency keys (think event_id + signature), use a transactional outbox, and implement Dead Letter Queues (DLQs).
- Keep your hot path separate from enrichment: first, send a minimal event via POST, then enrich it later using getTransaction or your data lake. This way, you can keep latency nice and predictable. More info can be found here.
Procurement cheat‑sheet (copy/paste into your email to Chainstack Sales)
- Let’s double-check the current SLA targets for:
- RPC “Network Services” uptime on each chain;
- Geyser stream uptime and guarantees on mean time to detect (MTTD) plus how they handle credits for stream failures;
- Maintenance windows based on the region and for the Solana streaming add-on. (chainstack.com)
- Don’t forget to request the Enterprise “Custom Uptime SLAs” with a solid 99.99% for those crucial chains and make sure we have Premium support (<1 hr, 24/7). (chainstack.com)
- We should also ask for the most recent SOC 2 Type II report, but remember, it’s under NDA. (chainstack.com)
- Let’s confirm the stream quotas and pricing for Yellowstone (1/5/25 streams, Growth+). (chainstack.com)
- Finally, we need to lock in the regions: Solana Global + London/NYC; plus, let’s check the failover strategy and Geyser availability. (docs.chainstack.com)
Verdict
- Solana webhooks: Chainstack doesn't offer a one-click managed webhook option, but don’t worry! Their WSS and Yellowstone Geyser streaming are perfect for teams that need speed, reliability, and a bit of control. You can actually set up a 50-line bridge for webhook delivery that gives you stronger guarantees than most hosted solutions out there. Check out the details here.
- Multi-chain SLAs: You’ll get a solid base SLA of 99.9% each quarter, complete with defined credits. If you opt for the Enterprise plan, you can customize your support, enjoy 24/7 help, and access over 70 chains. If you need extra reliability, definitely push for that 99.99% and make sure to tie credits to both RPC and stream availability. More info can be found here.
If you're on the hunt for fully hosted Solana webhooks that come with pre-parsed events and require no coding at all, you might want to check out Helius and QuickNode. Just keep in mind that you might lose a bit of control, schema flexibility, and possibly experience some latency.
For teams looking to standardize their infrastructure, Chainstack is a solid choice. With a multi-chain setup, SOC 2 Type II compliance, and streaming options, it really serves as a reliable backbone. Plus, if you throw in a custom webhook bridge that fits your workflows, you'll be all set. (helius.dev)
Appendix: Useful links for your architects
- Check out the Chainstack Solana logs for subscriptions, like
/account,/root, and more in the Chainstack docs. - There’s a heads-up from Solana regarding the stability of
blockSubscribe--it's worth a look! You can find the info here. - For a deep dive, Chainstack has a blockSubscribe doc that even includes recommendations for Geyser. Check it out here.
- If you’re curious about Yellowstone’s gRPC Geyser, they’ve got docs and pricing laid out for you right here.
- Good news! Jito ShredStream is enabled by default on Chainstack’s Solana nodes. You can read more about it in the Chainstack docs.
- Don’t forget to peek at the Chainstack networks and regions matrix to confirm your target regions. You’ll find it here.
- Take a look at their SLA and support response time matrix, plus the pricing details about "Custom Uptime SLAs" on Chainstack's website.
- Interested in the Platform API for network and node discovery? There’s a quickstart for eRPC with Chainstack that’s definitely worth your time. Dive into the details here.
- Lastly, if you’re planning a comparison or migration, check out the Helius and QuickNode webhooks here.
Like what you're reading? Let's build together.
Get a free 30-minute consultation with our engineering team.
Related Posts
ByAUJay
Building 'Private Social Networks' with Onchain Keys
Creating Private Social Networks with Onchain Keys
ByAUJay
Tokenizing Intellectual Property for AI Models: A Simple Guide
## How to Tokenize “Intellectual Property” for AI Models ### Summary: A lot of AI teams struggle to show what their models have been trained on or what licenses they comply with. With the EU AI Act set to kick in by 2026 and new publisher standards like RSL 1.0 making things more transparent, it's becoming more crucial than ever to get this right.
ByAUJay
Creating 'Meme-Utility' Hybrids on Solana: A Simple Guide
## How to Create “Meme‑Utility” Hybrids on Solana Dive into this handy guide on how to blend Solana’s Token‑2022 extensions, Actions/Blinks, Jito bundles, and ZK compression. We’ll show you how to launch a meme coin that’s not just fun but also packs a punch with real utility, slashes distribution costs, and gets you a solid go-to-market strategy.

