Back to Nodes

Slack Lists

Last updated Aug 15, 2026

n8n community node for Slack Lists (slackLists.* API)

8 Weekly Downloads
160 Monthly Downloads

Included Nodes

Slack Lists
Slack Lists Trigger

Description

n8n-nodes-slack-lists

!n8n
![npm version](https://www.npmjs.com/package/n8n-nodes-slack-lists)
![license](LICENSE.md)

This is an n8n community node. It lets you use Slack Lists in your n8n workflows — create Lists, and create, read, update and delete their items (rows) via the slackLists.* Web API.

The built-in Slack node does not support Slack Lists; this node fills that gap. It reuses n8n’s built-in Slack credential, so if you already have one configured you can use it as-is.

n8n is a fair-code licensed workflow automation platform.

> [!NOTE]
> Slack Lists are only available on paid Slack plans.

  • n8n-nodes-slack-lists
  • Installation
    Community Nodes (recommended)
    Manual installation (Docker / self-hosted)
    Operations
    Item
    List
    Trigger
    Highlights
    Credentials
    1. Prepare the Slack app (Slack side)
    2. Configure the credential (n8n side)
    Usage
    Using as an AI Agent tool
    Compatibility
    Troubleshooting
    Known limitations
    Development
    Resources
    License

    Installation

    Follow the installation guide in the n8n community nodes documentation.

    Community Nodes (recommended)

    1. Go to Settings > Community Nodes in your n8n instance
    2. Select Install
    3. Enter n8n-nodes-slack-lists as the npm package name
    4. Agree to the risks of using community nodes and select Install

    Manual installation (Docker / self-hosted)

    Inside your n8n data directory (e.g. ~/.n8n or /home/node/.n8n in Docker)

    mkdir -p nodes && cd nodes npm install n8n-nodes-slack-lists

    Restart your n8n instance

    Operations

    Item

    | Operation | Description | API method |
    | — | — | — |
    | Create | Add an item (row) with column mapping | slackLists.items.create |
    | Delete | Delete an item | slackLists.items.delete |
    | Delete Many | Delete multiple items at once | slackLists.items.deleteMultiple |
    | Get | Retrieve a single item | slackLists.items.info |
    | Get Many | Retrieve items with pagination and archived filter | slackLists.items.list |
    | Update | Update cells of an item | slackLists.items.update |

    List

    | Operation | Description | API method |
    | — | — | — |
    | Create | Create a List (todo mode, column schema, copy from existing) | slackLists.create |
    | Get | Retrieve a List’s metadata and column schema | files.info |
    | Grant Access | Grant users or channels read/write/owner access | slackLists.access.set |
    | Revoke Access | Revoke access from users or channels | slackLists.access.delete |

    Trigger

    The Slack Lists Trigger node starts a workflow when a List is edited. Slack has no Lists webhook/event, so it polls — set the frequency with the standard Poll Times control (minimum once per minute).

    | Node | Description | API method |
    | — | — | — |
    | Slack Lists Trigger | Fires when the picked List is edited (any cell/row change) | files.info |

    How detection works:

  • Each poll reads the List’s whole-List last-edit timemax(updated, edit_timestamp) from files.info — and fires only when it advances past the previous poll.
  • The first poll after activation does not fire; it just records the current state, so an existing List does not trigger a spurious run on activation.
  • Polls with no change return nothing and are not kept in the executions list, so a 1-minute interval does not clutter your history.
  • Output is a single item describing when / who / which List changed — handy as an audit trail:
  •   {
        "list_id": "F0123ABCDEF",
        "title": "My List",
        "updated": "2026-07-20T23:12:57.000Z",
        "last_editor": "U0123ABCD",
        "permalink": "https://your-team.slack.com/lists/T0123456/F0123ABCDEF"
      }
      
  • It reports that the List changed, not which row or whether a row was added/updated/removed. To act on the changed rows, follow the trigger with a Slack Lists → Item → Get Many node.
  • Highlights

  • List picker — search the Lists visible to your token, or paste a List URL / ID.
  • Dynamic column mapping — Item Create/Update load the List’s actual columns (text, select, user, date, checkbox, rating, …) into n8n’s column mapping UI. Select columns become dropdowns with their real choices, and plain text is converted to Slack’s rich_text format automatically.
  • Simplified output — items are returned as { id, ..., fields: { "Column Name": value } } instead of the raw cell format, and timestamps (datecreated, updatedtimestamp, List created/updated) are converted to ISO 8601 strings so n8n expressions can use them directly. Toggle off via the Simplify parameter to get raw API responses, unix timestamps included.
  • Credentials

    This node uses n8n’s built-in Slack credential (Slack API, access token) — no separate credential type. If you already have a Slack credential in n8n, add the scopes below to its Slack app and you are done.

    1. Prepare the Slack app (Slack side)

    1. Open your app at api.slack.com/apps (or create one)
    2. Go to OAuth & Permissions > Scopes and add the following (bot or user scopes, matching the token you use):

    | Scope | Used for |
    | — | — |
    | lists:read | Reading items |
    | lists:write | Creating/updating/deleting items and Lists, managing access |
    | files:read | List picker, column mapping and List Get (Lists are files in Slack) |

    3. Reinstall the app to your workspace so the new scopes take effect
    4. Copy the Bot User OAuth Token (xoxb-…) or User OAuth Token (xoxp-…)

    2. Configure the credential (n8n side)

    1. In n8n, go to Credentials > Add credential and search for Slack API
    2. Paste the token into Access Token and save

    > [!CAUTION]
    > Keep the token secret. Anyone with the token can access your Slack workspace within its scopes.

    Usage

    Typical flow — append a row to a List from any data source:

    1. Slack Lists node → Resource: Item, Operation: Create
    2. Pick the List (search by name, or paste its URL)
    3. Map columns in Values to Send — or switch the mapping mode to Map Automatically to fill columns whose names match the input JSON keys

    With Simplify enabled (default), items come out ready to use:

    {
      "id": "Rec0123ABCDEF",
      "list_id": "F0123ABCDEF",
      "date_created": "2026-07-19T11:27:21.000Z",
      "fields": {
        "Title": "Invoice issued",
        "Status": "in_review",
        "Assignee": "U0123ABCD"
      }
    }
    

    Notes on column values:

  • Select columns accept and return the option value (e.g. day_1, OptXXXXXX), which you can pick from the dropdown in the mapping UI
  • User / Channel columns accept IDs (U… / C…); multi-value columns accept comma-separated IDs or arrays
  • Date columns accept anything new Date() can parse and are sent as YYYY-MM-DD
  • Using as an AI Agent tool

    This node is marked as usable by AI Agents (usableAsTool). To allow community nodes as tools, set this environment variable on your n8n instance:

    N8NCOMMUNITYPACKAGESALLOWTOOL_USAGE=true
    

    The Get a List operation is handy for agents: it returns the List’s column schema, letting the agent discover valid columns and select options before writing rows.

    Compatibility

  • Tested against: n8n 2.27 (self-hosted, Docker)
  • Requires an n8n version with the resource mapper UI (n8n 1.x or later); older versions are untested
  • Troubleshooting

    | Error / Symptom | Cause | Solution |
    | — | — | — |
    | missing_scope | The token lacks a required OAuth scope (the message names the missing one) | Add lists:read / lists:write / files:read in the Slack app and reinstall it |
    | paidteamsonly | Slack Lists are not available on free plans | Upgrade the workspace to a paid plan |
    | listnotfound / access_denied | The token cannot see the List | Share the List (or its channel) with the app’s bot user, or use a user token with access |
    | List picker shows nothing | files:read missing, or no Lists are visible to the token | Add the scope; paste the List URL / ID directly as an alternative |
    | “Custom API Call” appears in dropdowns | Injected automatically by n8n for all nodes with authenticated credentials — not implemented by this node | Use the HTTP Request node with your Slack credential for uncovered API methods |

    Known limitations

  • The Slack API provides no method to delete a List, and slackLists.update can only change name/description/todo-mode (columns cannot be modified after creation), so these are not exposed.
  • The Trigger node detects that a List was edited (with who/when), but not which row changed or whether it was added/updated/removed — Slack exposes no per-row change feed. Pair it with an Item → Get Many step to inspect the current rows. It also relies on files.info‘s edit_timestamp, an undocumented field; if Slack ever drops it, detection falls back to updated.
  • List export (slackLists.download.*) is out of scope.
  • This package references the built-in slackApi credential type and therefore does not target n8n Cloud’s verified community node program. Self-hosted instances are unaffected.
  • Development

    git clone https://github.com/hoyo/n8n-nodes-slack-lists.git
    cd n8n-nodes-slack-lists
    npm install
    npm run build   # compile to dist/
    npm test        # unit tests (vitest)
    npm run lint
    npm run dev     # run a local n8n with the node linked
    

    Resources

  • Slack Lists API reference
  • Slack Lists product page
  • n8n community nodes documentation

License

MIT