PLATFORM
Gmail Migration Tool
MigrationFox migrates Gmail mailboxes to Microsoft 365 Exchange Online with folder-tree preservation, label-to-category mapping, sender attribution via internet message headers, and original receivedDateTime preservation. Works with both individual Gmail accounts (OAuth) and Google Workspace tenants (service-account with domain-wide delegation for bulk mailbox migrations).
Folder & Label Handling
Gmail's label model is fundamentally different from Outlook's folder tree: a single message can carry multiple labels (e.g. INBOX + a custom label + IMPORTANT). MigrationFox translates this faithfully:
- System labels — INBOX, SENT, DRAFT, TRASH, SPAM — map to the matching Outlook system folders (Inbox, Sent Items, Drafts, Deleted Items, Junk Email)
- User labels — your custom Gmail labels become Outlook categories on the migrated message (color names don't survive; the label name does)
- STARRED — maps to Outlook's flag-for-followup (
flagStatus = 'flagged') - IMPORTANT — maps to Outlook's
importance: high - CATEGORY_* / CHAT / UNREAD — not folders, so not used as folder hierarchy (UNREAD becomes Outlook's
isRead: false; CATEGORY_* tabs aren't reproducible in Outlook and are dropped)
Cross-folder dedup: because a single Gmail message carries multiple labels, naive iteration would write the message twice. MigrationFox dedupes by source message ID — first folder iterated wins. System folders come first in iteration order so the message lands where users expect it (Inbox over user-label).
Auth Modes
Two authentication paths supported:
- OAuth2 (delegated) — one user grants access via Sign-in-with-Google. Best for single-mailbox migrations or for testing.
- Service-account with domain-wide delegation — Google Workspace admin issues a service-account key with domain-wide delegation, MigrationFox impersonates each user via the JWT-with-subject flow. Required for bulk mailbox migrations (200+ users) where individual OAuth consent would be impractical.
Attachment Carry
Attachments are read from Gmail's full message payload (inline parts and large attachments via users.messages.attachments.get) and re-encoded into RFC 2822 multipart/mixed for delivery to the destination platform. Today this is gated behind the ENABLE_GMAIL_ATTACHMENTS production flag and rolling out in a 48-hour soak per platform; on full rollout, attachments will flow by default. Per-attachment cap: 25 MB; total per message: 25 MB (recipient-side Outlook enforcement varies by tenant).
Date Preservation
The original received timestamp from Gmail (internalDate) is preserved on the destination message. Outlook's view shows the message at its original date in the mailbox sort order, not the migration timestamp.
Read State and Categories
Read / unread state from Gmail is preserved. User-defined labels become Outlook categories on the message so search-by-category still works on the destination side.
Pricing
Mail migration is included in the standard $0.50 / GB pay-as-you-go rate (CAD). Each migrated message is billed by its full RFC 822 size including attachments. Free tier (2 GB) covers small mailbox migrations end-to-end.
Request beta access
Gmail migration is currently invite-only while we finish staged rollout. Existing customers in good standing get beta access on request — either flip the mailMigrationBetaEnabled flag from the in-app Admin panel (if you're a Super Admin on your tenant) or email hello@migrationfox.com with your tenant ID. Approval is usually within one business day.