Tickets: webhook and Linear
Send tickets to your system with their own webhook or connect them to Linear.
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.
ticket.createdticket.updatedticket.status_changedticket.note_addedticket.resolvedWhat 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.
ByDomu → LinearByDomu → LinearLinear → ByDomuWhat 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.