Copy mailboxes and Copy from Gmail use a local incremental index to track what has already been migrated, so follow-up runs only copy new or changed items.
If that index is missing or out of sync, ShareGate Migrate copies everything from the source again, resulting in duplicates at the destination.
This article explains how to keep the index in sync across runs.
How the incremental index works
Each time you copy mailboxes, ShareGate Migrate records the source and destination item IDs in a local database on the machine where the migration runs.
On a follow-up run using the same mappings, ShareGate checks that database and skips anything it has already copied.
ShareGate does not scan the destination mailbox to detect pre-existing items. It only skips items it has personally recorded.
If its local history is missing, reset, or was built on a different machine, it will copy everything from the source again, regardless of what is already at the destination.
Keep your original migration task
ShareGate Migrate tracks incremental runs through the original task in the Tasks tab.
Deleting that task permanently removes the incremental history. We recommend keeping the original migration task until all follow-up migrations for those mailboxes are complete.
Always run follow-up copies from the same machine
If you run a follow-up copy from a different machine, ShareGate finds no record of the original migration and treats all items as new, copying everything again and duplicating your items at the destination.
It is best to designate one machine for each set of mailbox migrations and always run follow-up copies from that machine.
