Skip to content
noBSredir

Webhooks

Webhooks let you receive automatic HTTP notifications when events happen in your workspace - a link is created, a domain is verified, a member is removed, and more. Use them to connect nobsredir to Slack, Zapier, your CRM, or any system that can receive HTTP requests.

Available on Pro, Team, and Agency plans.

How it works

  1. You create a webhook in your workspace and point it at a URL you control
  2. You choose which events you care about (e.g. link.created, link.deleted)
  3. When one of those events happens, we send an HTTP POST to your URL with the event details
  4. Your server processes the event and responds with a 2xx status code

That’s it. No polling, no delays.

Create a webhook

  1. Go to Settings > Webhooks
  2. Click New Webhook
  3. Enter a name, your HTTPS endpoint URL, and select the events you want
  4. Click Create
  5. Copy the secret immediately - it’s only shown once

Events you can subscribe to

EventWhat happened
link.createdA link was created (single or bulk)
link.updatedA link’s target, slug, tags, or settings changed
link.deletedA link was deleted (single or bulk)
link.expiredAn expired link was accessed for the first time after its expiry date
link.brokenA monitored link started returning errors
link.recoveredA previously broken link started working again
domain.addedA custom domain was added
domain.verifiedA custom domain passed DNS verification
domain.removedA custom domain was deleted
member.addedA member was added to the workspace
member.removedA member was removed
member.role_changedA member’s role was changed

What you receive

Each webhook delivery is a JSON POST request. Here’s what a link.created event looks like:

{
"id": "evt_a1b2c3d4e5f6g7h8",
"type": "link.created",
"workspace_id": "ws_abc123",
"timestamp": "2025-01-20T14:05:00.000Z",
"data": {
"id": "lnk_xyz789",
"domain": "go.yourco.com",
"slug": "demo",
"target": "https://example.com/page",
"short_url": "https://go.yourco.com/demo"
}
}

The data field contains the relevant details for each event type.

Test your webhook

After creating a webhook, click Test to send a test event to your endpoint. This lets you verify your server is receiving and processing events correctly before real events start firing.

The test response shows the HTTP status code, response time, and any errors - so you can debug issues without waiting for real events.

Manage webhooks

Pause delivery

Set a webhook to inactive to temporarily stop receiving events. Events that happen while paused are not queued - they’re simply skipped. Reactivate when you’re ready.

Rotate secret

If your webhook secret is compromised, click Rotate Secret to generate a new one. The old secret stops working immediately. Update your server with the new secret right away.

Delivery logs

Every delivery attempt is logged with the HTTP status code, response time, and success/failure status. Logs are kept for 7 days.

Filter by success or failure to quickly find issues.

Security

Verifying signatures

Every webhook delivery includes an X-Webhook-Signature header. Always verify this signature in your handler to confirm the request came from nobsredir, not a third party.

The signature is an HMAC-SHA256 hash of the timestamp and body, using your webhook secret as the key. See the developer docs for verification code in Node.js and Python.

URL requirements

  • Must use HTTPS (not HTTP)
  • Cannot point to private/internal addresses (localhost, 192.168.x.x, 10.x.x.x, etc.)
  • Maximum 2048 characters

Limits

PlanMax webhooks per workspace
FreeNot available
Pro3
Team10
Agency25

Good to know

  • Best-effort delivery - events are sent once. If your server is down, the event is logged as failed but not retried. Check delivery logs to catch any missed events.
  • 5-second timeout - if your endpoint doesn’t respond within 5 seconds, the delivery is marked as failed.
  • Ordering - events are delivered in approximate order. If strict ordering matters, use the timestamp field in the payload.