Webhooks

Configure domain-level webhooks in Smler to receive real-time click notifications. Set a unique webhook URL per custom domain for granular event routing.


Use webhooks to get real-time notifications when someone clicks a link on your custom domain.

Webhooks allow you to listen to real-time events and build custom integrations such as:

  • Get a Slack notification when someone clicks your pitch deck link

  • Send an email when someone clicks a product link

  • Push a lead to your CRM when a potential customer clicks a link in an email

  • Trigger a custom workflow in Zapier or N8N

  • and much more…

Webhooks are now per-domain

Webhooks in Smler are configured at the custom domain level. This means each domain you manage can have its own independent webhook endpoint — giving you granular control over which events are routed where.

For example, if you run links.acme.io for marketing campaigns and go.acme.io for internal tools, you can send click events from each domain to completely different endpoints.

Configuring a webhook

  1. Navigate to Domains in the Smler app.

  2. Click the domain you want to configure.

  3. In the domain settings panel, enter your endpoint URL in the Webhook URL field.

  4. Click Save.

  5. Click Test Webhook to send a sample payload and confirm delivery.

From this point on, every click on a short link under that domain will POST a notification to your endpoint.

If you don't have an endpoint already set up, you can create a temporary one using webhook.site. We have a detailed guide on how to test with webhook.site.

Payload format

Each webhook request is a POST with a Content-Type: application/json body containing the click details and the short URL object:

{
  "ip": "103.21.244.0",
  "country": "India",
  "city": "Mumbai",
  "state": "Maharashtra",
  "device": "mobile",
  "browser": "Chrome",
  "os": "Android",
  "referrer": "google.com",
  "shortUrl": {
    "shortCode": "abc123",
    "domain": "links.acme.io",
    "originalUrl": "https://www.acme.io/pricing",
    "dltHeader": "",
    "createdBy": "..."
  }
}

Retry Behaviour

If your webhook endpoint does not respond with a success status code (2XX), we retry the request to ensure every message is delivered.

Retries use an exponential backoff to avoid overwhelming your endpoint (the thundering herd problem). The delay is capped at 24 hours from the 5th retry onwards.

Retry attempt

Delay

1st

12s

2nd

2m 28s

3rd

30m 8s

4th

6h 7m 6s

5th

24h

6th+

24h

Temporary Disablement

If a webhook endpoint consistently fails, it will be automatically disabled after a series of failed attempts. Notifications are sent to Workspace owners at the following intervals:

  • After 5, 10, and 15 consecutive failed attempts.

  • On the 20th consecutive failed attempt the webhook will be disabled.

You can re-enable a disabled webhook by returning to the domain settings and saving the endpoint URL again.

You can extend this integration to trigger custom flows in n8n and Zapier.

Published with LeafPad