LoopCLI

Linear Connector

Keep your product team aligned by pushing updates into Linear directly from LoopCLI.

Required secrets

Vault key Description
linear-api-key Linear personal API key.
loopcli secret add linear-api-key --value lin_api_...

Common automations

  • Create bug tickets when monitors fire.
  • Update issue status after deployments finish.
  • Sync customer feedback from Notion or Supabase into Linear.

Example loop

name: linear-post-deploy
description: Move Linear issues to "Shipped" after deployment completes.
steps:
  - id: list
    name: Fetch issues
    type: http
    config:
      url: https://api.linear.app/graphql
      method: POST
      headers:
        Authorization: "Bearer {{secret:linear-api-key}}"
        Content-Type: application/json
      body:
        query: |
          query Issues($label: String!) {
            issues(filter: {labels: {name: {eq: $label}}, state: {name: {eq: "In QA"}}}) {
              nodes { id identifier title }
            }
          }
        variables:
          label: "{{env:DEPLOY_LABEL}}"
  - id: update
    name: Move to shipped
    type: http
    config:
      url: https://api.linear.app/graphql
      method: POST
      headers:
        Authorization: "Bearer {{secret:linear-api-key}}"
        Content-Type: application/json
      body:
        query: |
          mutation Complete($issueId: String!) {
            issueUpdate(id: $issueId, input: {stateId: "{{env:LINEAR_SHIPPED_STATE}}"}) {
              success
            }
          }
        variables:
          issueId: "{{steps.list.response.body.data.issues.nodes[0].id}}"

LoopCLI GraphQL requests can batch multiple issues by iterating in a CLI step if needed.

Templates

Helpful links

Related Documentation

Continue learning with these related topics