All checks were successful
Close Stale Issues / stale (push) Successful in 3s
322 lines
8.9 KiB
Markdown
322 lines
8.9 KiB
Markdown
<div align="center">
|
|
|
|
<img src="assets/banner.png" alt="Evercatch" width="800">
|
|
|
|
<br/>
|
|
<br/>
|
|
|
|
<img src="https://img.shields.io/badge/STATUS-ALPHA-red?style=flat-square&labelColor=000" alt="ALPHA">
|
|
|
|
<img src="https://img.shields.io/badge/BETA-JUNE%202026-orange?style=flat-square&labelColor=000" alt="Beta June 2026">
|
|
|
|
<img src="https://img.shields.io/badge/CLOSED%20SOURCE-111?style=flat-square&labelColor=000" alt="Closed Source">
|
|
|
|
<br/>
|
|
<br/>
|
|
|
|
### Webhook infrastructure that just works.
|
|
|
|
**One endpoint. Any provider. Reliable delivery.**
|
|
|
|
Point every webhook at Evercatch. We capture, normalize, and forward them to your app — with retries, history, and zero glue code.
|
|
|
|
<br/>
|
|
|
|
[Join the Beta](#-join-the-beta) · [Roadmap](ROADMAP.md) · [Docs](https://docs.evercatch.dev) · [Status](https://status.evercatch.dev) · [Pricing](#-pricing)
|
|
|
|
</div>
|
|
|
|
<br/>
|
|
|
|
> [!WARNING]
|
|
> **Evercatch is in active ALPHA development and is not production-ready.** Most external links (docs, dashboard, API, blog) will not be live until the beta launch. Interested in early access? Reach out at [contact@evercatch.dev](mailto:contact@evercatch.dev).
|
|
|
|
---
|
|
|
|
## The Problem
|
|
|
|
You're wiring up Stripe, SendGrid, GitHub, Shopify — all at once. Each one speaks a different language:
|
|
|
|
- Different payload schemas
|
|
- Different signature verification methods
|
|
- Different retry semantics
|
|
- No single place to debug, search, or replay events
|
|
|
|
**You're writing glue code instead of shipping features.**
|
|
|
|
## The Fix
|
|
|
|
```
|
|
Your Providers → Evercatch → Your App
|
|
```
|
|
|
|
Point every webhook at a single Evercatch endpoint. We handle the rest:
|
|
|
|
- **Normalize** every payload to a unified schema
|
|
- **Validate** signatures so you don't have to
|
|
- **Store** events with configurable retention (24h → 90 days)
|
|
- **Forward** to your destination with automatic retries and exponential backoff
|
|
- **Replay** any event from your dashboard in seconds
|
|
|
|
---
|
|
|
|
## Quick Start
|
|
|
|
### 1. Create an account
|
|
|
|
```bash
|
|
curl -X POST https://api.evercatch.dev/api/v1/auth/signup \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"email": "you@example.com",
|
|
"full_name": "Your Name",
|
|
"country": "IE"
|
|
}'
|
|
```
|
|
|
|
```json
|
|
{
|
|
"user": { "id": "550e8400-e29b-...", "email": "you@example.com" },
|
|
"api_key": { "api_key": "ec_live_abc123...", "prefix": "ec_live_abc1" },
|
|
"subscription": { "tier": "sandbox", "status": "active" }
|
|
}
|
|
```
|
|
|
|
### 2. Point your webhook provider at Evercatch
|
|
|
|
```
|
|
https://api.evercatch.dev/api/v1/webhooks/{provider}/{your-user-id}
|
|
```
|
|
|
|
Configure Stripe in 30 seconds:
|
|
1. Open [Stripe Dashboard → Webhooks](https://dashboard.stripe.com/webhooks)
|
|
2. Add endpoint → paste your Evercatch URL
|
|
3. Add header: `X-API-Key: ec_live_abc123...`
|
|
4. Select events → done
|
|
|
|
### 3. Register a destination
|
|
|
|
```bash
|
|
curl -X POST https://api.evercatch.dev/api/v1/destinations \
|
|
-H "X-API-Key: ec_live_abc123..." \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"name": "My API",
|
|
"url": "https://yourapp.com/webhooks",
|
|
"providers": ["stripe"],
|
|
"event_types": ["payment.*"]
|
|
}'
|
|
```
|
|
|
|
Evercatch now receives, normalizes, stores, and forwards every matching event — automatically retrying on failure.
|
|
|
|
### Or use a native SDK
|
|
|
|
```python
|
|
# Python
|
|
from evercatch import Evercatch
|
|
|
|
ec = Evercatch("ec_live_abc123...")
|
|
ec.destinations.create(
|
|
name="My API",
|
|
url="https://yourapp.com/webhooks",
|
|
providers=["stripe"],
|
|
event_types=["payment.*"],
|
|
)
|
|
```
|
|
|
|
```typescript
|
|
// Node.js / TypeScript
|
|
import { Evercatch } from "@evercatch/sdk";
|
|
|
|
const ec = new Evercatch("ec_live_abc123...");
|
|
await ec.destinations.create({
|
|
name: "My API",
|
|
url: "https://yourapp.com/webhooks",
|
|
providers: ["stripe"],
|
|
eventTypes: ["payment.*"],
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## Integrations
|
|
|
|
We are launching with major integrations from day one, with more coming after beta.
|
|
|
|
| Provider | Incoming Webhooks | Signature Verification | Normalized Schema |
|
|
|----------|:-----------------:|:---------------------:|:-----------------:|
|
|
| **Stripe** | ✅ | ✅ | ✅ |
|
|
| **More at launch** | ✅ | ✅ | ✅ |
|
|
|
|
> New integrations are tracked in [ROADMAP.md](ROADMAP.md). Want to see a specific provider? [Request it here](https://git.psmattas.com/Evercatch/.profile/issues/new?template=.gitea%2fissue_template%2ffeature_request.yml).
|
|
|
|
---
|
|
|
|
## SDKs
|
|
|
|
Native, idiomatic clients for your language — all built on the same REST API.
|
|
|
|
| Language | Package | Status |
|
|
|----------|---------|--------|
|
|
| **Python** | `pip install evercatch` | Launching with beta |
|
|
| **Node.js / TypeScript** | `npm install @evercatch/sdk` | Launching with beta |
|
|
| **Go** | `go get github.com/evercatch/evercatch-go` | Launching with beta |
|
|
| **Ruby** | `gem install evercatch` | Launching with beta |
|
|
|
|
All SDKs support the full API surface: destinations, event history, replays, and API key management.
|
|
|
|
---
|
|
|
|
## CLI
|
|
|
|
A first-class CLI tool ships at launch for local development workflows.
|
|
|
|
```bash
|
|
# Install
|
|
npm install -g @evercatch/cli
|
|
|
|
# Authenticate
|
|
ec auth login
|
|
|
|
# Forward live events to your local server during development
|
|
ec listen --forward http://localhost:3000/webhooks
|
|
|
|
# Replay a past event
|
|
ec events replay evt_01j9x...
|
|
|
|
# Inspect recent events
|
|
ec events list --provider stripe --limit 20
|
|
```
|
|
|
|
The CLI is designed to replace `ngrok` style tunnelling for webhook development — no tunnels needed, just replay and inspect from your terminal.
|
|
|
|
---
|
|
|
|
## Pricing
|
|
|
|
| Plan | Price | Events / mo | Retention | Destinations | Overage |
|
|
|------|-------|-------------|-----------|--------------|---------|
|
|
| **Sandbox** | Free | 100k | 24 hours | 2 | — |
|
|
| **Indie** | €29 / mo | 1M | 7 days | 10 | €0.50 / 100k |
|
|
| **Studio** | €99 / mo | 10M | 30 days | Unlimited | €0.30 / 100k |
|
|
| **Enterprise** | €299 / mo | 50M | 90 days | Unlimited | €0.20 / 100k |
|
|
|
|
<details>
|
|
<summary>What's included in each plan</summary>
|
|
|
|
<br/>
|
|
|
|
**All plans**
|
|
- Unlimited API keys
|
|
- Real-time event forwarding
|
|
- Automatic retries with exponential backoff
|
|
- 99.9% uptime SLA
|
|
- Email support
|
|
|
|
**Studio and above**
|
|
- Full-text event search
|
|
- Advanced filtering
|
|
- Event replay
|
|
- Custom retention windows
|
|
|
|
**Enterprise**
|
|
- Priority support + dedicated Slack channel
|
|
- Custom SLAs and contracts
|
|
- SSO / SAML
|
|
- Custom retention and event volume
|
|
|
|
</details>
|
|
|
|
[Start Free →](https://evercatch.dev/signup) · [View Full Pricing →](https://evercatch.dev/pricing)
|
|
|
|
---
|
|
|
|
## Join the Beta
|
|
|
|
> We are preparing for **beta launch in June 2026** *(tentative)*. See [ROADMAP.md](ROADMAP.md) for details.
|
|
|
|
We're looking for early developers to test the platform before public launch. Sign up, try it out, and share honest feedback — we'll set you up with a **free Indie or higher subscription** account for the duration of testing.
|
|
|
|
**To join the beta developer list:**
|
|
|
|
Send an email to [contact@evercatch.dev](mailto:contact@evercatch.dev) with the subject line **`Beta Dev List`** and a short description of your use case.
|
|
|
|
We'll follow up with access details as we get closer to launch.
|
|
|
|
---
|
|
|
|
## Reference
|
|
|
|
<details>
|
|
<summary>Found a bug?</summary>
|
|
|
|
<br/>
|
|
|
|
**[→ Open a Bug Report](https://git.psmattas.com/Evercatch/.profile/issues/new?template=.gitea%2fissue_template%2fbug_report.yml)**
|
|
|
|
Include: steps to reproduce · expected vs actual behaviour · your subscription tier · event IDs if applicable.
|
|
|
|
Do **not** include API keys or sensitive data in public issues.
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Have a feature request?</summary>
|
|
|
|
<br/>
|
|
|
|
**[→ Open a Feature Request](https://git.psmattas.com/Evercatch/.profile/issues/new?template=.gitea%2fissue_template%2ffeature_request.yml)**
|
|
|
|
Tell us what problem it solves, how you'd use it, and which tier it matters most for.
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Security vulnerability?</summary>
|
|
|
|
<br/>
|
|
|
|
**Do not open a public issue.**
|
|
|
|
Email [security@evercatch.dev](mailto:security@evercatch.dev) — we respond within 24 hours. See [SECURITY.md](SECURITY.md) for our full disclosure policy and bug bounty details.
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Need help?</summary>
|
|
|
|
<br/>
|
|
|
|
- [docs.evercatch.dev](https://docs.evercatch.dev) — full documentation
|
|
- [support@evercatch.dev](mailto:support@evercatch.dev) — email support
|
|
- [billing@evercatch.dev](mailto:billing@evercatch.dev) — billing questions
|
|
- [Open a support ticket →](https://git.psmattas.com/Evercatch/.profile/issues/new?template=.gitea%2fissue_template%2fsupport_request.yml)
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Legal</summary>
|
|
|
|
<br/>
|
|
|
|
[Terms of Service](https://evercatch.dev/terms) · [Privacy Policy](https://evercatch.dev/privacy) · [SLA](https://evercatch.dev/sla) · [Acceptable Use](https://evercatch.dev/acceptable-use)
|
|
|
|
Community: [Code of Conduct](CODE_OF_CONDUCT.md) — report violations to [conduct@evercatch.dev](mailto:conduct@evercatch.dev)
|
|
|
|
</details>
|
|
|
|
---
|
|
|
|
<div align="center">
|
|
|
|
<br/>
|
|
|
|
**No webhook left behind.**
|
|
|
|
<br/>
|
|
|
|
[evercatch.dev](https://evercatch.dev) · [status.evercatch.dev](https://status.evercatch.dev) · [contact@evercatch.dev](mailto:contact@evercatch.dev)
|
|
|
|
</div>
|