<p align="center">
  <img src="assets/banner.png" alt="Evercatch Banner" width="800">
</p>

<p align="center">
  <strong>The webhook infrastructure platform for developers who want simplicity without sacrificing power.</strong>
</p>

<p align="center">
  <a href="https://evercatch.dev">Website</a> •
  <a href="https://docs.evercatch.dev">Docs</a> •
  <a href="https://app.evercatch.dev">Dashboard</a> •
  <a href="https://status.evercatch.dev">Status</a>
</p>

---

> **The webhook infrastructure platform for developers who want simplicity without sacrificing power.**

Evercatch is a modern webhook ingestion and forwarding platform that captures, normalizes, and reliably delivers webhooks from any source to any destination. Built for developers, by developers.

---

## 📋 What is Evercatch?

Evercatch sits between your webhook providers (Stripe, SendGrid, GitHub, etc.) and your application, giving you:

- **📦 Unified Schema** - One normalized format for all webhook providers
- **🔄 Reliable Delivery** - Automatic retries with exponential backoff
- **📊 Event History** - Search, filter, and replay webhooks up to 90 days
- **⚡ Lightning Fast** - Sub-100ms webhook ingestion
- **🔐 Secure by Design** - API key authentication, filtered sensitive data
- **💰 Usage-Based Pricing** - Pay only for what you use, with generous free tier

---

## 💡 Why Evercatch?

### The Problem
You're integrating with multiple services (Stripe for payments, SendGrid for emails, Shopify for orders). Each has:
- Different webhook formats
- Different retry behaviors
- Different ways to verify authenticity
- No central dashboard to debug issues

**You spend more time managing webhooks than building your product.**

### The Evercatch Solution
Point all your webhooks at Evercatch. We:
1. ✅ Receive and validate webhooks from any provider
2. ✅ Normalize them to a unified schema
3. ✅ Store them with intelligent retention (7-90 days)
4. ✅ Forward them to your app with automatic retries
5. ✅ Give you a beautiful dashboard to search, filter, and replay events

**You focus on your product. We handle the webhooks.**

---

## 🚀 Quick Start

### 1. Sign Up
```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"
  }'
```

**Response:**
```json
{
  "user": { "id": "550e8400-...", "email": "you@example.com" },
  "api_key": {
    "api_key": "ec_live_abc123...",
    "prefix": "ec_live_abc1"
  },
  "subscription": { "tier": "sandbox", "status": "trialing" }
}
```

### 2. Point Your Webhooks at Evercatch
```
https://api.evercatch.dev/api/v1/webhooks/stripe/550e8400-...
```

**Example: Configure Stripe**
1. Go to [Stripe Dashboard → Webhooks](https://dashboard.stripe.com/webhooks)
2. Click "Add Endpoint"
3. Enter: `https://api.evercatch.dev/api/v1/webhooks/stripe/550e8400-...`
4. Select events
5. Add header: `X-API-Key: ec_live_abc123...`

### 3. Configure Your 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": "Production API",
    "url": "https://yourapp.com/webhooks",
    "providers": ["stripe"],
    "event_types": ["payment.*"]
  }'
```

### 4. That's It! 🎉
Evercatch now:
- ✅ Receives webhooks from Stripe
- ✅ Normalizes them to a unified schema
- ✅ Stores them for 24 hours (Sandbox tier)
- ✅ Forwards them to `yourapp.com/webhooks`
- ✅ Retries on failure

---

## 📊 Pricing

| Plan | Price | Events/mo | Retention | Destinations | Overage |
|------|-------|-----------|-----------|--------------|---------|
| **Sandbox** | €0 | 100k | 24 hours | 2 | — |
| **Indie** | €29 | 1M | 7 days | 10 | €0.50/100k |
| **Studio** | €99 | 10M | 30 days | Unlimited | €0.30/100k |
| **Enterprise** | €299 | 50M | 90 days | Unlimited | €0.20/100k |

**All plans include:**
- ✅ Unlimited API keys
- ✅ Real-time event forwarding
- ✅ Automatic retries
- ✅ 99.9% uptime SLA
- ✅ Support via email

**Studio+ includes:**
- ✨ Full-text search
- ✨ Advanced filtering
- ✨ Event replay
- ✨ Custom retention

**Enterprise includes:**
- 🚀 Priority support
- 🚀 Custom SLAs
- 🚀 Dedicated Slack channel
- 🚀 SSO/SAML
- 🚀 Custom contracts

[**→ Start Free**](https://evercatch.dev/signup) · [**→ View Full Pricing**](https://evercatch.dev/pricing)

---

## 🐛 Found a Bug?

We want to fix it! **[→ Report a Bug](../../issues/new?template=bug_report.md)**

Please include:
- Clear steps to reproduce
- Expected vs actual behavior
- Your subscription tier
- Event IDs (if applicable)

**Do NOT include API keys or sensitive data.**

---

## ✨ Have a Feature Idea?

We'd love to hear it! **[→ Request a Feature](../../issues/new?template=feature_request.md)**

Tell us:
- What problem it solves
- How you'd use it
- Which tier would benefit

---

## 🔐 Security Vulnerability?

**DO NOT open a public issue.**

**Email:** [security@evercatch.dev](mailto:security@evercatch.dev)

We'll respond within 24 hours. See our [Security Policy](SECURITY.md) for details.

---

## ❓ Need Help?

- 📚 **Documentation**: [docs.evercatch.dev](https://docs.evercatch.dev)
- 📧 **Email Support**: [support@evercatch.dev](mailto:support@evercatch.dev)
- 💳 **Billing**: [billing@evercatch.dev](mailto:billing@evercatch.dev)
- **[→ Open a Support Ticket](../../issues/new?template=support_request.md)**

---

## 📚 Resources

- **Documentation:** [docs.evercatch.dev](https://docs.evercatch.dev)
- **API Reference:** [docs.evercatch.dev/api](https://docs.evercatch.dev/api)
- **Status Page:** [status.evercatch.dev](https://status.evercatch.dev)
- **Blog:** [blog.evercatch.dev](https://blog.evercatch.dev)
- **Roadmap:** [roadmap.evercatch.dev](https://roadmap.evercatch.dev)
- **Changelog:** [changelog.evercatch.dev](https://changelog.evercatch.dev)

---

## 🤝 Contributing

We welcome community contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for:
- Bug reports
- Feature requests
- Documentation improvements
- Beta testing
- Integration examples

---

## 📜 Code of Conduct

All community members must follow our [Code of Conduct](CODE_OF_CONDUCT.md).

**TL;DR:** Be respectful, professional, and kind. No harassment, discrimination, or spam.

**Report violations:** [conduct@evercatch.dev](mailto:conduct@evercatch.dev)

---

## ⚖️ Legal

- **Terms of Service:** [evercatch.dev/terms](https://evercatch.dev/terms)
- **Privacy Policy:** [evercatch.dev/privacy](https://evercatch.dev/privacy)
- **SLA:** [evercatch.dev/sla](https://evercatch.dev/sla)
- **Acceptable Use:** [evercatch.dev/acceptable-use](https://evercatch.dev/acceptable-use)

---

<p align="center">
  <img src="assets/banner.png" alt="Evercatch Banner" width="800">
  <br/>
  <strong>No webhook left behind</strong>
  <br/><br/>
  <a href="https://evercatch.dev">Website</a> •
  <a href="https://docs.evercatch.dev">Docs</a> •
  <a href="https://app.evercatch.dev">Dashboard</a> •
  <a href="https://status.evercatch.dev">Status</a>
</p>
