Linear is built for speed: clean issues, fast triage, cycles that move. A bug report that says "the pricing page looks weird on my phone" fits none of that. Someone has to go back and ask which page, which phone and what "weird" means.
PinReview fills that gap. Reviewers pin their comment on the exact element of the live page, and PinReview creates a Linear issue for your team with the screenshot, the page, the browser and any console errors already in it.
What ends up in the Linear issue
- Title — the title the reviewer wrote
- Description — their comment, then the page URL, severity, who reported it, browser and viewport size
- Screenshot — shown inline in the description, with the pin drawn on it
- Console errors — any JavaScript errors captured on the page, in a code block
- Priority — from the PinReview severity: Critical → Urgent, High → High, Normal → Medium, Low → Low
- A link back — "View #42 in PinReview", which opens the original task
The PinReview task shows the Linear identifier — ENG-214, say — as a link to the issue.
Set it up in a few minutes
1. Create a Linear API key
In Linear, open Settings → Account → Security & access and create a personal API key. Give it a name like "PinReview" and copy it. It starts with lin_api_.
2. Connect
- In PinReview, open your project's Integrations and choose Linear.
- Paste the key and click Continue.
- Pick the team issues should be created in.
- Choose whether to create an issue automatically for every new piece of feedback, then click Connect Linear.
Test on the connected row checks the key at any time. Integrations are included on PinReview's paid plans.
Automatic or one at a time
New issues land in the team's default state for new issues, which you set in the team's workflow settings. Point that at your backlog or triage queue and automatic creation fits Linear well: everything arrives in one place, and whoever is on triage duty accepts, merges or declines it like any other issue.
If your reviewers are clients who leave a lot of questions and "nice to haves", turn automatic creation off instead. Triage on the PinReview board and use Send to… → Linear on the tasks that are real work.
You can connect more than one team — for example, WEB for front-end bugs and MKT for copy changes — and pick per task.
Things to get right
Keep unreviewed reports out of your cycles. Feedback from outside the team should land somewhere it gets reviewed first — a backlog or triage state — not straight into the current cycle.
Use a dedicated account if you can. Issues are created by the person whose API key you used. A shared account named "PinReview" makes the source obvious and keeps working when people change teams.
Decide where status lives. The connection is one-way: completing an issue in Linear doesn't move the task in PinReview. Close the loop on the board so the reporter sees their feedback was handled.
Ask questions on the PinReview task. Reviewers can't see Linear comments. If you need more detail, comment on their task.
If it doesn't work
- "Linear rejected the API key" — the key was revoked or mistyped. Create a new one and reconnect.
- A team is missing from the picker — the key's owner isn't a member of that team. Join the team, then use Change team on the connected row.
The bottom line
Connecting Linear takes one API key and a team pick. From then on, website feedback arrives as a Linear issue with the screenshot, page and console errors already attached — ready for triage instead of a round of follow-up questions.
Other trackers work the same way: Jira, ClickUp and GitHub Issues. If you'd rather hand bugs straight to an AI coding assistant, see connecting Claude Code or Cursor to website feedback.