Webhooks: link clicks land on your server automatically

Lix.li sends an event for every click straight to your URL via HTTP POST — in real time, HMAC-signed, with reliable delivery. No constant API polling: the data arrives the moment someone clicks.

Real-time · HMAC signature · retries and delivery log

# Lix.li itself sends POST to your server during transitions POST https://your-server.com/hooks X-Lix-Signature: sha256=9f86d0818884… Content-Type: application/json { "event_type": "redirects.batch", "count": 2, "events": [ { "link_id": 9053352, "country": "DE", "device": "mobile" } ] }

Why use webhooks

Get click data the instant it happens and build your own workflows on top of it

Real-time

Events arrive the moment a click happens. No need to poll the API on a schedule and wait for updates.

Data on every click

Country, city, device, OS, browser, referrer, and a bot flag — everything you need for your own analytics.

Secure by design

Every request is signed with HMAC using your own secret, so you can easily tell real events from spoofed ones.

Reliable delivery

If your server is down, delivery is retried. Every attempt and status is visible in the delivery log.

Use cases

Where teams typically route click events

Lix.li POST
Your own analytics or CRM

Pipe every click into your own database or CRM and build reports exactly the way you want.

Lix.li POST
Chat notifications

Have a Telegram, Slack, or Discord bot post about new clicks instantly, with no manual checking.

Lix.li POST
Automation

Trigger workflows in Zapier, Make, or n8n: a click event becomes the trigger for any downstream action.

What's inside a webhook

The redirects.batch event: a single payload bundles a batch of clicks from one time window

{ "delivery_id": "d_01HXY9F0…", "event_type": "redirects.batch", "sent_at": "2026-08-04T10:15:00Z", "window": { "from": "…10:14:00Z", "to": "…10:15:00Z" }, "count": 1, "truncated": false, "events": [ { "event_id": "e_9f86d0…", "link_id": 9053352, "datetime": "2026-08-04T10:14:12Z", "country": "DE", "city": "Berlin", "browser": "Chrome", "os": "Android", "device": "mobile", "ref_domain": "t.me", "group_id": null, "is_bot": false } ] }

The visitor's IP address is not included by default (it's personal data) — it's only added if you explicitly enable it for that endpoint.

What webhooks can do

Flexible configuration, strong security, and predictable delivery

Batched event delivery

Clicks arrive in batches (redirects.batch) over a time window — that saves requests to your server.

Scope it your way

All account links, one specific group, or a single link — get only the events you actually need.

HMAC signature

Every request is signed with your secret. You can rotate the secret at any time.

Retries and auto-disable

An unreachable server gets retried; a persistently dead endpoint is disabled automatically.

Delivery log

A history of every send, with statuses and bodies — easy to trace what went wrong.

Test send (ping)

Validate your integration with one click before any real traffic — your server gets a test event.

Rich event data

link_id, timestamp, country, city, OS, device, browser, referrer, and bot flag for every click.

Private by default

IP address isn't sent unless you explicitly turn it on for a specific endpoint.

How to set up a webhook

Five steps — from your server's URL to a live stream of click events

1
Create an endpoint

Sign up on Lix.li, open the Webhooks section, and enter your server's URL — Lix.li will send click events there.

2
Choose the scope

Decide which links to get events for: all links in your account, one specific group, or a single link.

3
Save the signing secret

Lix.li issues a secret key. Every request is signed with HMAC — check the signature header to confirm the event really came from Lix.li.

4
Send a test request

Click "Test" (ping) and confirm your server accepts the request and returns a 2xx. That validates the integration before real traffic hits it.

5
Watch the delivery log

The log shows every send, its status, and any retries. If your server is unreachable, delivery is retried, and a persistently dead endpoint gets disabled automatically.

Webhooks FAQ

A webhook is an HTTP notification that Lix.li sends to your server on its own whenever something happens. You don't need to poll any API — the data arrives automatically the moment someone clicks your link.
Clicks on your short links. Events arrive in batches (event_type = redirects.batch); each click carries a timestamp, country, city, OS, device, browser, referrer, and a bot flag.
JSON over HTTP POST. The body includes metadata (delivery_id, the time window, count) plus an events array with data for every click. A full example payload is on this page.
Every request is signed with HMAC based on your secret key — check the signature header against the request body to filter out forgeries. You can rotate the secret at any time.
Delivery is retried automatically. If an endpoint stays unresponsive for too long, it's temporarily disabled, and every attempt and its status stay in the delivery log — nothing gets silently dropped.
Yes. Choose the scope: all links in your account, links in one group, or a single link. That way you don't flood your server with traffic you don't need.
Not by default — it's personal data. IP is only included in events if you explicitly enable it in that endpoint's settings.
Webhooks are available on the Premium plan. Sign up and upgrade to Premium to connect your endpoint.

Build integrations on click events

Set up a webhook in a couple of minutes — and get click data exactly where you need it.

Webhooks on Lix.li are a way to get click notifications for your short links automatically. Instead of polling an API around the clock, you give Lix.li your server's URL, and it sends an HTTP POST there the moment someone clicks. That's a classic HTTP callback for short links, delivering click events into your system in real time.

Every request body is a redirects.batch event with an array of clicks: each one carries a timestamp, country, city, browser, operating system, device, referrer, and a bot flag. It's easy to pipe that data into your own database or CRM, turn it into click notifications in Telegram, Slack, or Discord, or use it as a trigger in Zapier, Make, and n8n. Requests are protected by an HMAC signature: you check the signature header against the body to filter out forgeries, and you can rotate the secret whenever you need to.

Delivery is predictable: if your server has an outage, events get retried, a persistently dead endpoint is temporarily disabled, and every attempt shows up in the delivery log. You can scope things to all your links, a single group, or one link, and validate the integration with a test send (ping) before any real traffic. Webhooks work alongside regular Lix.li short links, QR codes, and analytics, and are available on the Premium plan.