ShrubberyDocs
Sign in

External System

Definition

Any third-party tracker (Jira, Linear, GitHub, or a custom system) that creates or closes Shrubbery rows via the API. External System is also the value of the external_system column on a Shrubbery row, identifying which tracker the row originated from.

Avoid: integration, source system, third-party (use "external system" uniformly).

Role

External systems connect to Shrubbery through two endpoints: the Inbox API (create a Draft) and the Sync API (push a status update). They authenticate via an API Token minted by the Lead.

Every row created via URL Drop or the Inbox API stores two fields: external_system (e.g. jira, linear, github) and external_id (the tracker's native issue or task ID). These two fields, combined with assigner_id, form a composite uniqueness constraint that makes both the Inbox API and URL Drop idempotent: the same external issue can only produce one Shrubbery per Lead, regardless of how many times the webhook fires.

The Sync API uses (external_system, external_id) to resolve the target row without needing to know the internal Shrubbery UUID.

Lifecycle

Not a stateful concept. External System describes a relationship between a tracker and a Shrubbery row, not an entity with transitions.

Last updated: 22 June 2026