Integrations
Webhooks
Receive a JSON POST on every recorded click. Same event Zapier REST Hooks subscribe to.
On Growth and Ultimate, Letlink POSTs JSON to every HTTPS URL registered on the workspace when a click is recorded. Owners and admins add or remove URLs under Integrations → Webhooks. Members can see the list but cannot change it.
Add an endpoint
- Stand up an HTTPS URL that accepts
POSTwithContent-Type: application/json. HTTP is rejected. - Paste it into Integrations → Webhooks and save. The event name is
link_visited. - Click one of your short links (from a network that is not over the monthly cap). You should see a request within a few seconds — delivery is queued, not inline on the redirect.
You can also subscribe from the API: POST /api/v1/hooks/subscribe with target_url and optional event (defaults to link_visited). Zapier REST Hooks call that same pair of subscribe/unsubscribe routes.
Payload
The body is the canonical visit object. Empty UTM or store fields are null.
{
"visit_id": 42,
"visit_time": "2026-09-09T18:01:22+00:00",
"link_type": "utm",
"link_shortcode": "summer",
"link_domain": "letl.ink",
"link_destination_url": "https://example.com/a",
"utm_source": "newsletter",
"utm_campaign": "sep",
"utm_medium": "email",
"google_play_app_url": null,
"google_play_utm_source": null,
"google_play_utm_campaign": null,
"app_store_app_url": null,
"app_store_ct": null,
"instagram_username": null,
"visitor_ip": "203.0.113.10",
"visitor_browser": "Chrome",
"visitor_device_type": "desktop",
"visitor_referrer": "https://mail.example.com/",
"visitor_variation": "hero-b"
}
When a webhook does not fire
- The workspace is on Free or Solo (
allowsWebhooksis off). - The monthly tracked-click cap is already reached — the redirect still happens, no row is written, so nothing is dispatched.
- A per-device visit limit returned 429 before a click was stored.
- A country access rule turned the visitor away. Blocked visits are never stored as clicks.
- The target URL is down. Delivery is best-effort and must never delay the visitor; failed posts are not retried from this page.
Who receives what
Hooks are stored per user. Every member's link_visited URLs are notified for clicks on any link in the workspace. If two teammates each subscribed Zapier, both Zaps run. Remove unused URLs so a leftover Catch Hook does not keep firing.