Connect Zoho Campaigns once with OAuth, then push a branded email from Milo as an export-ready draft with your HTML, subject, sender and list. Review and send it from Zoho. For other ESPs, export HTML or MJML and import the file instead.
In Milo Email Studio you finish the email on the canvas once, so you are not rebuilding it in Zoho's editor every time a line changes. Milo can replace the draft when you edit. Using another ESP? See the file export guide.
Zoho Campaigns, not Zoho Mail
This integration is for Zoho Campaigns, Zoho's product for marketing campaigns, lists and draft campaigns. It isn't Zoho Mail, and it doesn't replace Zoho Marketing Automation or Zoho as your ESP.
What the integration does
| In Milo | In Zoho Campaigns |
|---|---|
| OAuth connect to Zoho Campaigns | Review the draft and send or schedule |
| Push HTML as a draft campaign | Own the list and the campaign send |
| Pick list or segment (and topic when shown) | Keep contacts and automations |
| Re-upload = replace draft (delete + create) | Final proof before the list send |
| Warn on missing Zoho unsubscribe tags | Verified sender and compliance |
You connect once, and after that a finished email reaches Zoho as a draft in one go. Zoho stays in charge of the list and the send.
Design the email in Milo
The things that usually go wrong in a rushed rebuild (the brand, the tags and the proof) get settled here first. Here's the short version. The other guides go into more detail.
A head start, not a blank canvas. Start from Promo, Welcome, Newsletter, Event or blank, or describe the email and the AI designer drafts blocks onto the canvas. Seasonal starters such as Halloween sale and Christmas gifts are there too when you need them.
On-brand without restyling. Your palette, fonts and buttons live in the brand kit, so new blocks stay on-brand. See brand kits for on-brand email templates.
Sign-off in one place. Rewrite the copy, move blocks around, and share a preview link if someone needs to sign it off.
Zoho's tags, not someone else's. Switch the editor to the Zoho Campaigns dialect and the personalisation and compliance tags match what Zoho expects, for example $[FNAME]$, $[LI:UNSUBSCRIBE]$, $[LI:UPDATEPROFILE]$, $[LI:VIEWINBROWSER]$ and $[HF:ORGADDRESS]$.
A proof before you push. A Test goes to an address on your account, with a subject that starts with Test, so you can check the layout and copy before anything reaches Zoho. For width, images off and the rest of the before-you-send list, see the HTML email checklist.
Connect Zoho Campaigns (admin)
It's a one-off job for an org admin, and after that anyone in the workspace can push.
The admin opens Integrations in your organisation, chooses Zoho Campaigns and completes the OAuth consent screen. Zoho accounts in different regions are supported (for example US, EU, IN, AU and others on the allowed list). The account then shows as Connected, or Needs reconnecting if the token needs refreshing.
Org admins connect, disconnect and reconnect, and once it's connected, any member can push. The Free plan includes one connected integration, and reconnecting the same provider doesn't use up another one.
Push a draft from the email
When the proof looks right, open Export to Zoho Campaigns (the Export to ESP panel when Zoho is the connected account). One panel attaches the audience and fields, and the campaign is waiting in Zoho as a draft.
Choose the account and audience
Pick your connected Zoho Campaigns account. Under Send to, choose a mailing list or a segment so that audience is attached to the draft. If the account uses topics, a Topic field appears next to it.
Set campaign fields
Enter the campaign name, subject, from name and from email. The from address has to be a verified sender in Zoho.
Heed content checks
Milo warns (it does not hard-block) if the HTML is missing $[LI:UNSUBSCRIBE]$ or $[LI:ORG_OPTOUT]$, so you catch missing unsubscribe tags before Zoho does. Without a proper unsubscribe link, Zoho may replace your header or footer, or refuse to send. HTML over 300,000 characters is an error and matches Zoho's create-campaign limit.
Create the draft
Confirm, and the draft appears in Zoho Campaigns. Open Zoho to review it, then send or schedule it from Zoho.
Re-upload or delete later
If you change the email, Re-upload replaces the draft Milo created: the old draft is deleted and a new one is created, because this path has no separate Zoho "update campaign content" step. You can also delete the draft from Milo if you have permission.
File export still works
You can download HTML or MJML from Share at any time. Use it if you'd rather hand the file over yourself, or if your ESP doesn't support push yet.
For other ESPs, Mailchimp among them, export the file and import it into your ESP. Full steps: design a branded email and export it to your ESP.
If you're on Zoho Campaigns, the push is the quickest route, and the file download is there as a backup if you'd rather upload HTML in Zoho yourself. Either way, you send from Zoho.
On HubSpot, there's no push, so follow how to import custom HTML into HubSpot. If you push to Zoho on a regular basis, a Milo Flow can end with an Upload to connection step that creates the draft for you.
For the wider trade-off between a studio and your ESP, see design then export versus build in your ESP.
Before you send from Zoho Campaigns
- Unsubscribe / org opt-out tags are present in the Zoho shape Milo expects
- From address is verified in Zoho
- List, segment, and topic (when used) match the audience you intended
- Final proof or test runs inside Zoho before the list send
- Images, links, and preheader look right in Zoho's preview
How this differs from the file export guide
| This page (Zoho) | File export guide | |
|---|---|---|
| Handoff | OAuth connect + draft push | File export → import in the ESP |
| ESP send | Still in Zoho Campaigns | Still in your ESP |
| Push status | Zoho Campaigns live for draft push | File import for other ESPs |
The idea's the same in both: finish the design in the studio, hand over export-ready HTML (as a file or a Zoho draft) and send from your ESP.
FAQ
Where does the campaign go after I push?
Milo creates or replaces a draft campaign in Zoho Campaigns, and you review and send it from Zoho.
Is this Zoho Mail?
No. Milo connects to Zoho Campaigns only.
What does connect allow?
Broadly, it lets Milo create and delete campaigns, and read contacts so your audiences can be listed for the draft. The connection's credentials stay on Milo's side and never go into the email itself.
Can I push to other ESPs, like Mailchimp, the same way today?
Not today. Only Zoho Campaigns gets draft push. For Mailchimp and other ESPs, export HTML or MJML and import the file.
What if I edit the email after a push?
Use Re-upload. Milo deletes the draft it created before and makes a new one with the updated HTML.
Do I still need unsubscribe tags?
Yes. Use Zoho's own tags, such as $[LI:UNSUBSCRIBE]$ (and $[LI:ORG_OPTOUT]$ if that suits your compliance setup), before you push.
Who can connect versus who can push?
Org admins connect and disconnect. Anyone in the workspace can push to a connected integration.
Design in Milo, connect Zoho
Once Zoho Campaigns is connected, finish the email on the canvas, send a Test if you want a proof, then push an export-ready draft to Zoho, or download HTML or MJML. You send from Zoho. For importing a file into other ESPs, use the file export guide. You can start on Milo whenever you're ready.