UniLink Webhooks Overview (React to Events in Real Time)

By UniLink May 02, 2026 9 min read
UniLink Webhooks Overview (React to Events in Real Time)


UniLink Webhooks Overview (React to Events in Real Time)

UniLink webhooks send an HTTP POST to your server the moment an event happens — no polling required, no delays, no missed updates.

  • Register a webhook endpoint in Settings → Webhooks and choose which events to subscribe to.
  • UniLink sends a signed JSON POST to your URL for every matching event — verify the HMAC signature to confirm authenticity.
  • Failed deliveries are retried up to 5 times with exponential backoff over 24 hours.

A webhook is an HTTP callback — UniLink calls your server rather than waiting for your server to call UniLink. When a contact signs up through your page, an order is placed, or a form is submitted, UniLink immediately sends a JSON payload to the URL you registered. Your application receives the event data in real time and can act on it instantly: send a confirmation email, update a CRM record, trigger a fulfillment workflow, or log analytics. This is fundamentally more efficient and reliable than polling the REST API for changes.

What Webhooks Do

Webhooks eliminate the need to periodically query UniLink endpoints to detect changes. Instead of asking "did anything happen since I last checked?" every minute, your server simply waits to be called. UniLink handles the event detection and delivery. Your endpoint receives a POST request with a JSON body describing exactly what happened, who it happened to, and when. You process it and return a 200 status code to acknowledge receipt — the whole exchange takes milliseconds.

Every webhook delivery includes a signature header, X-UniLink-Signature, that lets you verify the request genuinely came from UniLink and was not tampered with in transit. The signature is an HMAC-SHA256 hash of the raw request body, computed using a secret key UniLink generates when you register the endpoint. You compute the same hash on your side and compare — if they match, the payload is authentic. Never process a webhook payload without verifying its signature, especially for financial events like orders and payments.

UniLink's webhook delivery system is designed for reliability. If your endpoint is temporarily unavailable or returns a non-2xx status, UniLink retries the delivery up to 5 times with exponential backoff: first retry after 1 minute, then 5 minutes, then 30 minutes, then 2 hours, then 8 hours. If all retries fail, the delivery is marked as failed and appears in the webhook delivery log in the dashboard. You can manually replay failed deliveries from the dashboard for up to 72 hours after the original event.

How to Get Started

  1. Build a publicly accessible HTTPS endpoint on your server that accepts POST requests. It must be reachable from the internet — localhost URLs do not work in production. For local development, use a tunneling tool like ngrok to expose your local server temporarily.
  2. Log in to the UniLink dashboard at app.unilink.us and go to Settings → Webhooks.
  3. Click Add Endpoint. Enter your HTTPS URL and select the event types you want to subscribe to. You can subscribe to all events or only specific ones to reduce noise.
  4. Copy the signing secret displayed after saving. Store it securely as an environment variable — you will need it to verify incoming webhook signatures.
  5. Test the integration by triggering an event in the dashboard (for example, submit a test form) and confirm your endpoint receives the payload and returns 200.

How to Use Webhooks

  1. Return 200 immediately. Your endpoint should acknowledge receipt within 5 seconds by returning HTTP 200. Move any time-consuming processing (database writes, email sends, API calls) to a background queue so the response is fast and the webhook is not retried unnecessarily.
  2. Verify the signature before processing. Compute HMAC-SHA256(rawBody, signingSecret), hex-encode the result, and compare it to the value in X-UniLink-Signature. Reject requests where they do not match — return 401.
  3. Make your handler idempotent. UniLink may deliver the same event more than once due to retries. Use the event's unique id field to check whether you have already processed it before taking action (for example, store processed IDs in Redis with a short TTL).
  4. Filter events by type. The payload always includes an event field (for example, order.created). Use a switch statement or event-type router to call the appropriate handler function and ignore event types your integration does not care about.
  5. Monitor the delivery log. Go to Settings → Webhooks → [Your Endpoint] → Deliveries to review recent delivery attempts, see response times, and replay any failed deliveries manually.

Key Settings

SettingWhat It DoesRecommended
Endpoint URLThe HTTPS URL UniLink posts events toUse a dedicated path like /webhooks/unilink to distinguish from other routes
Event SubscriptionsWhich event types trigger delivery to this endpointSubscribe only to events your integration uses — reduces noise and processing load
Signing SecretSecret used to compute HMAC signatures for verificationRotate if the secret is ever exposed; regenerate from Settings → Webhooks
Retry Policy5 retries over 24 hours with exponential backoffEnsure your endpoint returns 200 quickly to avoid triggering retries
Delivery TimeoutUniLink waits up to 5 seconds for your endpoint to respondReturn 200 immediately and process asynchronously via a queue
Tip: During local development, use ngrok or a similar tunneling tool to expose your local server to the internet. Run ngrok http 3000 and use the generated HTTPS URL as your webhook endpoint in the dashboard. This lets you test the full webhook flow without deploying to a server first.

