# Discourse Events

**URL:** https://meta.discourse.org/t/discourse-events/97376
**Category:** Plugin
**Tags:** official, events, included-in-core
**Created:** [September 17, 2018, 3:50pm UTC](https://meta.discourse.org/t/discourse-events/97376 "2018-09-17T15:50:24Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![Discourse](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/discourse/32/148734_2.png) [@Discourse](https://meta.discourse.org/u/Discourse)
#### Post date: [September 17, 2018, 3:50pm UTC](https://meta.discourse.org/t/discourse-events/97376/1 "2018-09-17T15:50:24Z")

</div>

| | | |
| --- | --- | --- |
| :discourse2: | **Summary** | **Discourse Events** adds dynamic and interactive calendar and event features to your Discourse site. |
| 📖 | **Install Guide** | **This plugin is bundled with Discourse core**. There is no need to install the plugin separately. |

> [@](#):
>
> :discourse2: As this is an #official plugin maintained by the Discourse team, #Support, #Contribute > Bug, #Contribute > UX, and #Contribute > Feature requests can be made in the respective categories here on Meta, and tagged with the appropriate plugin tag. Click on a link below to get one started. 👍
> 
> [❓ **Support**](https://meta.discourse.org/new-topic?category_id=6&body=%3E%20Before%20asking,%20did%20you%20search%20first%3F%20Press%20%F0%9F%94%8D%20at%20the%20upper%20right%20to%20search.&tags=events "Ask for support on configuring and using Discourse Calendar") [🐛 **Bug**](https://meta.discourse.org/new-topic?category_id=1&tags=events "A bug report means something is broken, preventing normal/typical use of the plugin") [👀 **UX**](https://meta.discourse.org/new-topic?category_id=9&tags=events "Discussion about the user interface of Discourse Calendar, and how features are presented (including language and UI elements)") [💡 **Feature**](https://meta.discourse.org/new-topic?category_id=2&tags=events "Discussion about how existing Discourse Calendar features can be improved or enhanced, and how proposed new features could work")

### Enabling Events

The Events plugin can be enabled either by the toggle or from its settings, both accessible from your `admin/plugins` page:

 ![The Events plugin can be turned on from the Plugins page in the admin settings area.](https://global.discourse-cdn.com/meta/original/4X/b/a/d/bada7e29e45a2ce2ad466296a09fc46d171f13b4.png)

> :discourse2: Hosted by us? This plugin is available on our Business and Enterprise tiers [https://www.discourse.org/plugins/calendar.html](https://www.discourse.org/plugins/calendar.html)

### Features

Somewhat unsurprisingly, **Discourse Events** adds both the calendar and event features to your Discourse site. With these, you can create individual topic calendars to track important occasions or timelines, display calendars in categories, add a holiday calendar to mark vacations, absences, or sick days, create interactive event topics, as well as show an easy-access calendar summary of all of your upcoming events.

### Calendars

Bespoke calendars can be created in multiple topics, and ones you wish to give higher visibility to can be displayed above a category’s topic list.

 ![topic calendar](https://global.discourse-cdn.com/meta/original/4X/5/0/2/502856276d85fc5088283c543ba40aa204aa7e7b.png)

You can find more detailed information on how to create and use calendars in:

> [@Creating and managing calendars](https://meta.discourse.org/t/create-calendars/283773):
>
> bookmark This guide explains how to create and manage calendars in Discourse using the Calendar (and Event) plugin. person_raising_hand Required user level: All users Calendars are a powerful feature in Discourse that allow you to organize and display events within your community. This guide will walk you through the process of creating calendars, adding events, and managing them effectively. Summary Enable the Calendar plugin Create a calendar in a topic or category Add events to you…

### Events

 ![event](https://global.discourse-cdn.com/meta/original/4X/8/a/5/8a57c44dbcb11b1002035d5eadaef9f02c674578.png)

The Event feature allows interactive elements to be inserted into topics which your members can use to sign up to attend or participate in your community’s activities. These are all summarised in a dedicated site-wide calendar, with the option to add an easy-access link to your navigation menu. You can find more information on how to create and use this feature in:

> [@Creating and managing events](https://meta.discourse.org/t/create-events/149964):
>
> bookmark This guide explains how to create and manage events using the Calendar and Event plugin in Discourse. It covers how to create events, set event options, interact with events, and view the upcoming events calendar. person_raising_hand Required user level: All users (with appropriate permissions) Enabling events Events are a feature of the [Calendar and Events plugin](https://meta.discourse.org/t/discourse-calendar-and-event/97376). To use this feature: Enable the Calendar and Events plugin Configure related settings For detailed instructions…

> ❗ This should not be confused with Pavilion’s [Events plugin](https://meta.discourse.org/t/events-plugin/69776) (note the plural)

### Calendar Settings

| Name | Description |
| --- | --- |
| calendar enabled | Enable the discourse-calendar plugin. This will add support for a [calendar][/calendar] tag in the first post of a topic. |
| holiday calendar topic id | Topic ID of staffs holiday / absence calendar. |
| holiday status emoji | Defines the emoji used for the holiday status. |
| delete expired event posts after | Posts with expired events will be automatically deleted after (n) hours. Set to -1 to disable deletion. |
| all day event start time | Events that do not have a start time specified will start at this time. Format is HH:mm. For 6:00 am, enter 06:00 |
| all day event end time | Events that do not have a end time specified will end at this time. Format is HH:mm. For 6:00 pm, enter 18:00 |
| calendar categories | Display a calendar at the top of a category. Mandatory settings are categoryId and postId. eg: categoryId=6;postId=453\[1\] Other valid settings: tzPicker\[2\], weekends\[3\] and defaultView\[4\]. |
| calendar categories outlet | Allows to change which outlet should show the category calendar. |
| working days | Set working days. You can display the availability of a group using the `timezones` tag in a post, eg: `[timezones group=admins][timezones]` |
| working day start hour | Start time of the working day hours. |
| working day end hour | End time of the working day hours. |
| close to working day hours extension | Set extension time in working day hours to highlight the timezones. |
| calendar automatic holidays enabled | Automatically set holiday status based on a users region (note: you can disable specific automatic holidays in plugin settings) |
| map events title | Maps title of the sidebar calendar based on category. Defaults to “Upcoming events” |

### Event Settings

| Name | Description |
| --- | --- |
| discourse post event enabled | Enables the Event features. Note: also needs `calendar enabled` to be enabled. |
| discourse post event allowed on groups | Groups that are allowed to create events. |
| displayed invitees limit | Limits the numbers of invitees displayed on an event. |
| display post event date on topic title | Displays the date of the event after the topic title. |
| use local event date | Use local date after topic title instead of relative time. |
| discourse post event edit notifications time extension | Extends (in minutes) the period after the end of an event when `going` invitees are still being notified from edit in the original post. |
| discourse post event allowed custom fields | Allows to let each event to set the value of custom fields. |
| events calendar categories | Display an events calendar at the top of a category. |
| sort categories by event start date enabled | Enable the sorting of category topics by event start date. |
| disable resorting on categories enabled | Allow categories to disable the ability for users to sort on the event category. |
| sidebar show upcoming events | Show upcoming events link in the sidebar under ‘More’. Requires `post event enabled` |
| map events to color | Assigns an event color to a specified tag or category |

> ℹ 🥌 The `discourse-post-event/events.json` endpoint now has an added parameter to switch between simple and detailed response. To get the detailed response you can add `?include_details=true`:
> 
> `/discourse-post-event/events.json?include_details=true`

## Creating Events via the API

You can create events via `POST /posts.json` with `[event][/event]` BBCode in the `raw` field. Here are the details on how to setup your API request:

- Use `POST /posts.json` with the `raw` parameter
- Event syntax: `[event start="2024-05-10 20:00" status="public" timezone="America/Vancouver" end="2024-05-10 21:30" allowedGroups="trust_level_0"]\n[/event]`
- A literal `\n` newline is **required** between opening and closing tags
- Double quotes must be escaped when using JSON (`\"`)
- The API user account **must have permission to create events** (admin or a group with event creation rights)
- Set the category via the `category` parameter, passing in the category’s id as the value.

## Livestream events

For live events, use the livestream functionality to let members watch an event and participate in chat at the same time.

A livestream event includes:

- A video stream (using YouTube, for example)
- A calendar event using [Discourse Events](https://meta.discourse.org/t/discourse-calendar-and-event/97376)
- An accompanying [chat](https://meta.discourse.org/t/discourse-chat/230881) channel automatically created for the event

### Prerequisites for livestream events

To use livestream events, you must have `chat enabled`, since livestream creates a chat channel to accompany your event, in addition to `discourse post event enabled` and `calendar enabled`.

> **If you want to use livestream, but don't want chat elsewhere...**
>
> - Set `chat allowed groups` to the default configuration, or include `trust_level_0` to let brand new users participate in livestream chat
> - Remove groups from the `direct message enabled groups` setting to prevent user-to-user DMs
> - Don’t create other chat channels

### Creating a livestream event

To create a livestream event:

1. Open a new topic.
2. Select the **+** icon in the composer toolbar and click Create Event (if the event was not already added to your topic).
3. Paste the link to the event video (e.g., a YouTube URL) in the location/URL field.
4. Toggle on “livestream”

 ![the discourse composer with an event block and livestream toggle on](https://global.discourse-cdn.com/meta/original/4X/1/f/c/1fceff27d471bcbdd7234b99d66bf7fa81fb124c.png)

You will then see that the event and livestream has been created, along with an accompanying chat channel on the right side.

 ![The livestream event and its chat channel, before the member has RSVPed.](https://global.discourse-cdn.com/meta/original/4X/0/0/0/0000e62a1d03170b183a82b8e490e7e2d93855f5.jpeg)

Once any user hits Going on the event, they will automatically join the chat channel, allowing them to participate in the conversation!

 ![The livestream event and its chat channel, after the member has RSVPed.](https://global.discourse-cdn.com/meta/original/4X/a/7/7/a771e9d2cb23db6c4e59174a44eb7ccd1f2acc1f.jpeg)

### Livestreaming Zoom webinars

You can use livestream to host Zoom webinars directly in Discourse, so that members can watch the event and participate in the accompanying chat channel without leaving your community.

#### Prerequisites for Zoom webinars

In addition to the [livestream prerequisites](#p-473517-prerequisites-for-livestream-events-8), you will also need to configure the following settings:

- Turn on `livestream zoom enabled`
- Enter your Zoom Meeting SDK key in the `livestream zoom sdk key` setting
- Enter your Zoom Meeting SDK secret in the `livestream zoom sdk secret` setting

#### To obtain the Zoom Meeting SDK key and secret:

1. Go to [marketplace.zoom.us](https://marketplace.zoom.us), click **Develop** , and click **Build app**.  

2. When asked what type of app you’re creating, choose **General App** and click **Create**.  

3. From the app’s **App Credentials** page, copy the **Client ID** (SDK Key) and **Client Secret** (SDK Secret).

4. Under **Embed** , enable the **Meeting SDK** permission.

5. In your Discourse, go to **Admin → All site settings** and enter the values from step 3 in `livestream zoom sdk key` and `livestream zoom sdk secret`.

For the Zoom webinar to work correctly in Discourse:

- The webinar **should not require registration or a passcode** to join.

- **Disable Zoom’s built-in webinar**  **chat** to ensure all discussion happens in the single Discourse chat channel to keep all chat in one place and ensure the conversation can continue after the webinar ends.

#### Creating a Zoom webinar livestream event

To create a livestream event for your Zoom webinar:

1. Open a new topic, select the **+** icon, and click **Create Event**.
2. Paste your Zoom webinar link (e.g., `https://zoom.us/``...`) in the **URL** / **Location** field.
3. Toggle **Livestream** on.
4. Set the event name, start time, end time, and other event details as desired.
5. Post the topic.

 ![Creating a Zoom livestream event in Discourse.](https://global.discourse-cdn.com/meta/original/4X/3/a/4/3a4b6ddb35ec4b9af6ce2550ab743703d66f8a24.png)

Like other livestream events, this event will be created with an accompanying Discourse chat channel that members auto-join after they RSVP as “Going”.

#### Member experience

Here’s how your members will experience the webinar:

**Before the event**

A Join Zoom button is shown from 30 minutes before the event starts. Outside that window, the button is disabled with a message indicating when it will become available.

 ![The "Join Zoom" button is disabled until 30 minutes before the event starts.](https://global.discourse-cdn.com/meta/original/4X/f/1/6/f16b64a64810723f5b45c27aa2bb52168dd1ccde.png)

**During the event**

Once members click Join Zoom, the webinar will load into the topic page (or, if the host hasn’t yet started the event, the member will need to wait until they do so to see the video).

 ![The Zoom webinar loads directly in the event topic.](https://global.discourse-cdn.com/meta/original/4X/f/e/b/feb7721d4839677a78e9224e348c614fa0774bd5.png)

Audio **does not** automatically connect when joining the webinar; attendees need to click or tap the audio icon in the Zoom toolbar to connect. This is a Zoom SDK limitation and can’t be changed.

 ![The audio connection icon in the Zoom webinar.](https://global.discourse-cdn.com/meta/original/4X/9/e/6/9e606b484cc7486d21af088a9a09bc200b104a33.jpeg)

On mobile, the webinar opens in a full-screen Zoom view (which is also accessible on desktop by adding `/zoom` to the end of the event topic URL) with a floating **Chat** button that they can tap to open a chat overlay panel during the event.

 ![Fullscreen Zoom webinar on mobile.](https://global.discourse-cdn.com/meta/original/4X/7/6/3/763b1f96ff0201a8c9dc803c003715ccd1883939.jpeg)

 ![Fullscreen Zoom webinar on desktop, with the chat overlay.](https://global.discourse-cdn.com/meta/original/4X/6/9/5/695fc572eddd6548aa89fc3f71762d8f0b05fe82.jpeg)

**After the event**

The Join Zoom button is hidden 10 minutes after the event end time. The chat channel remains accessible to attendees until you close it.

### Integrations with Other Plugins

You can use a component from this plugin with [Right Sidebar Blocks](https://github.com/discourse/discourse-right-sidebar-blocks). You’ll want to ensure the desired route is enabled in the Right Sidebar Blocks component. The block name will be `upcoming-events-list`. Historically, there were additional settings required in the Calendar plugin itself, but this has been streamlined.

This is how the sidebar calendar will appear by default.

 ![Screenshot 2024-12-05 at 4.36.10 PM](https://global.discourse-cdn.com/meta/original/4X/2/3/7/237331c496ef339a50336bb9cf0274066122dc14.png)

If you don’t want the time, you can add an empty `timeFormat` value in the component’s block setting.

 ![Screenshot 2024-12-05 at 4.36.42 PM](https://global.discourse-cdn.com/meta/original/4X/3/f/5/3f545d12fadbaa1768df04bf9b7ee1ad028793d5.png)

* * *

1. categoryId is the category the calendar will be displayed on top of.  
postId is the post in which you put the calendar in with [calendar][/calendar] 

2. it can display a time zone picker on the upper right of the calendar. False by default, you can enable it with tzPicker=true 

3. it can hide Saturdays and Sundays from the calendar. True by default. You can set it to false with weekends=false. 

4. defaultView will set the calendar’s view (day, week, etc;). It can be set as:  
  
defaultView=agendaDay  
defaultView=agendaWeek  
defaultView=month (default)  
defaultView=listNextYear 

> Last edited by @Moin 2026-08-26T14:37:57Z
> 
> > **Check document**
> >
> > Perform check on document:

---

_[View the full topic](https://meta.discourse.org/t/discourse-events/97376)._
