Docs

Ingest docs

Receive vendor webhooks, deliver them to your app, and recover when events are late, duplicated, or missing.

Quick start

  1. Sign in and open Ingest.
  2. Create a source for the vendor account you want to receive from.
  3. Copy the generated ingest URL into the vendor webhook settings.
  4. Add the vendor signing secret when the vendor gives you one.
  5. Add one or more destinations for the URLs in your app that should receive events.
  6. Send a test event from the vendor dashboard and confirm it appears in the ledger.
  7. Open the event detail page to verify inbound signature status and outbound delivery attempts.

Sources and destinations

A source represents one vendor feed, such as production Stripe or a Shopify store. Destinations are the endpoints in your app that receive matching events from that source.

Use separate sources for production and test feeds. This keeps replay, metrics, alerts, and signing secrets easy to reason about.

  • Source name: use a name your team will recognize during an incident, such as "Production Stripe" or "Shopify Plus store".
  • Vendor: choose the vendor when one is listed so Relin can apply the right signature and event extraction behavior.
  • Signing secret: paste the secret from the vendor when available. You can create the source first and add the secret later.
  • Destination URL: use the handler in your app that should receive forwarded webhook events.
  • Event type filter: leave blank to deliver all events, or enter a comma-separated list such as invoice.paid, invoice.payment_failed.
  • Body filter: use a body path and value when only a subset of payloads should reach a destination.

Vendor setup

  • Stripe: add the Relin URL as a webhook endpoint, select the events your product depends on, send a test event, then paste the signing secret into the source. For connected accounts, use the Stripe connection controls from the source settings page.
  • Shopify: create webhooks for orders, fulfillments, refunds, and checkouts. Relin tracks duplicates, delivery attempts, and order-related gaps where the event stream gives enough information.
  • GitHub: add a repository or organization webhook, choose JSON delivery, and select the event groups your app needs. Relin tracks delivery, duplicates, and retry behavior.
  • Slack, Twilio, SendGrid, Paddle, Zoom, WooCommerce, and custom feeds: point the vendor callback URL at Relin, then use destinations and filters to control where events go.

What to check after the first event

  • The event appears in the ledger with the expected source and event type.
  • Signature status is successful when you configured a signing secret.
  • The destination received a delivery attempt.
  • The response status matches what your handler returned.
  • No open issue was created for a failed signature, failed delivery, duplicate, or missing follow-up event.

Ledger and replay

The ledger lets you search received events, inspect delivery attempts, and replay matching traffic after a destination outage or missed workflow.

Use the search controls to narrow by source, text, signature status, or tag before replaying a filtered set. Use a single-event replay when you already know exactly which event needs another delivery.

Troubleshooting

  • No event appears: confirm the vendor is using the full Relin URL shown for the source and that the source has not been deleted.
  • Signature failed: copy the signing secret again from the vendor dashboard and update the source settings.
  • Destination failed: open the event detail page, inspect the latest response status or error summary, fix your handler, then replay.
  • Too many events: add event type, entity, or body filters to the destination so only the handler's events are delivered.
  • Repeated duplicates: check whether the vendor is retrying after your app returns a timeout or non-2xx response.