AddCal is a plain REST API, so the two nodes n8n already ships with do the whole job. Use HTTP Request to create events from any workflow, and Webhook to catch RSVPs the moment they land.
In AddCal, open Account then API Tokens, and create a token. Copy it straight away, it is only shown once.
In n8n, add a Header Auth credential and use it for every AddCal node. Storing it as a credential keeps the token out of your workflow JSON when you export or share it.
AuthorizationBearer YOUR_API_TOKENAdd an HTTP Request node wherever you want an event created. Point it at the events endpoint, attach the credential from step 1, and map your fields.
POSThttps://addcal.co/api/eventsExample body
{
"title": "Demo call with {{ $json.company }}",
"description": "<p>Booked from the website form.</p>",
"location": "https://zoom.us/j/123456789",
"date_start": "2026-08-12T14:00:00",
"date_end": "2026-08-12T15:00:00",
"timezone": "Australia/Melbourne",
"calendar_name": "Sales Demos",
"has_rsvp": true,
"reminder_before": 30
}Anything in double braces is an n8n expression, so you can pull values straight from the previous node.
Fields you can send
| Field | Notes |
|---|---|
titlereq | Event title. Max 255 characters. |
date_startreq | Start time. ISO 8601 or "2026-08-12 14:00:00". |
date_end | End time. Defaults to one hour after the start. |
timezone | IANA timezone. Defaults to the calendar timezone. |
calendar_name | Finds or creates a calendar by name. Use calendar_uid instead if you already have one. |
description | Event description. HTML is allowed. |
location | Physical address or a meeting URL. |
is_all_day | Set true for an all-day event. Timezone is ignored. |
has_rsvp | Turn on RSVP collection for the event. |
reminder_before | Reminder in minutes before the start. |
recurrence_rule | An RRULE string, for example FREQ=WEEKLY;BYDAY=MO;COUNT=10. |
If you hit your monthly event limit the endpoint returns 409 with the current usage in the body. Worth adding an IF node on the status code so a workflow does not fail silently.
Add a Webhook node in n8n, set the method to POST, and copy its production URL. In AddCal, open Settings then Webhooks, paste the URL, and pick the event you want.
| Trigger | Fires when |
|---|---|
rsvp.created | Someone submits an RSVP to one of your events. |
rsvp.updated | An existing RSVP is changed. |
calendar.subscribed | Someone subscribes to one of your calendars. |
Each webhook carries one trigger. To handle several, create one webhook per trigger, all pointing at the same n8n URL if you like.
What an rsvp.created delivery looks like
{
"rsvp": {
"uid": "V1StGXR8Z5jdHi6BmyT",
"public_id": "rsvp_V1StGXR8Z5jdHi6BmyT",
"event_uid": "kJ8mQp2XnR4tLw7vBcY",
"response_type": "yes",
"name": "Jane Doe",
"email": "jane@example.com",
"data": {
"dietary": "vegetarian",
"company": "Acme Inc"
},
"created_at": "2026-05-01T09:00:00.000000Z"
},
"event": {
"uid": "kJ8mQp2XnR4tLw7vBcY",
"title": "Team Meetup",
"date_start": "2026-05-01T09:00:00-07:00",
"date_end": "2026-05-01T17:00:00-07:00",
"timezone": "America/Los_Angeles",
"public_url": "https://addcal.co/e/evt_kJ8mQp2XnR4tLw7vBcY"
},
"calendar": {
"uid": "zR3nT9wKq1sYd5hGxJv",
"name": "Company Events",
"timezone": "America/Los_Angeles"
}
} Custom form answers arrive under rsvp.data, which is the field you will usually map into a spreadsheet or CRM.
A few things that catch people out. The top level event key is the calendar event, not the trigger name, and there is no field naming the trigger, so route on which of rsvp or subscription is present.
On calendar.subscribed there is no event key at all, and calendar can be null.
Never return 410 Gone. We read it as an unsubscribe and deactivate the webhook permanently.
Webhooks need the Business plan, and your n8n URL must be public HTTPS. A self-hosted instance on localhost or a private IP will be rejected when you save it.
Form to calendar
Typeform HTTP Request event created
RSVP to spreadsheet
Webhook Google Sheets row appended
RSVP to Slack
Webhook Slack channel notified
CRM deal to demo
HubSpot HTTP Request event created
Events created from n8n land everywhere your audience keeps their calendar.
Create a working calendar link in under a minute.
No credit card, no trial clock, no catch.


