Daily Linear Ticket Sync to Google Sheets - n8n Workflow

Automate daily synchronization of Linear team tickets to Google Sheets using this robust n8n workflow. Perfect for reporting, historical tracking, and custom metrics.

Workflow Preview

Ready to automate?

Download this n8n workflow template and start using it instantly.

Who is this best for?

Project Managers needing automated daily reporting on Linear progress.
Data Analysts who use Google Sheets for historical issue tracking and metrics.
Teams requiring custom backups or summaries of their project management data.
Anyone looking for advanced examples of scheduled synchronization within an n8n workflow.

Overview

Many teams rely on Linear for project tracking but often need that data centralized in Google Sheets for customized reporting, auditing, or integration with other business intelligence tools. This powerful n8n workflow solves the manual pain of data export by running a scheduled Linear synchronization every day.

It handles the complex aspects of the Linear API, including robust pagination for retrieving large numbers of tickets, custom data transformations (like formatting labels), and ensuring data integrity by performing an append or update operation in the Google Sheet. This makes it one of the most useful n8n templates for devops and project management teams. By leveraging the specialized GraphQL n8n node, we efficiently pull structured data, transforming it via a Code n8n node before the final Google Sheets n8n node action.

How it Works


  1. Trigger Activation: The process begins with the Schedule n8n trigger, set to fire every morning at 9:00 AM, initiating the daily sync cycle for the entire n8n workflow.

  2. Initial Data Fetch: The first GraphQL n8n node connects to the Linear API, querying up to 100 tickets for a specified team (e.g., "Adore"), using a filter, and checking the pagination metadata.

  3. Pagination Loop: An If n8n node checks if hasNextPage is true. If it is, the n8n workflow enters a recursive loop: it captures the endCursor using a Set n8n node and executes the GraphQL n8n node again, passing the cursor to fetch the next batch. This ensures all tickets are retrieved.

  4. Data Preparation: All retrieved ticket arrays are merged, and the Split Out n8n node processes each ticket individually.

  5. Custom Fields & Formatting: The workflow uses a Set n8n node to standardize data, such as converting nested labels into a single string and providing a default estimate value if one is missing.

  6. Flattening: A crucial Code n8n node executes custom JavaScript to flatten the complex, nested JSON objects (received from the Linear API) into simple key/value pairs (e.g., state.name), which is necessary for seamless auto-mapping to the Google Sheets n8n node.

  7. Sheet Writing: Finally, the Google Sheets n8n node uses the unique ticket id to either append a new row or update an existing row if the ticket has already been recorded, ensuring your spreadsheet data remains current and accurate throughout the execution of the n8n workflow.

Installation Guide


  1. Import the n8n workflow: Copy the provided JSON data and paste it into your n8n instance using the "Import Workflow" function.

  2. Linear Credentials: Set up an 'Header Auth' credential with your Linear API key (as a bearer token). Link this credential to both GraphQL n8n nodes ('Get all your team's tickets' and 'Get next page').

  3. Google Sheets Credentials: Locate the "Write tickets to Sheets" n8n node. Connect your Google Sheets OAuth2 API credentials.

  4. Configure Team and Sheet:

In both Linear GraphQL n8n nodes, update the variables JSON filter to replace the placeholder team name ("Adore") with your specific Linear Team name.
In the Google Sheets n8n node, select the target Google Sheet document and the specific sheet tab.

  1. Activate: Activate the Schedule n8n trigger to begin the automated daily synchronization. This robust n8n workflow template is now ready to run.

Node Details

Schedule Trigger (Every day at 06:00): This specialized n8n trigger initiates the entire process on a schedule (set to 9:00 AM daily).
GraphQL n8n node (Get all your team's tickets / Get next page): The core connection to Linear. It efficiently fetches ticket data, handles team filtering, and supports pagination using after cursors to ensure full data retrieval. The credential setup is vital for this n8n node.
If n8n node (if has next page): A flow control n8n node essential for managing the pagination loop, checking the Linear response payload for the hasNextPage flag.
Split Out n8n node (Split out the tickets): Splits the array of returned tickets so that subsequent data transformation nodes can process each item individually within the n8n workflow.
Set n8n node (Set custom fields): Used to structure and normalize ticket data. Key Configuration: It aggregates nested labels into a single string and ensures the estimate field has a default value, making the data cleaner for the final sheet output.
Code n8n node (Flatten object...): Executes custom JavaScript to flatten the deeply nested Linear JSON structure. This is critical because the Google Sheets n8n node requires flat data for seamless automatic column mapping.


  • Google Sheets n8n node (Write tickets to Sheets): The final action node. It uses the appendOrUpdate operation and automatically maps the flattened input data, using the Linear id to ensure existing records are updated rather than duplicated in the spreadsheet.

Related n8n Workflows

Free

Nodes: 8 Nodes
Updated: December 26 2025
View all
Created by

Team lead @ n8n

Featured*