Linea Docs

Built-in Integrations

Slack, GitHub, Notion, and Gmail nodes for workflow automation.

Built-in Integrations

Linea ships four integration node types that connect directly to external services without any custom HTTP configuration. Each integration resolves its credentials from a named workspace secret stored in the encrypted secrets table.

Secrets are stored AES-256-GCM encrypted. Store them via the Secrets settings page or the API. The integration executor retrieves the value at runtime — the raw token is never logged.

Secret Resolution

Each integration looks up a fixed secret name from the workspace:

IntegrationSecret name
SlackSLACK_TOKEN
GitHubGITHUB_TOKEN
NotionNOTION_TOKEN
GmailGMAIL_TOKEN

Slack

Node type: slack

Communicates with the Slack Web API using a Bot Token (xoxb-…).

Actions

actionRequired fieldsDescription
send_messagechannel, messagePost to a channel (e.g. #general or channel ID)
send_dmuserId, messageOpen a DM and send a direct message
list_channelsReturns { channels: [{ id, name }] }

Optional fields (send_message)

  • username — override the bot display name
  • iconEmoji — e.g. :robot_face:

Output

{ "ok": true, "ts": "1715600000.000100", "channel": "#general" }

GitHub

Node type: github

Authenticates with a Personal Access Token or GitHub App token.

Required fields

All actions require owner (org or user) and repo.

Actions

actionAdditional fieldsDescription
create_issuetitle, body?, labels?Open a new issue. labels is comma-separated.
comment_issueissueNumber, bodyAdd a comment to an existing issue
list_issuesReturns up to 50 open issues
create_prtitle, head, base, body?Open a pull request

Output (create_issue)

{ "number": 42, "url": "https://github.com/acme/repo/issues/42" }

Notion

Node type: notion

Uses the Notion API v1 with an internal integration token.

Actions

actionRequired fieldsDescription
create_pagedatabaseIdCreate a page in a database. Optional: title, content.
append_blockpageId, contentAppend a paragraph block to an existing page
query_databasedatabaseIdQuery with optional filter (JSON Notion filter object)
get_pagepageIdFetch page metadata and properties

Output (create_page)

{ "id": "abc123", "url": "https://notion.so/abc123" }

Gmail

Node type: gmail

Uses the Gmail REST API with an OAuth2 access token (scope: gmail.send and/or gmail.readonly).

Actions

actionRequired fieldsDescription
send_emailto, subject, bodySend an RFC 2822 plain-text email. Optional: cc, bcc.
list_emailsList messages. Optional: query (Gmail search syntax), maxResults (default 10).
get_emailmessageIdFetch subject, from, date, and snippet for a message

Output (send_email)

{ "messageId": "18a4b2c3d4e5f678", "threadId": "18a4b2c3d4e5f678" }

Gmail requires a short-lived OAuth2 access token, not a static API key. Use a service account or a token refresh flow outside Linea to keep GMAIL_TOKEN current.


Adding integrations to a workflow

  1. Open the visual builder for a workflow.
  2. In the Node Library panel, expand the Integrations category.
  3. Drag the desired node onto the canvas.
  4. In the configuration panel, select an action and fill in the required fields.
  5. Variable chips ({{variable}} syntax) are supported in all text fields via substitution.

On this page