Core Concepts

The Webhook Pipeline

Every webhook flows through a consistent pipeline:

Source → Ingest → Event → Route Matching → Transform → Deliver → (DLQ)

1. Ingest

When a webhook hits your ingest URL, WebhookLane stores the full request (headers + JSON body) as an event and returns 202 Accepted immediately. This ensures your webhook provider never times out.

2. Route Matching

Active routes for the event's source are evaluated. Each route can have filter conditions — if all conditions match (AND logic), the route fires.

3. Filter Conditions

Filters use dot-notation field paths and support these operators:

  • equals — exact string match
  • not_equals — inverse match
  • contains — substring match
  • exists — field is present and not null

Example: event.type equals checkout.completed

4. Payload Transformation

Routes can include a Handlebars template that reshapes the payload before delivery. The original event payload is the template context. Custom helpers include:

  • {{json field}} — JSON stringify a value
  • {{#eq a b}}...{{/eq}} — conditional equality
  • {{truncate field 80}} — truncate with ellipsis
  • {{formatDate field}} — ISO date formatting

5. Delivery

Deliveries are HTTP POST requests to the destination URL. If a delivery fails (non-2xx response or timeout), it is retried up to 3 times with exponential backoff (~1min, ~5min, ~15min).

6. Dead Letter Queue

After all retries are exhausted, the delivery enters the dead letter queue. From the DLQ, you can inspect the failure reason, replay individual deliveries, or replay in bulk.