Project mgmt × CRM
LinearSalesforceAGNT

Automate Linear + Salesforce

Fast issue tracking that deserves fast automation. The enterprise system of record for revenue. Put an agent between them and the hand-off stops being manual: it reads, decides, acts, and shows its work.

Install Meeting Follow-Through → Get AGNT free

Meeting Follow-Through is a ready-made agent built around Linear; point its last step at Salesforce to finish this hand-off.

Automations teams run

Each of these runs with a reasoning step between the two tools, so what reaches Salesforce is a decision about the Linear event rather than a transcription of it.

When an issue is created in Linear…

…an agent can update records and fields in Salesforce — after reading the context and deciding it should.

When a status changes in Linear…

…an agent can create tasks and notes in Salesforce — after reading the context and deciding it should.

When a cycle ends in Linear…

…an agent can extract report data in Salesforce — after reading the context and deciding it should.

When a lead or opportunity changes in Salesforce…

…an agent can create issues with full context in Linear — with the reasoning recorded in the run’s receipt.

When a task is due in Salesforce…

…an agent can update status and assignees in Linear — with the reasoning recorded in the run’s receipt.

When a report cycle begins in Salesforce…

…an agent can write cycle summaries in Linear — with the reasoning recorded in the run’s receipt.

Linear to Salesforce, in three nodes

Concretely: a custom-api call to api.linear.app on one side, a custom-api call to {instance}.my.salesforce.com on the other, and an agent in between that can decline. Deciding not to write into Salesforce is a recorded outcome, not a silent one.

Linear to Salesforce: poll linear → read it and decide → call salesforce TRIGGER trigger-timer Poll Linear Every fifteen minutes. ACTION agnt-agent Read it and decide Judged against your own rules. ACTION custom-api Call Salesforce POST · oauth 2.0 bearer
Local end to end. The receipt records what was read in Linear and what was written in Salesforce.
Linear → Salesforcepaste into a new workflow
{
  "id": "16a7c4be-d636-4f9c-a8c1-84d0369c531c",
  "name": "Linear → Salesforce",
  "nodes": [
    {
      "id": "4051994e-f29b-42b0-a46f-679888cb8860",
      "text": "Poll Linear",
      "x": 512,
      "y": 144,
      "isEditing": false,
      "type": "trigger-timer",
      "icon": "connect",
      "category": "trigger",
      "isSelected": false,
      "parameters": {
        "interval": "15",
        "unit": "minutes"
      },
      "description": "Checks Linear on a schedule.",
      "error": null,
      "isActive": false,
      "output": null,
      "outputs": {}
    },
    {
      "id": "dca50e0e-8c61-4e66-a6b5-f8363cd76a70",
      "text": "Read it and decide",
      "x": 512,
      "y": 336,
      "isEditing": false,
      "type": "agnt-agent",
      "icon": "connect",
      "category": "action",
      "isSelected": false,
      "parameters": {
        "instructions": "Read the Linear item. Decide whether it warrants action in Salesforce, and explain why."
      },
      "description": "Decides whether this Linear item warrants anything in Salesforce.",
      "error": null,
      "isActive": false,
      "output": null,
      "outputs": {}
    },
    {
      "id": "659bd76e-cbb9-4f75-ae34-76e3201ede5a",
      "text": "Call Salesforce",
      "x": 512,
      "y": 528,
      "isEditing": false,
      "type": "custom-api",
      "icon": "connect",
      "category": "action",
      "isSelected": false,
      "parameters": {
        "url": "https://{instance}.my.salesforce.com/services/data/v59.0/sobjects/Contact",
        "method": "POST"
      },
      "description": "Writes into Salesforce over its API.",
      "error": null,
      "isActive": false,
      "output": null,
      "outputs": {}
    }
  ],
  "edges": [
    {
      "id": "6e12c6b4-46fa-48a6-a828-7aa07c02dc58",
      "start": {
        "id": "4051994e-f29b-42b0-a46f-679888cb8860",
        "type": "output"
      },
      "end": {
        "id": "dca50e0e-8c61-4e66-a6b5-f8363cd76a70",
        "type": "input"
      },
      "startX": 800,
      "startY": 168,
      "endX": 512,
      "endY": 360
    },
    {
      "id": "d5ef4064-df2c-47c7-a844-cf457a4914c6",
      "start": {
        "id": "dca50e0e-8c61-4e66-a6b5-f8363cd76a70",
        "type": "output"
      },
      "end": {
        "id": "659bd76e-cbb9-4f75-ae34-76e3201ede5a",
        "type": "input"
      },
      "startX": 800,
      "startY": 360,
      "endX": 512,
      "endY": 552
    }
  ],
  "zoomLevel": 1,
  "canvasOffsetX": 0,
  "canvasOffsetY": 0,
  "isTinyNodeMode": false
}

Install Meeting Follow-Through

Meeting Follow-Through is a working agent built around Linear. Install it, point its last step at Salesforce, and you have this hand-off without building it from an empty canvas.

Runs on your own machine · See what it does

What building this looks like

  1. Get AGNT Community Core. Free, local, no sign-up needed to run a workflow.
  2. Add both connections to the vault — Linear takes an API key pasted into the vault, Salesforce takes one OAuth sign-in.
  3. Build the three nodes above, or start from a marketplace workflow and edit it. The agent in the middle is the part worth spending time on.
  4. Run it once with an approval gate in place. The receipt tells you what it read, what it concluded, and what it changed in Salesforce.

Linear and Salesforce — common questions

Can I connect Linear to Salesforce without writing code?

You can build it entirely from the canvas. Authorise Linear with an API key pasted into the vault, Salesforce with one OAuth sign-in, then tell the agent what support escalations become tracked issues should look like once Salesforce is involved. Code is an option for the unusual cases, never a requirement for the common ones.

How is this different from a field-mapping Linear to Salesforce automation?

The difference shows up on the messy inputs. A rule chain needs every case enumerated in advance; an agent handles support escalations become tracked issues the way a colleague would — reading the Linear context, judging it, then writing to Salesforce with the reasoning recorded.

Does my Linear and Salesforce data leave my machine?

Not to us. AGNT runs locally and both sets of credentials are encrypted on your own disk. Outbound traffic goes only to Linear, Salesforce and whichever model you chose — and pointing that at Ollama or LM Studio keeps everything on your hardware.

What does a Linear and Salesforce run leave behind?

A receipt: what was read in Linear, which tools ran with which arguments, what the agent concluded, and what it wrote to Salesforce. Anything consequential can sit behind an approval gate so a person signs off before it happens.

Give AI a job. Get the proof.