Requex.me LogoRequex.me

Documentation

Browse by section

Keep all guides, tool docs, automation recipes, and comparison pages in one navigable place.

Docs Home
Docs

Foundation docs for getting started fast, understanding key terms, and tracking what has changed.

Guides

Start with fundamentals, then move into provider-specific webhook testing and production hardening.

Tool Docs

These pages explain what each tool does, when to use it, and how it fits into a webhook debugging workflow.

Automation Docs

Use these setup guides when you want forwarding rules, custom responses, security checks, or multi-destination fanout.

Compare

Use these pages to compare developer workflows, pricing tradeoffs, and feature differences between webhook tools.

How to Test Linear Webhooks

Capture Linear issue, comment, and project events with HMAC-SHA256 signatures — inspect every payload before writing your handler.

Editorially reviewed by the Requex team9 min readAbout the product

TL;DR: Copy a URL from requex.me, go to Linear Settings → API → Webhooks → New webhook, paste the URL, select the resources you care about, and create or update an issue. The signed JSON payload appears in Requex immediately.

What Linear Sends

Linear webhooks send clean, well-structured JSON. Unlike Jira, Linear sends one event per request — no batching. Each webhook includes the full object representation plus metadata about the actor and the type of change.

ResourceActionsUse Case
Issuecreate, update, deleteStatus sync, Slack alerts, GitHub PR linking
Commentcreate, update, deleteNotifications, activity feeds
Projectcreate, updatePortfolio tracking, reporting
Cyclecreate, update, completeSprint metrics, velocity tracking

Step 1 — Generate a Requex Endpoint

Open requex.me and copy your unique URL:

https://requex.me/hook/a1b2c3d4-e5f6-7890-abcd-ef1234567890

Step 2 — Configure Linear Webhook

  1. In Linear, click your workspace name in the top-left and go to Settings.
  2. In the left sidebar, find API under the Developer section.
  3. Click Webhooks, then New webhook.
  4. Paste your Requex URL into the URL field.
  5. Optionally add a Label (e.g., "Requex Dev Test") for easy identification.
  6. Select which resources to subscribe to: Issues, Comments, Projects, and Cycles are the most common.
  7. Optionally scope to a specific team using the Team dropdown.
  8. Click Create webhook. Linear immediately displays the signing secret — copy it for signature verification later.

Step 3 — Trigger a Test Event

Create a new issue in Linear: click the + button in any team's issue list, add a title, and press Enter. The Issue create event fires immediately and appears in Requex.

To test updates, change the issue's status, priority, or assignee. Linear fires one webhook per change — unlike Jira, changes to multiple fields do not batch into a single event.

Step 4 — Inspect the Payload

In Requex, click the incoming request. Linear sends a compact but complete JSON object:

{
  "action": "create",
  "actor": {
    "id": "usr_abc123",
    "name": "Jane Smith",
    "email": "jane@example.com"
  },
  "createdAt": "2026-04-05T12:00:00.000Z",
  "data": {
    "id": "iss_xyz789",
    "title": "Fix login redirect bug",
    "description": "Users are being redirected to /home after OAuth instead of /dashboard",
    "priority": 2,
    "state": {
      "id": "state_abc",
      "name": "Todo",
      "type": "unstarted"
    },
    "team": {
      "id": "team_def",
      "name": "Backend"
    },
    "assignee": null,
    "labels": [],
    "estimate": 3,
    "identifier": "BACK-42"
  },
  "type": "Issue",
  "organizationId": "org_ghi456",
  "webhookTimestamp": 1712345678901
}

Notice the top-level action field ("create", "update", or "remove") and type field ("Issue", "Comment", etc.) — these are the two fields your handler should use to route events. Also check the Headers tab for the linear-signature header.

Linear Signature Verification

Linear signs every webhook with HMAC-SHA256 using the secret shown when you created the webhook. The signature is sent in the linear-signature header as a hex digest.

// Node.js — verify Linear HMAC-SHA256 signature
const crypto = require('crypto');

function verifyLinearSignature(rawBody, signature, signingSecret) {
  const expected = crypto
    .createHmac('sha256', signingSecret)
    .update(rawBody)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(signature, 'hex'),
    Buffer.from(expected, 'hex')
  );
}

// Express handler
app.post('/webhooks/linear',
  express.raw({ type: 'application/json' }),
  (req, res) => {
    const sig = req.headers['linear-signature'];
    const secret = process.env.LINEAR_WEBHOOK_SECRET;

    if (!verifyLinearSignature(req.body, sig, secret)) {
      return res.status(403).send('Invalid signature');
    }

    const { type, action, data, actor } = JSON.parse(req.body);

    if (type === 'Issue' && action === 'create') {
      console.log('New issue:', data.identifier, data.title);
    }

    res.sendStatus(200);
  }
);

Use Requex to capture a real Linear request, copy the exact raw body and linear-signature header, and test this verification function locally before deploying.

Common Issues

ProblemCauseFix
No events from specific teamWebhook scoped to a different teamEdit the webhook and change the Team filter to "All teams" or the correct team
Signature verification failsBody parsed before reaching the raw buffer checkUse express.raw() on the route — not express.json()
Missing signing secretSecret only shown once at creation timeDelete and recreate the webhook — the secret cannot be retrieved after initial creation

Test Linear Webhooks Free

Capture real Linear payloads and verify signatures without deploying a server. No signup required.

Open Requex →

Related guides

Start Testing Webhooks Now

Generate your unique URL and test webhooks instantly. Free, no signup.

Open Webhook Tester →