Skip to main content

Setup

To begin receiving real-time event notifications via webhooks, visit Create a webhook

Event Ordering

Slash cannot guarantee the sequential delivery of events as they occur, nor can it ensure they will be received only once. Most events are generally received in the order in which they occurred; however, events created in close proximity may be received out of order. In the case that an event is received multiple times the eventId field should be used as an idempotency key.

Webhook Retries

If Slash does not receive a 2xx response code from your server within 10 seconds, it will retry delivery up to 12 times with exponential backoff.

Endpoint Backoff & Auto-Disable

If webhook deliveries consistently fail, Slash will automatically put your endpoint into a backing-off state to avoid overwhelming your server.

How it works

  1. Notification retries: Each notification is retried up to 12 times before being marked as permanently failed
  2. Endpoint backoff: After a notification permanently fails (exhausts all retries), the endpoint enters a backoff period
  3. Progressive delays: Each consecutive permanent failure increases the backoff duration
  4. Auto-disable: After 6 consecutive permanent failures with no successful deliveries, the endpoint is automatically disabled
  5. Reset on success: Any successful delivery immediately resets the backoff cycle to zero
Important notes:
  • While in backing-off or disabled status, new events are queued (not lost)
  • When you re-enable the endpoint, all queued events will be delivered
  • You can re-enable an endpoint at any time via the Update webhook endpoint by setting status: "active"
  • A successful delivery will reset the backoff cycle

Webhook Signing

Every webhook we send will include a slash-webhook-signature header. In order to verify that the webhook actually came from Slash, we recommend verifying the header value by using our public RSA key, found here. To validate the signature, you can use any tool that supports RSA signature verification.

Nodejs Example

import crypto from 'crypto'

const signature = res.headers['slash-webhook-signature']

const result = crypto.verify(
  'sha256',
  Buffer.from(res.body),
  <SLASH_PUBLIC_RSA_KEY>,
  Buffer.from(signature, 'base64')
)