Zoho Mail ↔ Google Workspace: the complete playbook

Both directions — IMAP, CardDAV and CalDAV with app-specific passwords, the CSV, labels ↔ folders, the domain move.

10 min read

This is the guide for moving between Zoho Mail and Google Workspace in either direction. Zoho is reached the way a mail client reaches it — IMAP for mail, CardDAV for contacts, CalDAV for calendars — with one app-specific password per mailbox that you upload as a CSV. No Zoho API client, no OAuth, nothing installed. The old mailboxes keep working until the domain moves.

1 · Plan the move

DecisionOptionsWhat it changes
DirectionZoho → Google · Google → ZohoWhich side needs app passwords (Zoho, always) and where mailboxes must exist first (the target).
Does the domain move?Yes (people keep their address) · No (new domain)Whether cutover switches MX/SPF/DKIM and where aliases are recreated.
Who moves?Everyone · active staffWho goes in the CSV. People not in the CSV are not migrated.
Waves or one evening?By team · all at onceHow long both suites coexist; forwarding in Zoho per wave.

2 · What becomes what

Zoho MailGoogle WorkspaceHow
Folders (nested)Labels (nested)Read over IMAP as MIME with read, flagged and draft state and original dates; imported with those states
Labels (Gmail → Zoho)FoldersThe first user label decides the folder; Inbox, Sent, Drafts map to Zoho's own folders
ContactsGoogle ContactsvCards over CardDAV, field by field; Zoho categories ↔ contact labels
Calendars, recurring eventsGoogle CalendariCalendar over CalDAV; RRULE recurrence, reminders and attendees kept as data — no invitations are sent
DomainDomainDNS: MX, SPF and DKIM switched at cutover; added/verified in the target's admin console

Listed, not moved: Zoho groups, aliases, signatures, mail filters, out-of-office, WorkDrive files, Cliq; on the Google side Drive, Groups, Chat and Google-native documents. See section 10.

3 · Prepare Zoho

  1. Allow IMAP for the organisationmailadmin.zoho.com → Mail Settings → Access: allow IMAP. Then each user turns it on: Settings → Mail Accounts → IMAP Access.
  2. Two-factor onZoho only issues app-specific passwords to accounts with two-factor authentication. Enforce it at the organisation level if it is not already.
  3. App-specific password per mailboxaccounts.zoho.com → Security → App Passwords → Generate, name it “MigrateX”. Each person does this once and sends the admin the password — or the admin generates them where policy allows.
  4. Zoho as the target: create the mailboxes firstAdd the users in Zoho with their final addresses (or the fallback domain), then generate their app passwords. MigrateX writes into existing mailboxes only.
  5. Data centreZoho hosts in several regions; the IMAP server differs: imap.zoho.com (US), imap.zoho.eu, imap.zoho.in, imap.zoho.com.au. The CardDAV/CalDAV addresses follow the same pattern.

4 · The CSV

One line per mailbox: email,app-specific password,display name. A header line is fine (columns are recognised by name in any order). Upload it on the Zoho connection page; re-upload to add people — a blank password keeps the one already on file. Passwords are stored encrypted with the server's key and never shown again; delete the CSV from your computer afterwards.

email,password,name
jane@acme.com,abcd1234efgh5678,Jane Doe
ravi@acme.com,ijkl9012mnop3456,Ravi Kumar

5 · Prepare Google Workspace

  • Google as the target: create the accounts (same alias as the Zoho address so auto-match pairs them), assign licenses, a fallback domain until cutover, and connect with a super administrator via domain-wide delegation — see Connect a Google Workspace tenant. The Workspace needs a Google Cloud organisation (a super admin has signed in at console.cloud.google.com once).
  • Google as the source: the same connection; nothing else.

6 · Connect

  1. Zoho sideConnect source (or target) → the Zoho page: IMAP server, the CardDAV/CalDAV addresses (pre-filled), the CSV, and one mailbox to test with. MigrateX signs in to that mailbox and reads its Inbox.
  2. Google sideDomain-wide delegation as usual, then the one-time email code.

You see: both tenant cards green, and a “Mailboxes on file” table on the Zoho page showing which passwords have signed in successfully (the assessment tests every one).

7 · Assess and match

The assessment signs in to every mailbox in the CSV, counts messages and adds up sizes, and flags passwords that do not work — fix those in the CSV and upload again. Users match by address; pair the rest by hand.

8 · Pilot and waves

Migrate two or three people first and check folders, flags and a recurring meeting on the other side. Then waves. Delta passes carry only new mail (IMAP UIDs on Zoho, history IDs on Gmail), so run them freely until cutover.

9 · Cutover

  1. ForwardingZoho as the source: in mailadmin.zoho.com (or per user under Settings → Mail Accounts → Forwarding) forward each migrated mailbox to its new address. MigrateX cannot set this with app passwords; the wizard marks the step when you confirm.
  2. Final delta passMailboxes, contacts and calendars.
  3. The domainAdd and verify it in the target's admin console (Google or Zoho — the wizard shows the record), then switch MX, SPF and DKIM. Zoho's MX: mx.zoho.com, mx2.zoho.com, mx3.zoho.com; SPF include:zoho.com. Google's: smtp.google.com, SPF include:_spf.google.com.
  4. AddressesZoho as the target: set each mailbox's primary address on the moved domain and add old aliases in the admin console. Google as the target: MigrateX applies them.
  5. Notice and sign-offSend the notice; print the report.

10 · Limits

  • App passwords can read and write mail, contacts and calendars — nothing else. Groups, aliases, signatures, filters, out-of-office and forwarding are set in the Zoho admin console and are listed in the report.
  • WorkDrive and Cliq are separate Zoho products and are not migrated.
  • Zoho's IMAP allows a handful of connections per mailbox and roughly four messages a second; MigrateX uses one connection per mailbox and runs mailboxes in parallel across workers.
  • Contact photos and calendar attachments do not travel over CardDAV/CalDAV.
  • The CSV is the user list: someone missing from it is not assessed or migrated.

Checklist

Before you startIMAP allowed · two-factor on · app passwords generated · CSV ready · target mailboxes exist and are licensed · fallback domain in place
Before cutoverBoth tenants green · every password signs in · users matched · pilot verified · every wave migrated and verified
Cutover eveningForwarding set in Zoho · final delta pass · domain added and verified · MX, SPF and DKIM switched · addresses set · notice sent · report printed