@ilijazm/n8n-nodes-nextcloud-calendar
v0.1.1
Published
n8n community node for Nextcloud Calendar (CalDAV) with correct recurrence expansion and working invitations.
Maintainers
Readme
@ilijazm/n8n-nodes-nextcloud-calendar
An n8n community node for Nextcloud Calendar over CalDAV.
Unlike other Nextcloud/CalDAV nodes, this one:
- Expands recurring events correctly — RRULE/RDATE/EXDATE/RECURRENCE-ID overrides are resolved into real occurrences within the requested range, and times are DST-correct (
VTIMEZONE/TZIDaware). A weekly all-day deadline shows up on the day it actually recurs, not on its original master date. - Actually sends invitations — creating/updating an event with attendees writes a proper
ORGANIZER/ATTENDEEpayload so Nextcloud dispatches iMIP invitation emails. - Returns one item per event (idiomatic n8n), with an optional "Return as single list" toggle when you want a single array item instead.
- Is
usableAsTool: true, so an AI Agent can drive it directly.
The CalDAV/iCalendar core is server-agnostic; the defaults and invitation handling are tuned for Nextcloud.
Installation
Settings → Community nodes → Install @ilijazm/n8n-nodes-nextcloud-calendar.
To use it as an AI-Agent tool on a self-hosted instance, set N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true.
Credentials
Nextcloud Calendar API — Basic auth with an app password:
| Field | Description |
| --- | --- |
| Server URL | e.g. https://cloud.example.com (no /remote.php/dav) |
| Username | Nextcloud login name |
| App Password | User Settings → Security → App passwords |
| Invitation Email | The account's email, used as ORGANIZER so invitations send (must match the Nextcloud account email exactly) |
Operations
Calendar: Get Many · Create · Delete Event: Get Many · Search · Next Events · Get · Create · Update · Delete
Read operations expand recurrences within the time range by default.
Invitations — server requirements
For Nextcloud to email attendees, all of these must hold (all controlled here except the admin settings):
- A working mail server is configured in Nextcloud, and Settings → Groupware → "Send invitations to attendees" is on.
- The credential's Invitation Email matches the account's registered email (case-sensitive).
- External attendees are not disabled (
occ config:app:set dav caldav_external_attendees_disabled --value no).
Development
npm install
npm run build # n8n-node build (compiles + copies icons to dist/)
npm run lint # n8n-node lint
npm test # unit tests (recurrence engine, no server)
npm run test:integration # Docker Nextcloud integration tests
npm run dev # run inside a local n8n with hot reload