Connecting external calendars to the Events plugin

Getting Started

There are several steps involved in connecting an external calendar to the Events plugin. You’ll need to do these in order:

  1. Add a Provider
  2. Add a Source
  3. Add a Connection

Keep reading for each of these. Here is a video overview:

1 - Add a Provider

The Events Plugin supports a number of event “providers”. An event provider is a service where you host, manage or promote your events.

Supported Providers

Provider Type Notes
iCalendar Calendar Client Google Calendar, Outlook Calendar
Eventbrite Event Discovery
Meetup Event Groups Requires Meetup Pro
Humanitix Event Ticketing
Eventzilla Event Management

If you want to use an events provider that’s not currently supported please reach out to

Add a provider

The first step to integrating a provider is adding it in the “Providers” panel.

If your provider requires authentication you’ll need to provide your credentials and then click the authenticate button


iCalendar providers don’t require any authentication, so you can just add one by selecting “icalendar”, giving it a name and saving the provider. If you’re integrating multiple


Get your Evenbrite API key from your Eventbrite account


Get your Humanitix API Key from your Humanitix account


Get your Eventzila API Key from your Eventzilla account


Create an OAuth Client to obtain your Client ID and Secret. You have to have a Meetup Pro Subscription to create an OAuth Client:

2 - Add a Source

To get your events from a provider you need to add a source. A source is where in the provider you’re getting your events from, such as a calendar or group. When you import from a source the imported events will be listed in “Events”.


Some sources require you to fill out “Options” to connect or identify the source.

Google Calendar

Please follow “Get your calendar (view only)” to get your .ics URI.

Outlook Calendar

Please follow “Publish your calendar” to get your .ics URI.


Get the group url name from the url when looking at your group profile

It should look like this in the events integration source row


Follow these instructions to get your eventbrite organization id

Date Range

The date range determines the date range for the events you import from the source, i.e. only events within the range will be imported.

3 - Add a Connection

Connections are how you display events you’ve imported in your forum. Currently you can connect an event to a topic in a specified category using either the Events Plugin, or the official Discourse Calendar (and Event) - plugin - Discourse Meta.

New types of connections may be added in the future. Any type of connection is possible, including multiple topics per event and dedicated event pages within the forum. If there is a particular way you wish to display events in your forum then reply below.


The user will be the author of event topics created by the connection.


The category is where the event topics will be created


The source is which the events will be synced to the connection


The client handles the displaying of events to users. This can be either the Event Plugin itself, or the offiical Discourse Calendar (and Event) - plugin - Discourse Meta.

4 - Automation and Management

Once you’ve set up a provider, source and connection you may want to automate your imports and syncs or manage your events.


You can schedule source imports and connection syncs to happen automatically using these site settings

  • update events automatically
  • update events automatically period mins

Note that you’ll need to restart your Discourse server if you change update events automatically period mins.

Event Management

You can manage the events you’ve imported in the “Events” admin tab.

You can delete events you’ve imported, and also their associated topics from this tab.

You can also review the logs of provider authentication, source imports and connection syncs in the “Logs” tab.

Subscribing to iCalendar and RSS Feeds

The events plugin allows you to subscribe to the iCalendar feed of a whole forum (i.e. all the events across the forum), or the iCalendar feed of events in a category.


  1. Go to (sitewide) or (category)
  2. Click the “Subscribe” button on the top right.
  3. Click the iCalendar or RSS feed urls to copy them.
  4. Use the URL in any iCalendar or RSS client.

Private Calendars

If the calendar is private (because the site or category is private), you need an Webcal API key to subscribe to your forum’s iCalendar feed.

  1. To generate the key go to my/preferences/webcal-keys.
  2. Click on Generate. Make a note of the client id and an api key generated.
  3. Add the following to the end of the iCalendar URL:

Technical Background

The Events Plugin applies a standard event data model for all providers. The model is the product of extensive research into event data portability and the current landscape of event providers

See further:
DEIP Technical Report (Phase 2).docx.pdf (119.2 KB)

I’ve just rolled all of the topics that described this process into a single topic with a functional table of contents.

I think this works better, and highlights the fact that we need to flesh out the Events documentation.