A duplicate means something is producing two of the same event. Keeper.sh corrects a copy that already exists rather than making another, so the second one is coming from somewhere else. There are three usual causes.
You built a two-way setup without meaning to
If A sends to B and B also sends to A, an event created in A gets a copy in B, and that copy is a real event in B. A deliberate two-way pair is exactly this, and it is fine. The problem case is a two-way setup between calendars that already share events some other way.
Open each calendar's Send Events to Calendars and read the pair as a whole. If you only wanted events flowing one way, untick the return direction, then delete any copies left behind in that calendar.
Another sync tool is still running
Duplicates very often mean two tools are copying the same events. A desktop sync utility left running, a calendar service's own built-in sync, a shared calendar someone else is also mirroring. Any of them will keep re-adding what you just cleaned up.
Turn the other tool off first, then delete the leftovers once.
The same calendar arriving by two routes
A calendar can reach one app twice: connected directly in that app, and also included in a Keeper.sh shareable link the app subscribed to. Both routes are working correctly; you are seeing the same events through two windows. Remove one — take that calendar out of the link, or unsubscribe from the link in the app.
Duplicates that keep coming back
If you delete a copy and it returns, something is still copying it. That is a connection you have not found or another tool still running — not a stuck update. Remove whatever is producing the copy first, then clean up once.
Where to go next
- Sending events to another calendar — one direction per connection, and what removing one does
- Sync your work and personal calendars — a two-way setup built on purpose
- An event has not arrived in the other calendar — the opposite symptom