Integrations

Linear Webhooks Custom Headers

Linear outgoing webhooks include Linear-specific headers such as Linear-Delivery, Linear-Event, and Linear-Signature. In Linear's webhook docs, those are the provider headers your receiver uses for delivery identity, event routing, and signature verification.

If your receiver also requires your own header such as Authorization, x-api-key, orx-linear-integration-secret, receive Linear in FastHook first. FastHook verifies Linear's Linear-Signature, stores the original request, and adds the custom header on the outgoing HTTP destination delivery.

Linear request accepted by FastHook and delivered to a receiver with destination authentication.
Keep Linear provider headers on ingress. Add receiver-specific custom headers on the FastHook destination.

Linear headers vs custom destination headers

HeaderWhere it appliesFastHook behavior
Linear-SignatureLinear to FastHook sourceVerifies HMAC-SHA256 over the raw Linear webhook body.
Linear-DeliveryLinear to FastHook sourceCaptured with the request and useful for debugging and idempotency.
Linear-EventLinear to FastHook sourceCaptured as provider context and useful for connection filters.
CUSTOM_HEADERFastHook destination to your receiverSends your configured config.auth.header_name and config.auth.value with each routed delivery.

Create the Linear source

Create Linear source
curl -X POST "https://api.fasthook.io/v1/sources" \
  -H "Authorization: Bearer $FASTHOOK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Linear production",
    "type": "LINEAR",
    "config": {
      "auth_type": "PROVIDER_SIGNATURE",
      "auth": {
        "provider": "LINEAR",
        "webhook_signing_secret": "linear-webhook-secret"
      },
      "allowed_http_methods": ["POST"]
    }
  }'

Add an outgoing custom header

Use an HTTP destination with auth_type set to CUSTOM_HEADER when the downstream service expects a static secret header. This is the common workaround when a Linear webhook target needs an extra receiver credential.

Create HTTP destination with a custom header
curl -X POST "https://api.fasthook.io/v1/destinations" \
  -H "Authorization: Bearer $FASTHOOK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "linear-events-api",
    "type": "HTTP",
    "config": {
      "url": "https://api.example.com/webhooks/linear",
      "http_method": "POST",
      "auth_type": "CUSTOM_HEADER",
      "auth": {
        "header_name": "x-linear-integration-secret",
        "value": "receiver-shared-secret"
      },
      "rate_limit": 20,
      "rate_limit_period": "second"
    }
  }'

Route Linear events to that destination

Keep routing rules on the connection. A typical Linear setup routes issue changes, comments, projects, cycles, or SLA events to different downstream receivers while reusing the same verified Linear source.

  • Filter by the body type or action fields when event families need different receivers.
  • Use Linear-Delivery, webhookId, or Linear entity ids as idempotency inputs.
  • Use request replay after routing changes; use event retry when only one destination attempt failed.

Debug missing Linear custom headers

  • If Linear-Signature is missing, inspect the inbound request from Linear and confirm it reached the FastHook Source URL.
  • If your receiver's secret header is missing, check the HTTP destination auth_type and config.auth.header_name.
  • If Linear signature verification fails, keep the raw body unchanged and confirm the webhook signing secret.
  • If the destination returns 401 or 403, inspect the FastHook attempt body and response headers before retrying or replaying.

Official Linear docs

Related FastHook docs