Rebuilding a branded email section by section in HubSpot's drag-and-drop editor is slow, and the brand tends to drift on the way. You can import custom HTML into HubSpot instead. Design and proof the email in Milo Email Studio's drag-and-drop editor, download export-ready HTML, then bring it into HubSpot with Upload design (recreate into the drag-and-drop editor) or a custom coded HTML + HubL template in Design Manager. Add HubSpot's unsubscribe and personalisation tags, then finish the campaign in HubSpot.
This is the HubSpot version of export HTML or MJML for your ESP. If you're on Zoho Campaigns, you can connect and push a draft instead of handing over a file. There is no Milo HubSpot connector today. HubSpot works from the file.
Same studio loop, HubSpot-specific handoff
You get the layout, brand and proof right in Milo, then import and send in HubSpot. The Milo side is the same as for any ESP: the AI designer drafts on-brand blocks from your description, you edit them on the brand-kit canvas and check a Test, and you leave with export-ready HTML (or MJML if your own pipeline needs it). HubSpot then takes that file in one of two official ways.
| ESP path | Milo handoff |
|---|---|
| Other ESPs | File HTML/MJML → ESP import (file companion) |
| Zoho Campaigns | OAuth → push a draft (Zoho guide) |
| HubSpot | File HTML → Upload design or a coded Design Manager template (this page) |
For when a studio beats rebuilding in the ESP's editor, see design then export vs build in your ESP.
Design the email in Milo
This is where the time goes back in your pocket: the brand, the copy and the sign-off are settled before HubSpot sees a line of HTML. Here's the short version. The other guides go into more detail.
A head start, not a blank table. Start from Promo (one offer, one main CTA), or Welcome, Newsletter, Event or blank. Or describe the email and the AI designer drafts blocks onto the canvas. The AI email designer guide has the full story.
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 before import. Rewrite the copy, move blocks around, and share a preview link if someone needs to sign it off. A Test goes to an address on your account, with a subject that starts with Test. It's just a proof for you, so your list never sees it.
The file HubSpot expects. When the proof looks right, export HTML from Share. Both of HubSpot's documented routes, Upload design and coded templates, expect HTML. Only export MJML if your own pipeline compiles it to HTML first.
Two HubSpot paths for external HTML
HubSpot has two official ways to bring in HTML you've designed elsewhere, and they work quite differently. HubSpot's labels and menus do move around, so check the linked help articles before you rely on them.
Path A: Upload design (into the drag-and-drop editor)
Who it's for: marketers who want an editable drag-and-drop email in HubSpot without having to maintain HubL by hand.
Plan and access (according to HubSpot): Marketing Hub Professional or Enterprise, permission to edit marketing emails, and generative AI tools switched on in AI settings. See HubSpot's guide to uploading external email templates using AI (it was last updated around late September 2026 when we checked).
High-level steps (UI labels may change):
Create the email
In HubSpot, go to Marketing → Email → Create email, choose Regular or Automated, then Upload design.
Provide the HTML
Upload a .html file or paste in the HTML. Name the design and check the preview.
Generate design
Choose Generate design, and generate again if you like. Then Create a template to save it, or open the result in the email editor.
Limits to know about (from that HubSpot article, so double-check before relying on them):
- Up to 100 email templates per month via this upload path
- Images must be publicly accessible
- Generated emails use HubSpot's default email footer for CAN-SPAM
- Designs wider than 600px are not supported for recreate
- Custom fonts, background colour gradients, overlapping elements (for example text over imagery), rounded corners / border colours on modules, and some social modules (for example Pinterest / Snapchat) are listed as unsupported for recreate into drag-and-drop
Upload design recreates your layout in HubSpot's editor, so don't expect an exact copy of your code. And just to be clear, the generative AI HubSpot uses here is HubSpot's own, not Milo's AI designer.
Path B: Custom coded template (HTML + HubL)
Who it's for: teams that want full control over the code and reusable email templates in Design Manager.
Plan and access (according to HubSpot): Marketing Hub Professional or Enterprise, plus Design tools permission. See Build a custom coded template and HubSpot's email template markup docs.
High-level steps (UI labels may change):
Open Design Manager
Go to Content → Design Manager.
New HTML + HubL email template
Go to File → New file → HTML + HubL, set the template type to Email, then paste in or adapt your export-ready HTML.
Add required HubL and publish
Add the CAN-SPAM and preview text tags HubSpot requires (listed below), publish the template, then create a marketing email from it under Marketing → Email.
HubL you'll need in a coded email template (for HubSpot's CAN-SPAM requirements):
- Company name / address variables via
site_settings.company_*(as documented in the coded-template article) {{ unsubscribe_link }}and{{ unsubscribe_link_all }}- Preview text via HubSpot's required
{% text "preview_text" ... %}pattern
Personalisation example in a coded template: {{ contact.firstname }}. See HubSpot's help on personalization tokens (updated around early October 2026 when we checked).
HubSpot also supports programmable HubL modules and templates for more advanced, CRM-driven content. That's beyond this guide, but see Create programmable emails if you need it. Template settings such as V3 rendering flags can change, so follow HubSpot's current docs.
Before you send from HubSpot
- Unsubscribe / preference links and company footer match what HubSpot expects for your path (default footer after Upload design, or HubL vars on a coded template)
- Images are absolute https URLs or otherwise publicly reachable for Upload design
- Links and CTA URLs are correct
- Personalisation tokens use HubSpot shape where you need them, with sensible defaults
- Preview as a contact and run a HubSpot test send before the list
- Confirm tracking and compliance on HubSpot's own send checklist
It's worth a quick layout check too: width around 600px if you're using Upload design, the offer in text (not just in a banner), and the usual email client quirks. See the HTML email checklist.
How this differs from other ESPs and Zoho
| This page (HubSpot) | Other ESPs (file) | Zoho Campaigns | |
|---|---|---|---|
| Handoff | File HTML → Upload design or coded template | File HTML/MJML → ESP import | OAuth → draft push |
| First-party import styles | Two (AI Upload design + coded HubL) | Custom HTML / paste / ZIP per ESP | Push creates the draft |
| Milo connector | None today | File handoff (HTML or MJML) | Zoho Campaigns live for draft push |
The idea's the same for all three: finish the design in the studio, hand over export-ready HTML (as a file or a Zoho draft) and send from your ESP.
Other ESPs
You can take the same export-ready HTML file into Salesforce Account Engagement (Pardot) or any other ESP that accepts custom HTML. Finish the design and export in Milo, then follow that ESP's own import guide.
FAQ
Does Milo connect to HubSpot or push a draft?
Not yet. For HubSpot, you export the file. Zoho Campaigns is the integration that supports connecting and pushing a draft. See design and push a Zoho Campaigns draft.
Upload design or coded template: which should I pick?
Choose Upload design if you want to keep editing in HubSpot's drag-and-drop editor and can live with its limits (width, fonts, gradients and so on). Choose a custom coded HTML + HubL template if you want control over the code, reusable Design Manager templates, and your own HubL for unsubscribe, company details and personalisation.
Do I need Marketing Hub Professional or Enterprise?
For both Upload design and custom email templates in Design Manager, HubSpot's docs say you need Marketing Hub Professional or Enterprise (plus the right permissions). Check HubSpot's current help and pricing to be sure.
Should I export HTML or MJML for HubSpot?
Export HTML for both of HubSpot's documented routes. Only use MJML if your team compiles it to HTML before import.
Will my custom fonts survive Upload design?
Often not. HubSpot lists custom fonts (and several other layout features) as unsupported when recreating in the drag-and-drop editor. If your fonts aren't negotiable, go for the coded route, or redesign with fonts HubSpot supports.
Does designing outside HubSpot mean I send from the studio?
No. You design, test and export in Milo, then import the HTML into HubSpot, choose your recipients and send from there.
Design in Milo, import in HubSpot
HubSpot keeps the list, the tracking and the send, and you stop rebuilding the design in its editor. Get the email right in Milo, then import the HTML with Upload design or Design Manager. For other ESPs, use the file export guide, and for a connected draft push, see Zoho Campaigns. You can start on Milo whenever you're ready.