Design and proof the email in a studio, then export HTML or MJML ready for import into Klaviyo or Mailchimp. In Milo Email Studio, you build the email from drag-and-drop blocks styled by your brand kit (the AI designer can draft a first pass), send a Test and export. Klaviyo or Mailchimp then takes it from there.
On Zoho Campaigns? You can connect with OAuth and push an export-ready draft instead of handing over a file. That's covered in design and push a Zoho Campaigns draft. This guide sticks to the file route for Klaviyo and Mailchimp. On HubSpot? See how to import custom HTML into HubSpot.
Why design outside the ESP, then export?
ESP builders sit right next to the list, the merge tags and the send button. That's fine when the layout's simple and one person owns the campaign.
A studio is where you get the brand right and get sign-off. You finish the layout and copy, share a proof, send yourself a test, then give the ESP a file. No rebuilding every section in a fiddly drag-and-drop editor, and no waiting for a developer to hand-code the HTML.
Design and export happen in the studio, and the list and the send stay in the ESP. For when each approach makes sense, see design then export vs build in your ESP.
What you'll need
- A brand kit, or the colours, fonts, and button styles you want new blocks to pick up
- Access to Mailchimp or Klaviyo (Mailchimp custom HTML templates typically need a Standard plan or higher. Confirm on their help and pricing, because that can change)
- A few minutes to add that ESP's unsubscribe and personalisation tags after import
You don't need a developer for the studio side. The ESPs' own docs still class custom HTML as an advanced feature, though, so after import you'll be pasting or uploading code rather than dragging blocks around.
Design the email in Milo
This walkthrough uses the Promo starter: one offer and one main CTA. Welcome, Newsletter, Event and blank all work the same way.
Start from AI designer or a starter
You don't start from an empty table layout. Pick Promo, or describe the email (who it's for, the offer, the CTA) and Milo drafts blocks onto the canvas, for example a weekend sale with one shop button in your brand colour.
Then rewrite the copy, keeping to one clear offer and one button.
Apply the brand kit
Your palette, fonts and buttons live in the brand kit, so new blocks arrive on-brand and you don't redo the styling in the ESP. When the colours need to change, change the kit. The words stay on the canvas.
Edit blocks on the canvas
Rewriting or moving a block takes seconds, and because colour and type stay with the kit, the email looks the same from one campaign to the next.
Working with others? On Team, you can work on the same proof together, with names on the canvas, shared block selection, edits as they save and team chat beside the canvas. Or create a read-only preview link so someone can approve it without needing a seat in the studio.
Send a test (proof only)
Send a test to an address on your account. The subject starts with "Test". It's a proof of the draft for you to check, and your list never sees it.
Export HTML or MJML
When the proof looks right, export from Share.
When to choose HTML
Export HTML if you're importing through Mailchimp's or Klaviyo's custom HTML option. Most people should start here, because the ESP wants a compiled file, not a design canvas.
When to choose MJML
MJML is a markup language that compiles to responsive email HTML. Export MJML if your team keeps the shorter source under version control, or if a pipeline compiles it later.
If the ESP only takes HTML, export HTML from Milo, or compile the MJML to HTML before you import it. The inbox always gets HTML in the end. For more on the difference, see HTML vs MJML.
Import into Klaviyo
Klaviyo's steps and labels do change, so check its guide on how to import a custom HTML template before you rely on them.
Before you import
- Use a
.htmlfile - Include an unsubscribe link:
{% unsubscribe %}or{% unsubscribe_link %} - Remove tags from other ESPs; replace with Klaviyo personalisation (
{{ ... }}/{% ... %}) where needed - Images referenced by filename go in a ZIP (each 10 MB or smaller); Klaviyo hosts them and rewrites the references
- Treat this as a technical job. Klaviyo support won't open your HTML files
High-level steps
Open templates
Go to Content, then Templates, then the Email: saved tab.
Start import
Click Create, then Import email template. Name it, then upload Milo's HTML file or paste the code.
Add assets
If the HTML points to images by filename, add them as a ZIP. Images already on https URLs don't need it, and that includes the ones Milo hosts for you: starter images and anything in your Media library.
Finish
Click Import template. It appears in the Email: saved tab. Preview it in Klaviyo, then build the campaign and send it from Klaviyo.
Import into Mailchimp
Mailchimp's steps and labels change too, including the prompts for its new and legacy builders. Check its guides to Import a Custom HTML Template and Paste in HTML to Create an Email before you rely on them.
Before you import
- Custom HTML templates are an advanced feature; accounts typically need a Standard plan or higher (confirm on Mailchimp; may change)
- Include the
*|UNSUB|*merge tag (required) - Use UTF-8 encoding
- Prefer JPG, JPEG, PNG, or GIF; for paste-in-code, host images on a public URL or use Content Studio
- ZIP import (if you use it): under 1 MB, one HTML file, images in the root (not subfolders), simple filenames that match the HTML case-sensitively
Saved template path
Open email templates
Go to Campaigns, then Email templates.
Code your own
Choose Code your own, then Paste in code, Import HTML, or Import ZIP.
Save the design
Preview and test it in Mailchimp, then Save and Exit and name the design.
Send from Mailchimp
Use the saved template to create your campaign, then work through Mailchimp's send checklist.
For a one-off email: go to Campaigns, then Create, then Use HTML to code my own, then Paste in Code. Paste, save, carry on through the checklist and send from Mailchimp.
How do you export a Mailchimp campaign to HTML?
Mailchimp doesn't have an export button for a single campaign. It can export a saved custom-coded template as HTML, but drag-and-drop templates can't be exported. An account data export includes HTML for your regular emails in a ZIP.
If you need HTML you can reuse in any ESP, design the email in Milo instead. Export HTML or MJML from the studio, then import that file into Mailchimp. Already have campaign HTML from Mailchimp's own export? Import it into Milo as blocks and keep editing there. Here's what carries over when HTML becomes drag and drop.
Before you send from the ESP
- Unsubscribe tag for that ESP is present
- Images use absolute https URLs, or were uploaded with the template
- Links and CTA URLs are correct
- Preview text is set on purpose
- Personalisation / merge tags match that ESP
- Mobile preview inside the ESP looks right
- Final ESP test send goes to yourself before the list
It's worth a quick layout check too: width around 600px, the offer in text (not just in a banner), Outlook-safe buttons, dark mode and Gmail's clip. See the HTML email checklist.
Common mistakes
- Stopping at export. The file still needs importing into the ESP before you can send the campaign.
- Leaving another ESP's merge tags in the HTML.
- Missing the unsubscribe tag for the destination ESP.
- Relative image paths, or images that never uploaded with the template.
- Endlessly tweaking the branding inside the ESP instead of fixing it in the studio and re-exporting.
Questions
Where does the campaign go after export?
Your Test goes to an address on your account, with a subject that starts with "Test". Once you've imported the file into your ESP (or pushed a Zoho Campaigns draft), you send the campaign from there.
Do I need a developer to code my own email template?
Not for the studio side. You design on a canvas, export HTML or MJML and import it. The ESPs still call custom HTML "advanced" in their docs, so someone on the team should be comfortable pasting or uploading code and fixing tags.
Should I export HTML or MJML?
Export HTML for Mailchimp's and Klaviyo's custom HTML import. Export MJML if your team keeps MJML as the editable source and compiles it before upload. Most ESPs want HTML when you import.
Can I use one design for both Klaviyo and Mailchimp?
Yes. Export once, then import it into each ESP. Unsubscribe and personalisation tags are different in each, so adjust them before you send.
Will ESP merge tags still work after import?
Only the tags that ESP understands. Remove any tags from other platforms, and add the right unsubscribe and personalisation tags after import if the file hasn't already got them.
How do I share a proof before importing?
Create a read-only preview link for anyone who needs to approve it, or send yourself a test from the studio. Neither one goes to your list.