SafeWebhook/ Linear
Launch Workbench
Productivity & CRM Integration Guide

Test Linear Webhooks Online

Test Linear issue created, cycle completed, and comment added webhooks with HMAC validation.

Direct Answer / Quick Summary

To test Linear webhooks, go to Linear Workspace Settings > API > Webhooks > New Webhook, paste your SafeWebhook URL, and create or update an issue in Linear.

Key Capabilities & Testing Highlights

  • Inspect Issue, Comment, Project, and Cycle webhook models.
  • Verify Linear-Signature HMAC-SHA256 headers.
  • Replay issue events directly to your local GitHub sync service.
  • Fast edge inspection with zero account required.
Signature Header
Linear-Signature
Cryptographic Scheme
HMAC-SHA256
Payload Retention
100% Client-Side

Step-by-Step Linear Webhook Setup

Follow these 4 simple steps to capture real-time Linear events in your browser:

1
In Linear, navigate to Settings > Workspace > API > Webhooks.
2
Click "New webhook" and enter your SafeWebhook URL.
3
Select resources (Issues, Comments, Projects) and click Create.
4
Create a new issue in Linear to stream the payload.

Sample Linear Webhook Payload

application/json
{
  "action": "create",
  "type": "Issue",
  "createdAt": "2026-08-19T12:30:00.000Z",
  "data": {
    "id": "iss_89218491029",
    "title": "Fix edge webhook latency bug",
    "priority": 1,
    "state": {
      "name": "In Progress",
      "type": "started"
    },
    "team": {
      "key": "ENG",
      "name": "Engineering"
    }
  }
}

Linear Signature Verification Recipes

Copy-paste production-ready HMAC verification code for your backend:

Node.js / Express Recipecrypto.timingSafeEqual
const crypto = require('crypto');

function verifyLinearSignature(rawBody, signature, secret) {
  const hash = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(hash), Buffer.from(signature));
}
Python / Flask / FastAPI Recipehmac.compare_digest
import hmac
import hashlib

def verify_linear(raw_body, signature, secret):
    computed = hmac.new(secret.encode('utf-8'), raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(computed, signature)

Frequently Asked Questions: Linear Webhooks

How do I test Linear issue sync workflows locally?

Configure SafeWebhook as your Linear webhook URL, then use the Replay Drawer to send payload copies to your local dev service running on localhost:3000.

Ready to test Linear webhooks in real-time?

Get your free, private edge endpoint instantly. Zero signup, zero credit card, 100% free forever.

Launch Webhook Workbench →

Related Productivity & CRM Webhook Guides