# Re-add full ics export

**URL:** https://meta.discourse.org/t/re-add-full-ics-export/230713
**Category:** Feature
**Tags:** events, completed
**Created:** [June 22, 2022, 5:35am UTC](https://meta.discourse.org/t/re-add-full-ics-export/230713 "2022-06-22T05:35:49Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![mjsir911](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mjsir911/32/264466_2.png) [@mjsir911](https://meta.discourse.org/u/mjsir911)
#### Post date: [June 22, 2022, 5:35am UTC](https://meta.discourse.org/t/re-add-full-ics-export/230713/1 "2022-06-22T05:35:49Z")

</div>

Hi,

It would be nice to have the behavior that was removed in [#231](https://github.com/discourse/discourse-calendar/pull/231).

Specifically, being able to point an ical client towards `events.ics` or equivalent to get _all_ events on the site.

Additionally, the `DESCRIPTION`, `URL` & `ORGANIZER` fields are missing from the `download-calendar.js` replacement. The first two are more important to me.

It would be even nicer to pull in [#169](https://github.com/discourse/discourse-calendar/pull/169) to add “per-topic” event exports, but that’s extra

---

<div class="post-metadata">

### Author: ![Julien\_Palard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/julien_palard/32/198784_2.png) [@Julien\_Palard](https://meta.discourse.org/u/Julien_Palard)
#### Post date: [February 21, 2023, 4:24pm UTC](https://meta.discourse.org/t/re-add-full-ics-export/230713/2 "2023-02-21T16:24:38Z")

</div>

I also would be very happy if I could subscribe to events from my calendar.

Mirroring `/upcoming-events` I’d love to see a `/upcoming-events.ics`.

But yeah, having a way to get it for a single category (or even a single tag?) would probably be a great addition too.

Maybe `/upcoming-events.ics?category=12` to filter by category id?

---

<div class="post-metadata">

### Author: ![bmann](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bmann/32/333739_2.png) [@bmann](https://meta.discourse.org/u/bmann)
#### Post date: [March 15, 2023, 6:36pm UTC](https://meta.discourse.org/t/re-add-full-ics-export/230713/3 "2023-03-15T18:36:09Z")

</div>

+1 on full ics feed and filtered by topic.

I know this is hard because of privacy. The usual path is that a random hash feed representing a per user feed is generated.

---

<div class="post-metadata">

### Author: ![Robert\_McCurdy](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/robert_mccurdy/32/388043_2.png) [@Robert\_McCurdy](https://meta.discourse.org/u/Robert_McCurdy)
#### Post date: [May 23, 2024, 1:32pm UTC](https://meta.discourse.org/t/re-add-full-ics-export/230713/4 "2024-05-23T13:32:46Z")

</div>

umm what … it’s public URL at least with whatever calendar we use …

> **[CUB SCOUT
PACK 450](https://pack450.org/calendar-2)**
>
> ROSWELL, GA

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [September 16, 2025, 9:49am UTC](https://meta.discourse.org/t/re-add-full-ics-export/230713/5 "2025-09-16T09:49:28Z")

</div>

I just want to add my support for this feature as well. I have already voted on this topic.

Bringing back a full-site or per-user ICS export would be extremely valuable for our community’s workflow. Is there any update on reconsidering what was removed in [PR #231](https://github.com/discourse/discourse-calendar/pull/231)?

If there are privacy or implementation concerns, perhaps a private, per-user ICS feed could be considered as a solution.

Thanks for considering this!

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [September 17, 2025, 2:50am UTC](https://meta.discourse.org/t/re-add-full-ics-export/230713/6 "2025-09-17T02:50:14Z")

</div>

> [@Ethsim2](#):
>
> If there are privacy or implementation concerns, perhaps a private, per-user ICS feed could be considered as a solution.

I don’t think there are any privacy concerns, cause the .json endpoint is already there anyway, this is just a different type of formatting.

@cvx / @j.jaffeux thoughts on bringing back `.ics` to the event index route (removed in: [DEV: Remove old ics code by cvx · Pull Request #231 · discourse/discourse-calendar · GitHub](https://github.com/discourse/discourse-calendar/pull/231/files)) ? Seems like an easy win to me.

We already do:

`DiscoursePostEvent::EventFinder.search(current_user, filtered_events_params)`

And can have a MAX\_RESULTS (order by most recent) to ensure this and the `.json` don’t get too big.

---

<div class="post-metadata">

### Author: ![kelv](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kelv/32/524739_2.png) [@kelv](https://meta.discourse.org/u/kelv)
#### Post date: [October 7, 2025, 10:55am UTC](https://meta.discourse.org/t/re-add-full-ics-export/230713/9 "2025-10-07T10:55:01Z")

</div>

I’ve added back the capability for ics export via `GET /discourse-post-event/events.ics` (as of [DEV: add ical format response for discourse-post-events index route by tyb-talks · Pull Request #35143 · discourse/discourse · GitHub](https://github.com/discourse/discourse/pull/35143) ) . Do note that this endpoint has a hard limit of 200 events. If your site has more events than that and you want to do a full export, you may iterate through by using the `before` and `after` query parameters which accept date strings. We’ll be adding the full list of acceptable parameters for this endpoint to the API docs in due course.

---

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [October 10, 2025, 5:58am UTC](https://meta.discourse.org/t/re-add-full-ics-export/230713/10 "2025-10-10T05:58:29Z")

</div>

Thanks for merging [PR #35143](https://github.com/discourse/discourse/pull/35143) — great to see the .ics export officially back.

One thing I wanted to check: is there any possibility (or future plan) to authenticate this feed with a user token or API key, similar to how Discourse handles private RSS/Atom feeds (/topics/feed.rss?token=…)?

Right now /discourse-post-event/events.ics seems to work only for public events, which means Outlook / Google Calendar can’t subscribe to private categories.

Even a lightweight token-based approach (per-user or per-site, read-only) would make it possible to securely expose private events in calendar clients without having to proxy the feed through an external script.

Is that something that could be added, or is it already possible through an existing parameter I might have missed?

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [October 29, 2025, 4:44am UTC](https://meta.discourse.org/t/re-add-full-ics-export/230713/11 "2025-10-29T04:44:23Z")

</div>

> [@Ethsim2](#):
>
> One thing I wanted to check: is there any possibility (or future plan) to authenticate this feed with a user token or API key, similar to how Discourse handles private RSS/Atom feeds (/topics/feed.rss?token=…)?

This feels like a separate feature request. I think it is technically doable with an API key, so I guess the question is how would you easily swing this.

going to close this off and let you open a new item about this.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [October 29, 2025, 4:44am UTC](https://meta.discourse.org/t/re-add-full-ics-export/230713/12 "2025-10-29T04:44:39Z")

</div>


