42min

n8n community node for 42min — scheduling, bookings and booking event triggers

Package Information

Released: this month
Downloads: 0 weekly / 0 monthly
Latest Version: 0.2.0
Author: 42min

Documentation

n8n-nodes-42min

An n8n community node for 42min, a meeting
scheduling platform. Create and manage bookings, look up availability, and start
workflows the moment something happens on a calendar.

This is a community node. It runs inside your own n8n instance and talks directly to
api.42min.us; nothing routes through a third party.

Installation

In n8n, go to Settings → Community Nodes → Install and enter:

n8n-nodes-42min

Or install it manually next to your n8n data directory:

npm install n8n-nodes-42min

Requires n8n 1.x and Node.js 20.15 or newer.

Credentials

The node authenticates with a personal access token.

  1. In 42min, open Settings → API and create a token.
  2. Give it the scopes you need. For everything this node offers:
    user:read, event_types:read, slots:read, bookings:read, bookings:create,
    bookings:cancel, bookings:reschedule, bookings:update, series:read,
    series:write, webhooks:read, webhooks:write.
  3. In n8n, create a 42min API credential and paste the token.

Use Test to confirm it works. Leave Base URL alone unless you run a
self-hosted 42min.

Operations

42min (action node)

Resource Operations
Booking Create, Get, Get Many, Update, Cancel, Reschedule
Event Type Get, Get Many
Series Create, Get, Get Many, Update, Pause, Resume, End, Change Host
Slot Get Many, Check
User Get Current

42min Trigger

Starts a workflow on any of these events:

booking_created, booking_updated, booking_canceled, booking_rescheduled,
booking_no_show, event_type_updated, event_type_deleted,
routing_form_submitted.

Activating a workflow registers a webhook subscription with 42min automatically, and
deactivating it removes the subscription again.

A booking that is one occurrence of a recurring series carries series_id and
series_index, on trigger items and on lookups alike.

Things worth knowing

Trigger items and lookup items use the same field names. 42min delivers webhooks
in nested camelCase (data.booking.startTime) while the REST API is flat snake_case
(start_at). Booking triggers reshape the delivery into the REST vocabulary so you do
not have to learn two names for every field. The original envelope fields survive as
event_id, event and occurred_at. Set Raw Payload if you want the delivery
untouched.

Deliveries are verified. Every webhook is checked against its
X-42min-Webhook-Signature HMAC, with a replay window, and anything that fails is
rejected with a 401 instead of starting your workflow. Turn Verify Signature off
only if something between 42min and n8n rewrites the request body.

Dedupe on delivery_id, not event_id. The delivery id is stable across retries.
Both are attached to every trigger item.

Writes are idempotent. Booking creates, updates, cancels and reschedules send an
Idempotency-Key derived from the execution and item, so a retry inside one execution
replays the original result rather than double-booking. Set Idempotency Key
yourself when the same logical operation might be attempted from more than one
execution, for example keyed on a CRM record id.

Get Event Type identifies by ID or by username plus slug. A slug alone is not
enough, since it is unique per user rather than per account. The node encodes the
username/slug pair into the single path segment the API expects.

Recurring series skip busy dates rather than shifting them. Creating a series
books up to count occurrences; a date the host is not free on is left out, and the
output lists what was created and what was skipped. The event type must have
recurring meetings turned on. Updating a series reads it first to send its version
token back, exactly like updating a booking, and a pattern change rebooks the
upcoming occurrences onto the new dates.

Check the slot before you book. Use Slot: Check first. A slot that was free a
moment ago may not be, and Create Booking sends real email and writes to a real
calendar.

Updating a booking reads it first. 42min requires the If-Match version token on
a PATCH, so the node fetches the booking, takes its ETag and sends it back. A
concurrent edit fails with a 409 rather than being silently overwritten. Only
metadata, responses and attendee_name are writable: to move a booking use
Reschedule, to cancel it use Cancel.

Trigger requirements

42min delivers over HTTPS to public addresses only. Your n8n must be:

  • reachable at an https:// URL, and
  • resolvable to a public IP. Deliveries to private ranges are refused.

If n8n advertises a non-HTTPS address the trigger will say so when you activate the
workflow. Set WEBHOOK_URL (or N8N_PROTOCOL and N8N_HOST) accordingly.

The action node has no such requirement: it only makes outbound calls, so it works
behind a firewall.

Local development

npm install
npm run lint
npm test

To run n8n with the node loaded and rebuilt on every change:

npm run dev

For the trigger you need a publicly reachable n8n, so use a tunnel during
development.

Releasing

Publishing happens in GitHub Actions, which attaches an npm provenance
statement. n8n requires this: nodes published from a local machine are not
accepted for verification.

npm version minor
git push --follow-tags

Pushing the tag runs .github/workflows/publish.yml, which lints, builds and
publishes. Update CHANGELOG.md in the same commit as the version bump.

Resources

License

MIT

Discussion