Architectural Model
Bunnylynk structures webhook management around four primary primitives:
+------------------+ +--------------------+ +-----------------------+
| SOURCE | | CONNECTION | | DESTINATION |
| Ingests Webhooks +-------->| Rules, Transforms +-------->| Delivers to your App |
| from 3rd Party | | Filters & Retries | | (Rate-limited, safe) |
+------------------+ +--------------------+ +-----------------------+
| | |
+-----------------------------+--------------------------------+
|
v
+-------------------+
| EVENTS LEDGER |
| Audit log, status |
| & replay history |
+-------------------+
Ingestion
Sources
Unique webhook ingestion endpoints receiving traffic from third-party services.
Delivery
Destinations
Your internal HTTP endpoints, serverless functions, or queue workers.
Pipeline
Connections
The routing glue binding Sources to Destinations with custom rules.
Observability
Events & Attempts
Immutable audit ledger storing payloads, headers, latency, and status.
How the Pieces Fit Together
- An external service sends an HTTP POST request to a Source.
- Bunnylynk checks any active Connections bound to that Source.
- For each active Connection:
- Evaluates filter rules (e.g.
body.type == "payment_intent.succeeded"). - If matched, transforms the payload or headers if configured.
- Schedules delivery attempts to the target Destination.
- Evaluates filter rules (e.g.
- Every attempt is recorded as an Event Attempt, creating a complete historical trace.