Original reference guides · Reviewed 8 October 2026
Repeating events, exceptions, and duplicate identities
Start here when: a moved occurrence appears twice, a skipped date returns, or re-importing fails to update an event.
A series can combine RRULE and RDATE, then remove occurrences with EXDATE. An override uses the series UID and RECURRENCE-ID; that recurrence identifier points to the occurrence's original start, even after it moves. RFC 5545, recurrence identifier.
Read the sample as a small story
Our fictional weekly demonstration starts at 15:00 UTC on 4 January 2027. It has four scheduled Mondays. The 18 January occurrence is excluded. The 11 January occurrence moves to 16:00, but its RECURRENCE-ID remains 20270111T150000Z. Expected visible results are 4 January at 15:00, 11 January at 16:00, and 25 January at 15:00. All last thirty minutes.
Download recurring-exceptions.ics and compare those three results. If 11 January appears at both hours, inspect whether the moved component retained the series UID and original recurrence identifier. If 18 January remains, inspect the exclusion. Keep the parent series and its exception together when reducing a larger file for diagnosis.
Google's recurrence explanation describes the union of rule/additional dates with exclusions removed. Its API separately identifies a recurring instance's original start; that remains useful after a move. These are conceptual parallels, not instructions to paste Google JSON into an ICS file. Google recurrence model and event identifiers.
Why another import may not be an update
UID is persistent identity; SEQUENCE is a revision counter for significant changes. Neither guarantees that a file-import screen will merge a later file as you expect. RFC 5545, UID and SEQUENCE.
Before retrying, identify whether you are testing a fresh calendar, a previously imported snapshot, or a subscription. Do not assign a new UID merely to force acceptance: you are then presenting a different identity. Conversely, unrelated appointments should not reuse the same identifier.
Google documents that a second import click can report zero processed events after the first succeeds. Check the destination before treating that message as data loss. For actual migrations, reconcile a small sample of titles, dates, moved instances, and exclusions before importing the full history. Google import troubleshooting.