{"id":34,"date":"2026-03-09T11:40:00","date_gmt":"2026-03-09T11:40:00","guid":{"rendered":"https:\/\/demo.fasterthemes.com\/mywiki-wordpress-theme\/github-and-linear-sync\/"},"modified":"2026-03-09T11:40:00","modified_gmt":"2026-03-09T11:40:00","slug":"github-and-linear-sync","status":"publish","type":"post","link":"https:\/\/demo.fasterthemes.com\/mywiki-wordpress-theme\/github-and-linear-sync\/","title":{"rendered":"GitHub and Linear sync"},"content":{"rendered":"<p class=\"has-large-font-size\">Engineering work lives in GitHub. Customer-facing work lives in Lattica. Keeping them in sync without a janky cron job is what this integration is for.<\/p>\n<h2>GitHub: pull request linking<\/h2>\n<p>Mention a Lattica task ID in a PR title, body, or commit message \u2014 <code>LAT-1284<\/code> \u2014 and the integration links them automatically. The task gets a small GitHub icon next to its title, and the PR&#8217;s status shows up on the task: <em>Draft \/ Open \/ In review \/ Merged \/ Closed<\/em>.<\/p>\n<p>Closing a PR with merge auto-closes the linked task if the task is in a status configured to close on merge. By default that&#8217;s just the <em>In progress<\/em> column on engineering projects.<\/p>\n<h2>GitHub: issue sync<\/h2>\n<p>You can sync a GitHub issue and a Lattica task bidirectionally. Title, description, and status flow both ways; comments are mirrored with attribution. Use this when your team genuinely lives in both \u2014 for example, an open-source project where contributors are in GitHub and your internal team is in Lattica.<\/p>\n<h2>Setup<\/h2>\n<ol>\n<li>Settings \u2192 Integrations \u2192 GitHub \u2192 Install<\/li>\n<li>Authorize the GitHub App on your organization<\/li>\n<li>Pick the repositories to connect<\/li>\n<li>For each repo, choose <em>Link only<\/em> or <em>Bidirectional sync<\/em><\/li>\n<\/ol>\n<h2>Linear: one-way import<\/h2>\n<p>If you&#8217;re migrating from Linear, the Linear integration runs a one-time import of your workspace, mapping teams to projects and issues to tasks. Comments, labels, assignees, and statuses come over. Cycles map to Lattica&#8217;s milestones.<\/p>\n<p>The import is read-only \u2014 Lattica does not write back to Linear. After import, decide whether to keep both running in parallel or fully cut over.<\/p>\n<h2>Limits and gotchas<\/h2>\n<ul>\n<li>GitHub task IDs in PR descriptions are matched case-insensitively but must include the project prefix (<code>LAT-<\/code> not bare <code>1284<\/code>).<\/li>\n<li>Lattica respects GitHub&#8217;s draft state \u2014 draft PRs don&#8217;t trigger task closure.<\/li>\n<li>Bidirectional sync uses GitHub&#8217;s webhook delivery; if GitHub has an outage, sync resumes when their webhook queue clears.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>PR linking, bidirectional issue sync, Linear migration, and the gotchas around draft PRs.<\/p>\n","protected":false},"author":0,"featured_media":35,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[46,44,42,45],"class_list":["post-34","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-integrations","tag-engineering","tag-github","tag-integrations","tag-linear"],"_links":{"self":[{"href":"https:\/\/demo.fasterthemes.com\/mywiki-wordpress-theme\/wp-json\/wp\/v2\/posts\/34","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demo.fasterthemes.com\/mywiki-wordpress-theme\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demo.fasterthemes.com\/mywiki-wordpress-theme\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/demo.fasterthemes.com\/mywiki-wordpress-theme\/wp-json\/wp\/v2\/comments?post=34"}],"version-history":[{"count":0,"href":"https:\/\/demo.fasterthemes.com\/mywiki-wordpress-theme\/wp-json\/wp\/v2\/posts\/34\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/demo.fasterthemes.com\/mywiki-wordpress-theme\/wp-json\/wp\/v2\/media\/35"}],"wp:attachment":[{"href":"https:\/\/demo.fasterthemes.com\/mywiki-wordpress-theme\/wp-json\/wp\/v2\/media?parent=34"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demo.fasterthemes.com\/mywiki-wordpress-theme\/wp-json\/wp\/v2\/categories?post=34"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demo.fasterthemes.com\/mywiki-wordpress-theme\/wp-json\/wp\/v2\/tags?post=34"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}