Discourse Events

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

Enabling Events

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

:discourse2: Hosted by us? This plugin is available on our Business and Enterprise tiers 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.

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

Events

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:

:exclamation: This should not be confused with Pavilion’s Events plugin (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

:information_source: :curling_stone: 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
  • An accompanying chat 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”

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

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

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

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.

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

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.

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.

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

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


  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 documentPerform check on document:
102개의 좋아요
How to use the calendar plugin?
Discourse Calendar - How to?
Calendar plugin, nothing is displayed
Discourse 2.2.0.beta3 Release Notes
How to use the calendar plugin?
Discourse Calendar dislpay link text rather than link url
Ability to mark any post as unread
Is there a room booking plugin?
📅 Event List Widget (Layouts Plugin)
I am looking for a webhook or event api
Inserting date/time into new topic's title field (ie, right here > !)
Db:migrate fails on discourse-calendar
Moderator/Admin Off Duty Button
Go from a Wordpress + Discourse structure to a Discourse site only?
Creating sub-communities in a discourse server
Vacation autoresponder for users who are away?
Please better document the Discourse Calendar plugin
Plugin to gather approvals / signatures on an initiative?
Plugin to show upcoming events on hosted discourse
Can discourse display topic replies in reverse order?
Discourse Livestream
New to Discourse, have some questions :)
Expired events with end times are being removed from upcoming-events even with setting set to -1
Setup Continuous Integration using GitHub Actions
Add color to events based on event category or tag?
Is there any way to change the starting date of the Calendar?
SEO applied to Discourse Official Plugins
Add color to events based on event category or tag?
Add recurrent items within a date-range
Use Case Question - Room/Equipment Booking
Best practices for communicating to user base
Integrate with Discourse-calendar
My Wiki of useful Meta (and other) links
Quotes in event name clears attendees
Calendar in Discourse
Show Cakeday dates on the Calendar plugin
Agenda de colegio
What are your favorite plugins for your community?
Display a category as a calendar by scheduled Topic-timer dates
Why you should use Discourse internally for your company/team instead of Slack (4 years use case)
Newbie question: Is there a comprehensive guide to configuring and administering Discourse instance?
Angus' Events Plugin :calendar:
When "closing" event it moves it to today's date & time
How to display different calendar views?
Discourse calendar and event iCal integration?
Can the auto-responder fire on @mentions?
Event/Calendar Plugin - Cannot select a user for bulk-invite
Bulk Invite via modal only allowing one user (and not displaying correctly)
Event Creation
500 Error when posting, moment.tz runtime error
Best practice for a topic for a recurring event
How to get "back" btn
Event Chat Channels Now Available
📅 New Calendar Feature: End Date for Recurring Events
🌍 New Calendar Feature: Show Local Time
What livestream/webinar platforms do you use?
Custom Wizard Plugin :mage:
ICS → Discourse Importer
How have you built a local community around Discourse?
Angus' Events Plugin :calendar:
What happens next?
Bundling more popular plugins with Discourse core
Calendar subscription URLs for external calendar apps
Listing event invitees with email addresses
Discourse Daily Challenges
Upcoming Events Extra Buttons and Enhancements
Horizon: High Context Topic Cards
Besoin de renseignement pour informer une annulation d'événement
Current Projects - May 2026
It's easier than ever to create events in Discourse!
Easily create Events categories using the Calendar and Events plugin
Discourse Calendar & Events: Webhook triggers & Automations Plugin
Discourse Calendar - How to?
Angus' Events Plugin :calendar:
Topic List Previews (TLP)
New Topic button text does not change to New Event in sidebar in events category in Horizon Theme
Current Projects - June 2026
Event Duplicator: duplicate calendar events/topics into a new time period
It is very difficult to make events all day in the events modal (and 00:00 is confusing)
Questions about the Zoom Livestream integration
Help us test Horizon, our newest theme
Discourse Calendar is now Discourse Events!
Category Calendar with defaultView="listNextYear" not showing events
Zoom webinar livestream in the Events plugin
Calendar Core - Needs any special theme?
Current Projects - August 2026
Creating and managing calendars
Sorting Categories by Title
Creating and managing events
Trial upgrades for Pro → Business
Category Calendar with defaultView="listNextYear" not showing events
The "Save Changes" button is very low on my user preferences interface page
Group Timezones
Easily create Events categories using the Calendar and Events plugin
Available hours / work hours flair
Could use help, setting up new community
Feature request: wrap calendar items when there's just one per day
Right Sidebar Blocks
Custom Discourse instance for a writers club
Unread messages blue numbers appearing in Latest lately (when they shouldn't)?
Database migration chokes on huge value of a "calendar-details" item in table "post_custom_fields"
"Out of office" user indicator
Database migration chokes on huge value of a "calendar-details" item in table "post_custom_fields"
Angus' Events Plugin :calendar:
Angus' Events Plugin :calendar:
Calendar plugin features to make it really useful for us
"Out of office" user indicator

이 플러그인은 유망해 보입니다. 하지만 Pavilion 플러그인에서 전환하지 못하게 만드는 몇 가지 기능이 빠져 있습니다.

  • 캘린더에서 하루 종일 이어지는 이벤트가 아닌 이벤트를 시작 시간과 함께 표시해야 합니다. 현재 모든 이벤트가 하루 종일 이어지는 것처럼 보입니다.

  • 태그 선택기 옆의 작성기(composer)에 ‘이벤트 추가’ 버튼이 있어야 합니다(설정에서 숨겨져 있지 않은 상태로).

  • 이벤트를 가질 수 있는 카테고리를 제한하고, 특정 카테고리에서 이벤트가 필수인지 여부를 설정할 수 있어야 합니다.

있으면 좋은 기능들:

  • 이벤트 메타데이터가 주제(topic)의 맨 위에만 표시되거나 입력되어야 합니다(현재는 커서가 있는 위치에 표시됩니다).
  • 특정 카테고리에서 이벤트를 만들 수 있는 그룹을 제한할 수 있어야 합니다(예: ‘Discussion’ 카테고리에서는 ‘EventPlanners’ 그룹만 이벤트를 만들 수 있지만, 모든 사용자는 이벤트가 아닌 주제를 만들 수 있거나, 주제가 Wiki로 설정된 경우 주제를 수정할 수 있음).
  • /upcoming-events의 URL을 /calendar로 변경.
13개의 좋아요

2개의 게시물이 새 주제로 분리되었습니다: 휴가 상태가 잘못 적용되고 있습니다

안녕하세요,
이 작업을 해주셔서 감사합니다.

UX 관련해서 두 가지 질문이 있습니다:

  • 주제 편집기에서 “위치 추가” 버튼 옆에 “이벤트 추가” 버튼을 표시할 수 있나요? 파빌리온 플러그인처럼 말이죠.
    image

  • 캘린더를 상단 메뉴 항목으로 추가할 수 있는 방법이 있나요? 설정에서 찾지 못했습니다.

정말 훌륭해 보입니다! 몇 가지 생각과 질문이 있습니다:

달력을 만들려면 단순히 새로운 스레드/주제를 생성하고, 아래 내용을 붙여넣으면 되는 것으로 이해해도 될까요?

Name Of Calendar 

[calendar]
[/calendar]

그리고 달력에 항목을 추가하려면, 게시 옵션의 insert time/date 아이콘을 클릭하여 같은 스레드에 다음과 같은 내용을 새 게시글로 작성하면 되는 것인가요?

Name of Event/Entry

[date-range from=2024-04-18 to=2024-04-19 timezone="Europe/London"]

이렇게 하면 달력에 항목이 추가되는데, 정말 좋습니다. 다만:

  • 달력에 항목을 추가하면서, 해당 항목에도 전용 스레드/주제가 있도록 하는 방법이 있을까요? (새 스레드에서 이벤트를 추가할 수는 있는 것 같지만, 그 이벤트를 달력에 추가하는 방법은 보이지 않습니다.)
  • 특정 달력의 '다가오는 이벤트’를 다이제스트 이메일에 소개하는 방법이 있을까요? 아니면 왼쪽 열에 표시하고, 각 항목이 해당 항목의 전용 스레드로 링크되도록 하는 것도 좋겠습니다.

현재 이것이 불가능하다면, 추가할 계획이 있으신가요?

1개의 좋아요

@vinothkannans 이 PR을 검토해 주실 수 있나요?

1개의 좋아요

사용자가 구독할 수 있는 URL 피드를 추가할 계획이 있나요? 모든 이벤트와 사용자가 RSVP를 한 이벤트는 처리 방식이 다를 수 있어서 꽤 까다로울 것 같습니다.

두 번째로, 사적 이벤트를 인식할 수 있는 추가 기능이 있다면 정말 좋겠습니다. (아니면 그룹별 다른 URL 피드를 제공하는 방식일 수도 있겠죠.)

6개의 좋아요

다만 /upcoming-events URL에 대한 RSS 피드는 없습니다. 그 부분은 좋은 추가 기능일 것입니다!

3개의 좋아요

caldav 동기화는 어떻게 되나요?

6개의 좋아요

저에게도 그건 확실히 전환할 이유가 될 것 같습니다.

이 부분은 업데이트가 더 필요합니다. 컴포저에서 '이벤트 삽입’을 언급하고 있지만, 이벤트 세부 정보를 추가하는 방법은 이미지에 나와 있는 것과 다릅니다. 혹시 이벤트가 추가 기능이었던 건가요?

플러그인을 설치했고, 주제(토픽)의 첫 번째 게시물에서는 캘린더 태그가 정상적으로 작동합니다. 하지만 기어 메뉴에서 이벤트나 캘린더 옵션을 찾을 수 없습니다:

기어 메뉴에 이벤트 옵션이 나오도록 하려면 무엇을 해야 하는지 설명해 주실 수 있을까요?

플러그인 discourse post event enabled의 이벤트(Event) 부분을 활성화해야 합니다

2개의 좋아요

고마워요. 어떻게 이 설정을 놓쳤는지 모르겠어요.

3개의 좋아요

카테고리 주제에 '이벤트 생성’이 표시되도록 하고, 댓글을 이벤트로 등록하는 방법은 무엇인가요?

'이벤트 생성’이 새 주제 생성 시에는 정상적으로 작동하는 것을 확인했습니다. 하지만 주제 내에 캘린더를 만들고, 댓글을 통해 이벤트를 추가하고 싶습니다. 날짜 삽입 기능으로 일부는 작동하지만, ‘이벤트 생성’ 기능이 더 많은 옵션을 제공하기 때문에 그다지 만족스럽지 않습니다.

1개의 좋아요

현재 사용자는 프로필 설정에서 지역을 설정할 수 있습니다.

회원가입 시에도 이 필드를 등록 폼에 표시하여 지역을 설정할 수 있도록 하고 싶습니다. 이것이 가능한가요?

3개의 좋아요

삭제된 답글은 캘린더에 여전히 표시되나요?

주的第一天을 월요일로 변경하는 설정을 찾을 수 없는데, 만약 이 기능이 없다면 구현하기 쉬운 건가요? :thinking:

또 다른 문제는 시간 및 날짜 입력이 깨져 있다는 점입니다. 종일 이벤트인 경우, 시간 입력 필드가 날짜를 엉망으로 만들기 전에 이를 선택할 수 있는 옵션이 있어야 하며, 편집할 때 날짜가 무작위로 바뀌는 것 같습니다.

또한 시간과 날짜 모두에 00:00을 입력할 수 있다는 것도 발견했는데, (가끔은 작동하고 가끔은 작동하지 않음) 이로 인해 캘린더에서 오류가 발생하고, 이는 초안과 충돌을 일으켜 페이지가 이전 버전으로 되돌려지고 다시 편집될 때까지 반복적으로 422 오류가 발생합니다.

3개의 좋아요

여기를 참고하세요

1개의 좋아요

그런 설정이 없어서 제가 사용하지 않습니다. 그리고 만약 그 오류가 쉽게 수정할 수 있는 것이라면, 팀이 이미 수정했을 거라고 확신합니다.

1개의 좋아요