Running an import and seeing existing events duplicated on your site can be extremely frustrating. This article should help you determine why this might be happening and let you know what can be done.
How Event Aggregator Works
iCalendar feeds and ICS files contain information about events in a standardized format, which allows those events to be imported to other platforms. Part of the information that is included for each event is a unique identifier, or UID. When you import events from an iCalendar feed or an ICS file, Event Aggregator uses an event’s UID to determine whether an event is new and needs to be created or has already been imported. If it finds an event on your site with the same UID, that event will be updated on your site or ignored, depending your Event Update Authority settings under Events > Settings > Imports. If it doesn’t see an event on your site with that UID, it will create a new one.
What causes events to be duplicated on my site?
Typically, that UID will remain the same in the source calendar, and each time you run an import, Event Aggregator will see a matching ID for events that have already been imported. However, the UID does not always remain the same. There are a few cases where it can change, which looks to Event Aggregator like the event is new.
Some sources change the UID
In some cases, the source calendar provides a different UID each time the calendar is updated. In this case, Event Aggregator will see the new UID and create a new event. One such source is Outlook calendars. Since the UID changes regularly, Event Aggregator is unable to reliably detect changes from this source.
Recurring events in a Google Calendar
While Google Calendars do not change the UID following changes to single events, recurring events are a different story. Say you create a recurring event in your Google Calendar that recurs daily, weekly, monthly, or yearly. In the iCalendar feed that Google creates for your calendar, this creates one event entry with a recurrence rule that looks something like this:RRULE:FREQ=WEEKLY;WKST=SU;UNTIL=20190704T035959Z;BYDAY=WE
Event Aggregator will see this and create single events on your site using this information. However, if you modify one of the instances of that event, a new event entry with a separate UID will be generated in the iCalendar feed. Because the iCalendar feed doesn’t give us any information in the feed indicating that this new event is “linked” to the original one, Event Aggregator will see the two separate UIDs and create a new event for the modified instance.
What can I do to about duplicates?
If your source calendar is changing the UID each time an event is updated, you can contact the source to let them know about this issue. Otherwise, you can always hide the old version of the event, which will prevent it from showing up anywhere on the front end of your site.