Troubleshooting

Fixing Missing Contacts After Migration

Restore contacts missing after migration with concrete CardDAV export, vCard import, and address-book reconnect steps that work across Gmail, Office 365, and iCloud.

PS

Priya Shah

Senior Systems Engineer

Reviewed by Dan Okafor
· 6 min read
Office workstation representing missing contacts after email migration

You completed the email migration, the user logged into the new mailbox, and their address book is empty. Or partially empty: half the contacts are there, the other half missing, with no obvious pattern. Or every contact has just a name and email but no phone number, no address, no notes. This is one of the most common surprises after an IMAP migration because IMAP simply does not carry contacts. They need their own export and import path, almost always through vCard. This post walks through the export, the import, the gotchas around groups and photos, and the mobile-client reconnect that catches most people out.

Heads up

Typical symptoms you will see reported by the user:

Contacts folder empty on new account
CardDAV: 401 Unauthorized when adding account on iPhone
Outlook autocomplete suggests no one I email regularly
Imported 1,847 contacts but I had 2,103

Why this happens

Two root causes account for almost every missing-contacts incident after a migration.

IMAP does not move contacts. The IMAP protocol is mail-only by design. Contacts live in CardDAV (used by Google, iCloud, Fastmail, and most open-source providers), Exchange Web Services, or Microsoft Graph. An IMAP migration tool does not see the contacts database at all. If your migration plan did not include a CardDAV or Graph step, the contacts were never copied, regardless of how clean the mail migration looked.

Skip the manual setup — let Mailbox Taxi handle it

One desktop app, every IMAP provider, zero data leaving your machine.

CardDAV and Graph require separate authentication. Even when source and destination are the same vendor, contacts use a different endpoint and a different OAuth2 scope. Google Workspace uses https://www.googleapis.com/auth/contacts at the People API, iCloud uses CardDAV at https://contacts.icloud.com, Office 365 uses Microsoft Graph at /me/contacts. A migration token that authorised mail does not automatically authorise contacts, and tools that do not request the right scope simply do not see the data.

vCard format mismatches between vendors. Even when the export and import both run, contact fields can be lost or mangled. Google exports phone numbers with type labels (Mobile, Home, Work); Office 365 imports those into its own type taxonomy and silently drops anything it does not recognise. Contact photos embedded as base64 in vCard 3.0 are sometimes stripped during conversion to vCard 4.0. Custom fields almost never survive a round-trip between vendors.

Fix it now

  1. Confirm the contacts protocol on each side

    Identify the contacts protocol on both sides. For Google Workspace it is the People API or CardDAV. For Office 365 it is Microsoft Graph. For iCloud and Fastmail it is CardDAV. Knowing the protocol determines whether you export to vCard (the universal lowest common denominator) or use a direct API-to-API migration that preserves more fields.

  2. Export contacts as vCard

    Use the source provider's export tool. In Google Contacts it is Settings, Export, then choose "vCard (for iOS Contacts)" for the broadest compatibility. In Office 365 Outlook Web it is People, Manage, Export contacts. In iCloud it is Contacts, select all (Cmd-A), then File, Export, Export vCard. Save the resulting VCF file locally and confirm the file size is plausible (a few hundred KB for 2,000 contacts is typical).

  3. Import the VCF into the destination

    Use the destination provider's Import Contacts option. Google Contacts accepts VCF directly via Settings, Import. Office 365 accepts VCF and CSV via People, Manage, Import contacts. Imports are not always deduplicated at the destination, so if you are re-running an import, first delete the partial contacts already present to avoid creating duplicates. The mechanics mirror what you do for duplicate email cleanup but on a smaller scale.

  4. Re-create contact groups

    vCard preserves group memberships unevenly. Google to Google preserves them well, Google to Office 365 typically loses them, iCloud to anywhere usually flattens them. Rebuild any critical contact groups (Sales team, Family, Vendors) manually on the destination. List them up front from the source so you can compare side by side.

  5. Reconnect mobile contact clients

    On every iPhone, iPad, and Android device, remove the old contacts account and add the new one. iOS in particular caches CardDAV credentials and will keep showing old contacts even after the source mailbox is deleted, until the account is fully removed from Settings, Accounts. After reconnecting, the destination address book populates within a few minutes. The calendar sync fix covers the equivalent step for calendars.

  6. Validate contact counts and rich fields

    Compare the destination contact count to the source count. Allow a small variance for system-level contacts the destination filters automatically. Spot-check 5 to 10 contacts for rich fields: phone numbers, addresses, photos, notes, custom fields. If photos are systematically missing, the export tool likely used vCard 4.0 while the destination expected 3.0, or vice versa. Re-export with the alternative format and re-import only the affected contacts. The post-migration validation playbook covers the full checklist.

How to prevent it next time

Plan contacts migration as a distinct workstream alongside mail and calendar. Even when one tool covers all three, treat each as its own job with its own scope, its own credentials, and its own validation step. The complete email migration guide includes a per-workstream checklist.

For Google-to-Google or Microsoft-to-Microsoft migrations, use the native API rather than vCard. The Google People API and Microsoft Graph preserve far more fields than vCard does, including custom labels and per-field types.

Take the contacts export at the same moment as the email cutover. If contacts are exported a week early, any address-book change the user makes in that intervening week will be lost. Most providers let you re-export quickly, so the right pattern is to export immediately before flipping the user's primary mailbox.

Document a one-page handoff for the user before they log into the new mailbox. Tell them what was migrated (mail, contacts, calendar), what was not (Outlook autocomplete cache, locally-stored signatures), and which devices need reconnecting. This is far cheaper than fielding the same support call ten times. The IMAP protocol glossary is a useful linked reference for users curious about why mail and contacts are separate.

Try Mailbox Taxi

Migrate your mailbox the easy way

Join the waitlist for early access and lock in launch pricing.

Related reading

Try Mailbox Taxi

Migrate your mailbox the easy way

Join the waitlist for early access and lock in launch pricing.