Webhooks: Getting Notified When Links Are Used
Webhooks let TinyX notify another tool the moment something happens on a link: a visit, a download, an upload to an Upload Drop, a form response and more. TinyX doesn't send email notifications for link activity, so webhooks are how you get alerts. They're on every plan.
Supported destinations
TinyX recognizes these URLs and formats the message for them automatically:
- Slack (
https://hooks.slack.com/...): a formatted message in a channel - Discord (
https://discord.com/api/webhooks/...): a rich embed in a channel - Google Chat (
https://chat.googleapis.com/...): a message in a Space - Any other HTTPS URL: a JSON
POSTyou can process yourself (Zapier, Make, your own server)
Webhook URLs must use HTTPS. Plain HTTP and IP-address URLs are rejected.
Setting up a webhook
Webhooks are set up in two steps: add the URL to your account, then attach it to the links you care about.
- Go to your account Settings and open the Webhooks section
- Add your webhook URL (and an optional label)
- Open a link (or create a new one) and, under Notify on activity, tick the webhooks that should receive its events
- Save
A webhook only fires for links it's attached to. There's no per-event filter: an attached webhook receives every event for that link.
Getting a webhook URL
Slack: create an Incoming Webhook for your workspace. Slack gives you a URL starting with https://hooks.slack.com/.
Discord: open the channel settings, then Integrations, then Webhooks, then New Webhook, and copy the URL.
Google Chat: in a Space, open Apps & integrations and add a webhook. Copy the URL.
Events
| Event | When it fires |
|---|---|
link.created |
A link is created with this webhook attached |
link.deleted |
The link is deleted |
link.visited |
The link is opened |
link.redirected |
A URL link redirects a visitor |
link.viewed |
A shared file is viewed |
link.downloaded |
A shared file is downloaded |
encrypted.downloaded |
An end-to-end encrypted file is downloaded |
link.uploaded |
A file arrives through an Upload Drop |
questionnaire.response |
A questionnaire gets a response (includes IP and country, not the answers) |
What the payload looks like
Slack, Discord and Google Chat get a readable message with the event name, the link code and key details. Any other URL receives a JSON body like this:
{
"event": "link.uploaded",
"link_code": "abc123",
"timestamp": "2026-10-11T21:00:00.000Z",
"details": { "...": "..." },
"text": "...",
"content": "..."
}
Requests are sent with Content-Type: application/json and User-Agent: TinyX-Webhook/1.0.
Webhook limits by plan
| Plan | Webhooks |
|---|---|
| Free | 1 |
| Pro | 5 |
| Max | 20 |
Troubleshooting
Notifications aren't arriving. Check the webhook is attached to the link (under Notify on activity), that the URL is correct, and that the Slack, Discord or Google Chat integration still exists.
My endpoint isn't triggering. Your endpoint should respond with a 2xx status within 10 seconds. Redirects (3xx) aren't followed, and failed deliveries aren't retried.
Still stuck? Email support@tinyx.co and a real person will reply.