Webhooks

Webhook events, delivery pacing, retries and backoff, delivery history in the app, and OpenAPI.

EventWhen it firesSpecification
match.createdSnitchFeed stored a new match for your organization (listener matched a post or comment) and routed it to this endpoint.Event and JSON body
match.resentSomeone queued an existing match from the app (Send to webhook). Same JSON body shape as match.created.Same body as match.created

Set up webhooks

Add or manage HTTPS destinations in the product: Integrations → Webhooks.

Delivery pacing

Each webhook destination has two independent, configurable limits (set in Integrations → Webhooks → Advanced in the app):

  • Requests per minute — defaults to 10 deliveries per sliding 60-second window.
  • Concurrent requests — defaults to 1 in-flight delivery at a time.

Tools like n8n, Zapier, and similar automation endpoints often fail or drop work when too many requests land at once — n8n, for example, drops anything beyond its configured inflight limit (5 by default) regardless of how spread out those requests are over time. That's why concurrency and rate are separate knobs: a per-minute cap alone can't stop a burst of simultaneous deliveries from tripping a destination's own inflight limit. Raise either limit for destinations that can handle more throughput (e.g. Clay, Make.com scenarios backed by a higher-throughput API step).

These per-destination limits are separate from retries on a single delivery (below): pacing spreads distinct matches across time and concurrency; backoff spaces repeated attempts for one failed delivery.

Retries and exponential backoff

If your endpoint returns a non-2xx response, times out, or cannot be reached, SnitchFeed retries that delivery using BullMQ exponential backoff.

  • Attempts: Each delivery job runs up to 10 attempts in total—that includes the first POST, so you get up to 9 automatic retries after failures.
  • Backoff: Retries use an exponential strategy with a 30 second base delay. Waits grow from that base (each delay roughly doubles), so we do not hammer your URL while transient errors or short outages recover.
  • 404: If your endpoint keeps returning 404, we treat that as a broken URL. After enough failed attempts we deactivate that webhook in the app so it does not retry indefinitely. Other error codes still follow the backoff rules until attempts are exhausted.

Timeouts and payload expectations for a single POST are documented on match.created (match.resent uses the same body).

Delivery history in the app

To audit what we sent—timestamps, HTTP codes, response snippets, and status—open the product: Integrations → Webhooks → Log (requires a plan that includes webhooks). You can filter by status, endpoint, and date range, page through results, and expand a row to read the full stored response body when available.

Integrations → Webhooks with the Log tab selected, showing filters and the delivery table

OpenAPI

Machine-readable contract: GET https://api.snitchfeed.com/v1/openapi.json — see webhooks.match.created.

On this page