← All help articles
API & Webhooks4 min read

Setting up outbound webhooks

Outbound webhooks let LyncView push events to your URL in real time. Examples: a task is completed, a project changes status, a client uploads a file.

Setup

  1. Go to Settings → Webhooks.
  2. Click New Webhook.
  3. Enter your endpoint URL (must be HTTPS in production).
  4. Select the events to subscribe to (or use * for all events).
  5. Save. A signing secret is auto-generated and shown once — copy and store it.

Event payload

Every event POSTs JSON like:

{
  "event": "task.completed",
  "data": {
    "task_id": "task-abc-123",
    "project_id": "project-xyz-789",
    "title": "Plan review approved",
    "completed_at": "2026-04-28T10:15:00Z",
    "completed_by": "user-456"
  },
  "timestamp": "2026-04-28T10:15:01Z"
}

Verifying signatures

Each request includes X-Webhook-Signature (HMAC-SHA256 of the raw body using your secret) and X-Webhook-Event (event type).

Verify in Node.js:

import crypto from 'crypto';

function verifyWebhook(rawBody, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected),
  );
}

Always verify signatures. Webhooks without a secret won't fire — we refuse to send unsigned events.

Available events

  • task.completed — Task marked complete
  • task.created — New task added to a project
  • task.updated — Task title, due date, or assignment changed
  • project.created — New project started
  • project.updated — Project status, name, or details changed
  • project.completed — Project marked complete
  • file.uploaded — File uploaded to a project
  • client.invited — Client invited to a project
  • comment.created — Comment added to a task

Retries and timeouts

We wait up to 10 seconds for your endpoint to respond with a 2xx status. If we get 5xx or timeout, we retry up to 3 times with exponential backoff (1s, 5s, 25s). After 3 failures, we mark the webhook delivery failed and log it. Repeated failures don't disable the webhook automatically — that's on you to monitor.

Testing

Click Test on any webhook to fire a sample webhook.test event to your endpoint. Useful for verifying setup without waiting for real events.

Still have questions?

support@lyncview.com