n8n integration 

 AddCal and n8n,
no custom node needed.
=======================================

 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.

[ Get your API token, free ](https://addcal.co/register)[ Jump to the setup ](#create-events)

Works on n8n Cloud and self-hosted No community node to install 

 Step 1 

 Create an API token 
---------------------

 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.

 n8n credential: Header Auth 

Name`Authorization`

Value`Bearer YOUR_API_TOKEN`

 Step 2 

 Create events from n8n 
------------------------

 Add 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.

 n8n node: HTTP Request 

Method`POST`

URL`https://addcal.co/api/events`

Authentication Generic Credential Type, then Header Auth

Send Body On, using JSON

 Example 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 |
| --- | --- |
| `title`req | Event title. Max 255 characters. |
| `date_start`req | 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.

 Step 3 

 Receive RSVPs in n8n 
----------------------

 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.

 Workflows worth building 
--------------------------

 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

 Compatibility 

 Syncs with every major calendar 
---------------------------------

 Events created from n8n land everywhere your audience keeps their calendar.

![Google Calendar](https://cdn.addcal.co/e60da96/build/assets/gcal-LeXQIYGw.svg)![Apple Calendar](https://cdn.addcal.co/e60da96/build/assets/apple-BJO7yr1p.svg)![Microsoft Outlook](https://cdn.addcal.co/e60da96/build/assets/outlook-BzUwKtBB.svg)![Office 365](https://cdn.addcal.co/e60da96/build/assets/365-DRde3oVI.svg)![Yahoo Calendar](https://cdn.addcal.co/e60da96/build/assets/yahoo-DDAmZj_b.svg)

 FAQ

n8n integration, answered
-------------------------

### Is there an AddCal node for n8n?

There is no dedicated node, and you do not need one. AddCal has a standard REST API, so n8n's built-in HTTP Request node covers everything on the sending side, and the built-in Webhook node covers everything on the receiving side. Both are included with n8n, cloud and self-hosted.

### How do I authenticate?

Create an API token under Account then API Tokens. In the HTTP Request node, add a Header Auth credential with the name "Authorization" and the value "Bearer YOUR_TOKEN". Tokens do not expire, so store it as an n8n credential rather than pasting it into the node.

### Do webhooks work with self-hosted n8n?

Yes, as long as your n8n instance is reachable on a public HTTPS URL. We reject plain HTTP and private or local addresses, so a instance running on localhost or an internal IP will not receive deliveries. Put it behind a public hostname with a valid certificate, or use an n8n Cloud webhook URL.

### Are webhook deliveries signed?

Not currently. There is no signature header to verify, so treat your n8n webhook URL as a secret. n8n generates a long random path by default, which is what keeps it private. If you want a second layer, add Header Auth to your n8n Webhook node and tell us the header you want sent.

### What happens if my workflow is down?

We retry failed deliveries three times with a 60 second backoff, and each attempt itself retries up to three times on a server error. One thing to watch: if your endpoint returns 410 Gone, we treat that as an unsubscribe and permanently deactivate the webhook. A paused n8n workflow should return a 404 or a 2xx, never a 410.

### Do I need a paid plan?

Creating events through the API works on any plan, including free. Receiving webhooks requires the Business plan. If you downgrade, webhook deliveries stop silently, so keep that in mind if a workflow suddenly goes quiet.

 Still have questions? 

 A real person on our team replies, usually the same business day. 

 Start live chat 

 Free to start, no credit cardWire up your first workflow.
Your API token takes a minute.
-----------------------------------------------------------

Create a working calendar link in under a minute.
 No credit card, no trial clock, no catch.

[ Get started, free ](#start)[ or compare plans and pricing ](https://addcal.co/pricing.md)

![Rachel Kim](https://cdn.addcal.co/e60da96/build/assets/test_1-D_w4B6C6.jpg)![Daniel Ortega](https://cdn.addcal.co/e60da96/build/assets/test_2-DqHKeMBW.png)![Priya Mehta](https://cdn.addcal.co/e60da96/build/assets/test_3-Csszw6s7.png)

15,000+ creators & teams

 Free forever · no credit card
