Zoho Mail is connected the way a mail client connects: IMAP for mail, CardDAV for contacts, CalDAV for calendars, with one app-specific password per mailbox. There is no Zoho API client to register and nothing to install. You collect the passwords in a CSV and upload it; MigrateX stores them encrypted and signs in to each mailbox as needed. The same page connects Zoho as a source (Zoho → Google Workspace) or as a target (Google Workspace → Zoho).
Before you start
- IMAP allowed for the organisation — mailadmin.zoho.com → Mail Settings → Access. Each user also turns it on under Settings → Mail Accounts → IMAP Access.
- Two-factor authentication on — Zoho only issues app-specific passwords to accounts with 2FA.
- Zoho as the target: the mailboxes must exist first (create the users in Zoho, on the final domain or a temporary one) and each needs an app password.
- Your Zoho region — the servers differ:
imap.zoho.com(US),imap.zoho.eu,imap.zoho.in,imap.zoho.com.au,imap.zoho.jp. CardDAV/CalDAV hosts follow the same pattern (contacts.zoho.eu,calendar.zoho.eu…).
Step by step
- Generate an app-specific password for each mailboxaccounts.zoho.com → Security → App Passwords → Generate New Password. Name it “MigrateX”. Each person does this once and passes the password to the admin (or the admin does it where policy allows).
- Build the CSVOne line per mailbox:
email,password,name. A header line is fine — columns are recognised by name (email, password, name) in any order. Commas, semicolons or tabs all work. - Press Connect source (or target) on the project OverviewThe Zoho page opens with the IMAP server and the CardDAV/CalDAV addresses pre-filled for the US region — change the hosts for another region. Clear a DAV address to skip contacts or calendars.
- Upload the CSV and name a mailbox to test withPick one address from the CSV. MigrateX signs in to it over IMAP and reads the Inbox. If the sign-in fails, nothing else is checked and the reason is shown.
- Check the “Mailboxes on file” tableEveryone in the CSV is listed. The assessment signs in to each one and marks it Works or shows the error; fix those rows and upload the CSV again — a blank password keeps the one already on file.
You see: the tenant card on the Overview turns green with “Zoho Mail · your-domain”, and the Users tab lists everyone in the CSV.
email,password,name
jane@acme.com,abcd1234efgh5678,Jane Doe
ravi@acme.com,ijkl9012mnop3456,Ravi Kumar
Who does what — and what it costs
- Each user: enables IMAP and generates one app password (two minutes).
- The Zoho admin: allows IMAP, collects the passwords, and later does forwarding, addresses and the domain in the admin console (the cutover wizard says when).
- Cost: nothing on the Zoho side; one MigrateX license per migrated person as on every route.
How the access works
- Passwords are encrypted with the MigrateX server's key the moment the CSV is read, one row per mailbox. They are decrypted only for the IMAP, CardDAV or CalDAV call that needs them, and are never logged, exported or shown again — not even in error messages.
- All connections use TLS. Every request stays on the host you configured; a redirect or link to another host is refused, so a password can never be sent elsewhere.
- An app password can read and write mail, contacts and calendars — and nothing else. Groups, aliases, signatures, filters, forwarding and the domain are yours to change in mailadmin.zoho.com.
- Revoke at any time by deleting the app password in Zoho; MigrateX loses access instantly. Delete the CSV from your computer after uploading.
Things worth knowing
- The CSV is the user list: someone missing from it is not assessed and not migrated.
- Delta passes use IMAP UIDs per folder, so a second pass carries only new mail.
- Zoho allows a handful of IMAP connections per mailbox and roughly four messages a second; MigrateX keeps one connection per mailbox and moves mailboxes in parallel across workers.
- Contact photos and calendar attachments do not travel over CardDAV/CalDAV. WorkDrive and Cliq are separate products and are not migrated.
- Any IMAP host works with the same page — Zoho's values are just the defaults.