Linear in Keepr: team issues open tasks, time returns as a comment
What the integration does
One integration connects a Linear team — or every public team of a workspace — to one Keepr project. Inbound, Linear tells Keepr about its issues: a new issue becomes a task in the Keepr project, moving it to a Completed state archives the task, and moving it out again restores the task. A cancelled issue changes nothing, and deleting an issue archives its task.
Outbound, Keepr reports tracked time back. Linear has no time-tracking field, so each time entry on a task linked to an issue becomes one comment there, edited when the entry changes and deleted when the entry is deleted. Only time from the integration's Keepr project is sent, to the second, never rounded.
Before you start
In Keepr you need to be an owner or admin of the organization, or a manager of the workspace that holds the project. Every plan includes integrations: Free runs one at a time, Team three, and Ultimate — trial included — as many as you need.
In Linear you need a workspace admin's API key: Linear lets only admins create webhooks, and Keepr creates the webhook itself. Unlike GitHub, GitLab and Jira, there is nothing to paste into Linear by hand.
1. Create the integration in Keepr
Open Organization settings → Integrations and press “New integration”. Choose Linear, the Keepr project its tasks go into, and the name it acts under: Keepr shows its actions as, for example, “Archived by Linear · Website”.
Enter the team key, such as ENG — the letters before the number in every issue identifier — to cover one team. Leave it empty to cover every public team of the workspace; a private team is covered only by its own key.
2. Choose whose key Keepr uses
Linear shows every comment as written by the owner of the API key Keepr uses. The comment names the Keepr member who tracked the time, but the author is that account, for everyone's entries, and it must be a workspace admin, since the same key registers the webhook.
A dedicated Linear admin account for Keepr reads best. Sign in as it and create a key at Settings → Security & access → Personal API keys. Give it full access, or at least the Read, Write and Admin permissions, and, if you limit it to teams, include the team the integration covers.
3. Give Keepr the key
On the integration's page, open Credentials and press “Set…” next to the Linear credential. Paste the key and save. There is no address to enter: Keepr reads the workspace from the key.
Keepr then registers the webhook in Linear, with a secret only it and Linear know, and shows its state under Inbound webhooks: “Registering…”, then “Registered by Keepr”. If it fails, the line says why — most often a key that is not an admin's — and “Register again” retries once that is fixed. The key is stored encrypted, and afterwards only its first characters are shown.
The webhook Keepr registers
You can see it in Linear under Settings → API → Webhooks, labelled “Keepr” and the integration's name, sending Issue events to . Leave it to Keepr: changing the team on the integration's page replaces it, rotating the secret updates it, and removing the key or revoking the integration deletes it.
If the webhook is deleted in Linear, “Register again” on the integration's page creates it anew.
What Keepr sends
An entry is sent once it is finished — a running timer sends nothing until it stops — and only when its task is in the integration's project and links to an issue of that Linear workspace. Tasks the integration created link that way, and so do tasks started from the browser extension on a Linear issue.
Each entry gets one comment naming the member, the duration and the day, without subscribing the key's account to the issue. An edit rewrites that comment instead of adding another, deleting the entry deletes it, and moving the entry to another issue moves the comment. A comment deleted by hand is written again the next time the entry changes.
Imported time is history and is never sent. The integration's “Recently sent” list shows the latest entries, each with its issue, the member, the time Linear holds for it, and whether the last send worked; a failed row says why and what to do.
Pause, rotate or revoke
The switch on the integration's page turns it off without losing anything. While it is off, deliveries are recorded but not acted on, and no time is sent: an entry saved during the pause is sent the next time it changes. Switching it back on takes a slot under your plan's limit again.
“Rotate…” in Credentials replaces the webhook secret, and Keepr hands the new one to Linear itself; a delivery sent in between fails and Linear retries it. “Remove” next to the Linear credential stops time reporting and deletes the webhook.
Revoke is final. Keepr deletes the webhook in Linear, destroys both secrets and acts on nothing more; the integration stays in the list as history, and what it did stays attributed to it in the audit log and on archived tasks. Revoke the API key in Linear as well.
If something goes wrong
Every delivery appears under the integration's recent deliveries with what it did. Nothing arriving at all usually means the webhook is not registered: check its state under Inbound webhooks. “Task already there” means a task for the issue existed — for example, one started from the browser extension — and nothing was duplicated.
In “Recently sent”, “Credential rejected” means the key was revoked or lacks the Write permission. “Issue not found” means the issue was deleted or the key's account cannot see its team. “Tool refused it” is any other refusal from Linear; “Tool unreachable, retrying” clears on its own once Linear answers. A send that failed for good is tried again the next time the entry changes.