ByDomuDevelopers

Tickets: webhook and Linear

Send tickets to your system with their own webhook or connect them to Linear.

GuideAll plansNo API key

Where to set it up

In ByDomu, Settings › Channels and integrations › Tickets: Linear and webhook. It works on every plan and needs no API key: someone on the team sets it up from the dashboard. It’s a regular webhook (same signature, same retry queue, same delivery log) subscribed only to ticket.*.

Connect your system with the webhook

  • Paste the address (https://…) of your server, Jira or Zendesk through your own bridge, or Zapier, Make or n8n.
  • Pick the events. By default ticket.created, ticket.status_changed and ticket.resolved; ticket.updated and ticket.note_added are opt-in.
  • Copy the secret and store it in your system to verify X-Domu-Signature. You can reveal it again or rotate it; when rotated, the old one stops working at once.
  • “Send a test” sends a delivery with X-Webhook-Test: true and data.message; below you see the latest deliveries with their response code.
When it firesEvent
A ticket was created. Carries the ticket (with the link to the dashboard) and the contact, when there is one.ticket.created
The title, summary, priority, assignee or labels changed. changedFields says which.ticket.updated
The ticket changed status (PENDING, IN_PROGRESS or RESOLVED). previousStatus carries the previous one.ticket.status_changed
An internal note was added to the ticket, in ByDomu or as a Linear comment (note.source).ticket.note_added
The ticket was resolved. Fires together with ticket.status_changed.ticket.resolved

What each delivery carries

data.ticket carries the number and code (T-0012), status, priority, channel, labels, assignee, the Linear issue if any and url, the link to the ticket in the dashboard; data.contact, the contact if there is one. A change to RESOLVED sends ticket.status_changed and ticket.resolved: drop duplicates by id.

{
  "event": "ticket.created",
  "id": "5f3a0c1e-7d2b-4f7e-9a51-0b6c1d2e3f40",
  "type": "ticket.created",
  "timestamp": "2026-09-22T14:30:00.000Z",
  "organizationId": "clx1org001",
  "actor": {
    "kind": "USER",
    "userId": "clx1usr001"
  },
  "data": {
    "ticket": {
      "id": "clx1tkt001",
      "number": 12,
      "code": "T-0012",
      "title": "No llegan las fotos al portal",
      "summary": "La clienta dice que la ficha P-0042 se ve sin fotos desde ayer.",
      "status": "PENDING",
      "priority": "HIGH",
      "channel": "WHATSAPP",
      "labels": [
        "Portales"
      ],
      "assignedToId": "clx1usr001",
      "assignedToName": "Andrés Mejía",
      "contactId": "clx1con001",
      "conversationId": "clx1cnv001",
      "linearIssueKey": null,
      "url": "https://www.bydomu.com/inbox/tickets/clx1tkt001",
      "resolvedAt": null,
      "createdAt": "2026-09-22T14:30:00.000Z",
      "updatedAt": "2026-09-22T14:30:00.000Z"
    },
    "contact": {
      "id": "clx1con001",
      "code": "C-0042",
      "firstName": "Laura",
      "lastName": "Restrepo",
      "fullName": "Laura Restrepo",
      "email": "[email protected]",
      "phone": "+573000000001",
      "source": "WEBSITE",
      "status": "QUALIFIED",
      "type": "CLIENT",
      "score": 72,
      "ownerId": "clx1usr001",
      "preferredCity": "Bogotá",
      "preferredType": "APARTMENT",
      "budget": 450000000,
      "currency": "COP",
      "tags": [
        "Compra",
        "Chapinero"
      ],
      "createdAt": "2026-09-20T15:04:00.000Z"
    }
  }
}

With a secret key and webhooks:write you can also subscribe to ticket.* (and ticket.suggested, when Noa proposes opening a ticket) through the API, like any other event.

Connect Linear

On the same screen, Connect with Linear opens Linear’s authorization for the whole agency. Then you pick the team, when the issue is created and how statuses and priorities map. Issues and comments are posted as the app, with the name of whoever wrote in ByDomu; if you enable it, they carry the “Desde ByDomu” label.

WhatDirection
Create the issue (Only if I tick it · Always · Never)ByDomu → Linear
Status, priority, assignee, labels and notesByDomu → Linear
Status and priority changes, new commentsLinear → ByDomu

What changes in Linear comes back as events: ticket.status_changed, ticket.updated (changedFields: priority) and ticket.note_added with note.source = "linear". The customer never sees Linear: only the status of their request.

If something fails

  • 401Your system rejects the signature: check you use the current secret (did you rotate it?) and the raw body.
  • 5xxIt’s retried and shows up in recent deliveries: Up to 5 attempts (0 s, 5 s, 30 s, 2 min and 10 min) on network errors, 429 or 5xx. Reply 2xx in under 10 s.
  • LINChanges made in Linear don’t arrive: the screen warns when the Linear app’s webhook is missing. What’s done in ByDomu still reaches Linear.