Get the Most Out Of Webhooks

Use a message queue between your webhook endpoint and your processing logic. Your endpoint's only job is to validate the signature, push the payload onto a queue (Redis, RabbitMQ, SQS), and return 200. A separate worker process dequeues and processes the events. This decoupling means your endpoint never misses a delivery due to slow downstream operations, and you can scale the processing workers independently of the HTTP server.

Design your webhook handlers around the concept of eventual consistency. Events can occasionally arrive out of order, especially if your endpoint was temporarily unavailable and several retries stacked up. Build handlers that are tolerant of receiving a later event (like order.completed) before an earlier one (like order.created) — check the event timestamp and your database state before taking action rather than assuming events always arrive in sequence.

The delivery log in the dashboard is your best debugging tool. When a webhook is not being processed as expected, check the delivery log first. You can see the exact payload UniLink sent, the HTTP status your endpoint returned, and the response body. This is far faster than trying to reproduce the event manually. You can also replay any delivery from the log to re-test your handler against a real historical payload.

Register separate webhook endpoints for different concerns in your application. For example, one endpoint handles order events and writes to your fulfillment system, while another handles contact events and writes to your CRM. Keeping handlers focused makes them easier to maintain and debug, and if one handler has a bug, it does not affect the others.

Troubleshooting

ProblemCauseFix
Webhook deliveries all show as failedEndpoint returns non-2xx or times outCheck your server logs for errors; ensure the endpoint path is correct and returns 200 within 5 seconds
Signature verification always failsComparing against a parsed/modified body instead of the raw bytesCompute the HMAC against the raw request body before any JSON parsing — use the raw buffer, not the parsed object
Duplicate event processingUniLink retried a delivery your endpoint already handledImplement idempotency using the event id field — check if processed before acting and skip if already handled
Events not appearing in delivery logEvent type not included in endpoint subscriptionGo to Settings → Webhooks → Edit Endpoint and add the missing event type to the subscription list
  • Real-time event delivery eliminates polling and reduces API request usage dramatically
  • HMAC signature verification ensures payloads are authentic and untampered
  • Automatic retry with exponential backoff handles temporary endpoint downtime gracefully
  • Delivery log with manual replay makes debugging straightforward without reproducing events
  • Endpoint must be publicly accessible over HTTPS — adds complexity for local development
  • Requires idempotency logic to handle rare duplicate deliveries safely
  • Failed deliveries after all retries are exhausted require manual replay within 72 hours
How do I verify that a webhook request came from UniLink?

Compute HMAC-SHA256 of the raw request body using your endpoint's signing secret. Hex-encode the result and compare it to the X-UniLink-Signature header. Process the payload only if they match exactly.

What happens if my endpoint is down when a webhook is sent?

UniLink retries the delivery up to 5 times with exponential backoff over approximately 24 hours. You can also manually replay any failed delivery from the dashboard delivery log within 72 hours of the original event.

Can I receive webhooks on a local development server?

Yes — use a tunneling tool like ngrok to expose your local port to the internet. Register the generated HTTPS URL in Settings → Webhooks. Remember to update the URL each time ngrok restarts unless you use a static domain.

How many webhook endpoints can I register?

Pro and Business plan accounts can register up to 10 webhook endpoints. Free plan accounts can register 2. Each endpoint can subscribe to different event types.

Does UniLink send webhooks in order?

UniLink makes best-effort ordering but does not guarantee strict delivery order, especially when retries are involved. Design your handlers to be idempotent and tolerant of out-of-order delivery.

  • Register webhook endpoints in Settings → Webhooks → Add Endpoint and select which events to subscribe to.
  • Always verify the X-UniLink-Signature HMAC header before processing any payload.
  • Return HTTP 200 within 5 seconds — offload processing to a background queue to meet this deadline.
  • Make handlers idempotent using the event id field to handle rare duplicate deliveries safely.
  • Use the delivery log in the dashboard to debug failures and manually replay events within 72 hours.

Set up your first webhook in minutes — go to app.unilink.us, open Settings → Webhooks, and click Add Endpoint.

Create Your Free Link-in-Bio Page

Join thousands of creators using UniLink. 40+ blocks, analytics, e-commerce, and AI tools — all free.

Get Started Free