Package Information
Available Nodes
Documentation
n8n-nodes-nextcloud-talk
An n8n community node for Nextcloud Talk.
Table of contents
Installation
Follow the community node installation guide in the n8n documentation.
The package name is n8n-nodes-nextcloud-talk.
Setting up credentials
Bot account (for the NextcloudTalk node and polling trigger)
The NextcloudTalk node and the polling trigger authenticate as a Nextcloud user to call the API. The recommended approach is to create a dedicated user account that acts as the bot. This keeps bot activity separate from personal accounts and makes it easy to revoke access later.
1. Create a dedicated user
In the Nextcloud admin panel, create a new user (e.g. n8n-bot) with a display name that will appear in Talk alongside its messages. See the Nextcloud user management documentation for details.
2. Add the bot to the relevant conversations
Log in as an admin or as a moderator of each conversation the bot needs access to, then add the bot user as a participant. The bot can only read or post in conversations it is a member of.
3. Generate an app password
Log in as the bot user and go to Settings → Security → Devices & sessions. Scroll to the App passwords section, enter a name (e.g. n8n), and click Create new app password. Copy the generated password — it is only shown once.
See the Nextcloud app passwords documentation for more detail.
4. Configure the credential in n8n
In n8n, create a new Nextcloud API credential and fill in:
| Field | Value |
|---|---|
| Server URL | Your Nextcloud instance URL, e.g. https://cloud.example.com |
| Username | The bot account username, e.g. n8n-bot |
| App Password | The app password generated in step 3 |
Webhook trigger (NextcloudTalk Webhook Trigger)
The webhook trigger works differently — Nextcloud Talk calls n8n when a message is sent, rather than n8n polling Nextcloud. There is no user account involved in receiving messages. Instead, a Talk bot is registered on the Nextcloud server with a shared secret. The NextcloudApi credential on the webhook trigger node is only used to enable or disable the bot for the configured conversation when you activate or deactivate the workflow.
See the Nextcloud Talk Webhook Trigger section below for the full setup.
Features
Conversation
| Operation | Description |
|---|---|
| List | Return all conversations the authenticated user is part of |
| Get | Get details of a single conversation by token |
| Create | Create a new group conversation |
| Delete | Delete a conversation |
| Rename | Change the display name of a conversation |
| Set Description | Update the conversation description |
| Toggle Guest Access | Allow or disallow guests to join via a public link |
| Toggle Favorite | Mark or unmark a conversation as a favorite |
| Set Notification Level | Control when you receive notifications for a conversation |
| Set Read-Only | Lock or unlock a conversation for new messages |
Message
| Operation | Description |
|---|---|
| Get Many | Retrieve messages from a conversation, with optional limit and offset |
| Send | Post a new message to a conversation |
| Reply | Reply to an existing message |
| Edit | Update the text of a previously sent message |
| Delete | Delete a message |
| Mark as Read | Set the read marker to the latest message |
Participant
| Operation | Description |
|---|---|
| List | List all participants in a conversation |
| Add | Add a user or group to a conversation |
| Remove | Remove a participant from a conversation |
| Promote to Moderator | Grant moderator privileges to a participant |
| Demote from Moderator | Remove moderator privileges from a participant |
Poll
| Operation | Description |
|---|---|
| Create | Create a poll in a conversation |
| Get | Retrieve a poll and its current results |
| Vote | Submit a vote on a poll |
| Close | Close a poll so no further votes can be cast |
Reaction
| Operation | Description |
|---|---|
| Add | React to a message with an emoji |
| Remove | Remove your reaction from a message |
| Get | List all reactions on a message, with optional filter by emoji |
Triggers
There are two trigger nodes. Choose based on your setup:
| Node | Latency | Requirement |
|---|---|---|
| Nextcloud Talk Trigger | ~1 min (n8n schedule) | Nothing extra |
| Nextcloud Talk Webhook Trigger | Instant | Nextcloud admin registers a bot once |
Nextcloud Talk Trigger (polling)
Polls a conversation for new messages on n8n's workflow schedule (default: every minute). No extra server setup required — just configure the conversation token and activate the workflow.
Nextcloud Talk Webhook Trigger (instant)
Nextcloud pushes a notification to n8n the moment a message is sent, so the workflow fires instantly. It uses Nextcloud Talk's Bot API.
One-time server setup
A Nextcloud admin must register the bot on the server once. Run the following on the Nextcloud host:
occ talk:bot:install --feature webhook --feature response "n8n" "<YOUR_SECRET>" "<YOUR_N8N_WEBHOOK_URL>"
Arguments are positional: name, secret, url.
| Feature flag | What it enables |
|---|---|
--feature webhook |
Nextcloud Talk sends incoming message events to the bot URL. Required for the webhook trigger to fire. |
--feature response |
The bot can send messages and reactions back via the bot API. Required when using the Bot Secret option in the Send/Reply operations to post as the bot (actorType bots). |
Both features are recommended. Without --feature response, sending a message with a bot secret will return a 401 error.
- url — use the production webhook URL shown in n8n under Webhook URLs when the trigger node is selected. Do not use the test URL — it is only active while you are listening for a test event in the editor.
- secret — a random string of at least 40 characters; you will enter the same value in the node
- The command prints the Bot ID — note it down
To list already-registered bots and their IDs:
occ talk:bot:list
Configuring the node in n8n
| Field | Value |
|---|---|
| Conversation Token | The conversation token (from the Talk URL) |
| Bot ID | The numeric ID printed by occ spreed:bot:install |
| Bot Secret | The --secret value used during registration |
When you activate the workflow, n8n automatically enables the bot for the configured conversation. When you deactivate it, the bot is disabled for that conversation. The bot registration on the server stays in place and can be reused across multiple workflows and conversations.
Development
Prerequisites
- Node.js 20+
- Docker (for the integration test environment)
Setup
npm ci
Local development
npm run dev
This starts a local n8n instance at http://localhost:5678 with the node loaded and hot-reload enabled — changes to source files are picked up automatically without restarting.
Running the integration tests
The test suite spins up a real Nextcloud instance in Docker, installs the Talk app, and runs every operation against it. No manual setup is required.
npm run test:integration
The test runner handles the full lifecycle automatically:
- Starts a Nextcloud container (
nextcloud:30-apache) via Docker Compose - Waits for Nextcloud to be ready
- Installs the Talk (spreed) app via
occ - Creates a
testuseraccount used by several tests - Runs all tests sequentially (tests share Nextcloud state, so parallel execution is disabled)
- Tears down the container when done
To run against a different port (e.g. if 8080 is already in use):
NEXTCLOUD_PORT=9090 npm run test:integration
Linting
npm run lint # check
npm run lint:fix # auto-fix