1. Create a Linear Personal Access Token
Before you can create a webhook to automate GitHub Issue creation, you need to create an API token to authorize your requests.- In the Linear app, navigate to settings by holding
Gand pressingS, or by clicking on your profile on the top left and clicking Settings. - Under Account → Security & Access → Personal API Keys, click New API Key to create a new access token.
- Copy the new API key and save it in a secure location. You’ll need to use this later.
2. Add a new webhook in Trunk
Trunk uses Svix to integrate with other services, such as creating Linear Issues through webhooks. You can create a new endpoint by:- Login to Trunk Flaky Tests
- From your profile on the top right, navigate to Settings
-
Under Organization → Webhooks, click Automate Linear Issues Creation.

-
Paste the Linear GraphQL API endpoint into Endpoint URL, which is:
https://api.linear.app/graphql. - Review the transformation code automatically generated for Linear issues, you can customize this transformation at any time. Learn more about customizing transformations.
- Create the new endpoint. You will be redirected to the endpoint configuration view.
3. Add custom headers
The Linear GraphQL API requires some custom headers. You can configure custom headers in the endpoint configuration:- You can add custom headers under Webhooks → Advanced → Custom Headers.
- Fill in the Key and Value referencing the table below, and click the + button to add each header.
4. Find your Linear Team, Project, and Label IDs
You need to find your Linear team, project, and label IDs to create issues with the appropriate labeling. You can do this by querying your Linear project using cURL.Team ID
First, you’ll need to find your team ID so you can create Linear issues under the correct team. You can make a request in your terminal using cURL, or a similar tool. You’ll need your Linear API key from step 1.Project ID
If you want to create issues under a specific project, you’ll need to find its project ID. You can use a query like this:Label ID
If you want to create issues with a specific label, you’ll need to find its label ID. You can use a query like this:5. Customize your transformation
Transformations are custom code snippets you can write to customize the Linear issues created by the webhook. A working template transformation will be added automatically for your webhook, but you can further customize the behavior of this webhook.- In the endpoint configuration view, navigate to the Advanced tab. Under Transformation, toggle the Enabled switch.
- Click Edit transformation to update your transformation code, and click Save to update the transformation.
- You can test the transformation by selecting the
v2.test_case.status_changedpayload and clicking Run Test. This will test the transformation but not send a message. You will learn to send a test message in step 6.
Here is the provided transformation for context. You can customize your Linear Issues integration by following the Linear API and Svix transformations documentation.
The default transformation only creates issues when
new_status === "FLAKY". If you also want to create issues for tests marked as Broken (consistently failing at a high rate), update the filter condition. For example, change new_status !== "FLAKY" to new_status !== "FLAKY" && new_status !== "BROKEN" to handle both statuses.(Optional) Automatic issue assignment
If you have CODEOWNERS configured in your repo, it will be reported by Trunk in the webhook payload. You can use this to map different CODEOWNERS to Linear assignees. You can access CODEOWNERS in the payload like this:webhook.payload.test_case.codeowners.
Since the way your owners map to your Linear user is unique to your team, you’ll need to provide your own mapping to convert code owners to their Linear ID.
You can modify your issue create payload like this to include an assignee:
6. Test your webhook
You can create test issues by delivering a mock webhook. You can do this by:- In the endpoint configuration view, navigate to the Testing tab and select a Send event
- Under Subscribed events, select
v2.test_case.status_changedas the event type to send - Click Send Example to test your webhook
7. Monitoring webhooks
You can monitor the events and the webhook’s delivery logs in the Overview tab of an endpoint configuration view. You can see an overview of how many webhook deliveries have been attempted, how many are successful, how many are in flight, and how many fail in the Attempt Delivery Status modal.

