Automate Milo email prep with Flows

Flows automate the repeat studio work: brand kit, due date, test send or Zoho push, now or on a schedule, with emails still in your workspace.

By Darryl Chapman

Updated : reframed around the drag-and-drop builder.

If you set up the same kind of email every week, Flows stops you doing it by hand. It's Milo Email Studio's node canvas for automating the studio work you repeat: create the draft from a starter, apply a brand kit, set a due date, send a test and push a Zoho Campaigns draft. Add an AI designer step if you want the blocks drafted too. Press Run now when you need it, or put the flow on a schedule so the draft is waiting for you. The emails land in your workspace, so you can still edit them, send a test and take export-ready HTML or MJML. It's for automating studio work, and your ESP still handles journeys like abandoned cart.

What Flows is (and who it's for)

A flow belongs to your organisation. It has a name, a set of steps (nodes) and the connections between them, and you build it on a canvas under Flows on the org dashboard. A blank flow starts with a single Run now node. Everyone in the workspace shares the same list of flows, and other organisations can't see them.

Flows is for marketers, founders and email teams who already design in Milo, using the AI designer, brand kits, Test emails, export or Zoho draft push, and who'd rather save a repeatable process than click through the same steps every time.

It's not a general replacement for Zapier or Make, and it's not an ESP journey builder. You'll find it on the dashboard if your workspace has it.

The nodes you can use today

There are twelve node types, counting the Run now start node. The add menu groups the rest into Values (Variable, Concatenate, Date, Shift date), Create (AI Designer, Create Draft, Get Email), Update (Apply brand kit, Set due date) and Deliver (Send test, Upload to connection). There's no delay, filter, webhook or send-campaign node. Schedules are a setting on the flow rather than a node, and file export happens on the email itself, not on this canvas.

NodeWhat it does
Run nowStart node. Press play (or stop) for a manual run. Not deletable.
VariableNamed text value you wire into another step's text field (prompt, campaign name, subject, send-test address, and so on).
ConcatenateJoins a first and second piece of text with an optional separator, for example a campaign name plus a date. Each part can be typed or wired in.
DateOutputs the moment the run starts, in the time zone you pick, as text in one of five formats (such as 2026-10-05 11:08 or 5 October 2026 at 11:08).
Shift dateTakes a start date (or now) and adds or removes years, months, days, and hours. Positive numbers add, negative numbers remove. Outputs the result in the format and time zone you pick.
AI DesignerModel select plus a "Describe the email" prompt. On run, it uses a connected email if one is wired in, otherwise creates a blank-canvas draft, then drafts on-brand blocks. A live design preview shows while it runs.
Create DraftCreates an email in the workspace with an optional name and starter: canvas, welcome, promo, newsletter, or event.
Get EmailPicks an email that already exists in the workspace. On run, Milo loads that email and hands it on. It does not create a new email.
Apply brand kitTakes an email in, stamps the brand kit you pick, and hands the same email on. A later edit still saves as a normal email update.
Set due dateTakes an email in, sets its due date from a typed date (2026-10-05 or 2026-10-05 11:08) or a wired Date or Shift date, and hands the same email on. The email then shows on the Planner and in the Agenda panel on Emails.
Send testTakes an email in and sends a proof to an address on your account. Milo sets the subject. This step has no audience, list, or segment.
Upload to connectionTakes an email in, picks a connected ESP account, audience, campaign name, subject, and from fields, then pushes an export-ready draft (same path as connect Zoho Campaigns).

A flow can have anywhere from 1 to 40 steps and up to 40 connections. There are three kinds of port: trigger (to chain steps together), text (to wire in values) and email (to pass an email from one step to the next). Ports only connect to the same kind, and loops aren't allowed.

How Run now works

Running a flow is one press, and you can see exactly where it's got to.

You build it once from the canvas menu, chaining steps through their trigger ports and wiring text or email ports wherever a step needs a value or an email. New flows come with Run now already in place.

Pressing play saves your latest changes, then runs the saved flow. It starts from any steps that have nothing triggering them and works forward from there. Each step shows whether it's running, finished, errored, skipped or cancelled, and the run badge tells you which step is in progress before switching to Run finished, or Run failed with the reason. You can press stop to cancel part-way through.

Pressing play on the canvas, using Run now on the flows list or in the editor, and running on a schedule all do the same thing: they run the saved flow the same way on the server. A flow only runs once at a time, and if it's already running, Milo tells you rather than starting a second copy. A schedule runs the flow every day, or on the days you choose, at a set time in the time zone you pick. There is no webhook trigger. Upload to connection always creates a draft, so the campaign itself goes out from your ESP.

Example path: Create Draft → AI designer → Upload to connection

Here's a weekend-sale flow. Once it's built, every run leaves an on-brand promo waiting for you in Zoho Campaigns as a draft:

  1. Create Draft with the Promo starter (you can name it, for example "Weekend sale").
  2. Wire that email into AI Designer and describe the email: who it's for, the offer and the tone. When it runs, the AI drafts on-brand blocks onto the canvas, just as it does everywhere else in the studio (see AI drafts and brand kits).
  3. Wire the email into Upload to connection. Choose your connected Zoho Campaigns account, the list or segment (and topic, if it's shown), the campaign name, subject, from name and from email. When it runs, Milo compiles the HTML and pushes a draft into that account.
  4. Press Run now on the start node and watch the statuses update.

Using a Variable: put a prompt, campaign name or send-test address you reuse into a Variable node, then wire it into the AI designer prompt, the upload subject or Send test. Next time, you change it once instead of editing every node.

Using dates: wire a Date node into Shift date set to +2 days, then into Set due date along with the new email. Every run gives the draft a due date two days out, so it shows up on the Planner by itself. A Concatenate node can join "Weekend sale" and the Date output into a campaign name for Upload to connection.

You can also start from an email that's already in the workspace. Get Email loads it, Apply brand kit applies a kit, Set due date can put it on the Planner, and the same email can then go to Send test and Upload to connection. Campaign status comes from your ESP once the email is exported.

For the details of connecting and pushing (OAuth, audience fields, re-uploading), see the Zoho Campaigns draft walkthrough.

You don't have to use Upload to connection at all. Stop after Create Draft or AI designer, open the email in Emails and finish it by hand: edit it, send a test or take export-ready HTML or MJML.

After the flow: edit, Test, export-ready

Emails a flow creates show up in your org's Emails list, and they stay there even if you delete the flow later.

Open any of them to polish the blocks, share a preview link for sign-off, or download export-ready HTML or MJML for your ESP. The file export steps are in the ESP export guide. You can also apply a brand kit or send a test from the email itself.

Preview links and file export aren't flow nodes. Send test and Apply brand kit can run in a flow, and you can still do both from the email. If you used Upload to connection, review the draft in Zoho and finish the campaign there.

Flows vs ESP automation

Flows (Milo)ESP automation
In-studio nodes on a canvas; Run nowCart recovery, welcome series, and similar journey triggers
Create Draft, Get Email, AI designer, Apply brand kit, Set due date, Send test, draft pushWhen/who logic and list send in Zoho, Mailchimp and other ESPs
Design-then-handoff processRecovery and onboarding sends

Use Flows to get the email ready: create the draft, describe it to the AI designer, then push an export-ready Zoho draft or open the email to export the file. Use your ESP for abandoned-cart journeys, welcome series and the moment your list actually receives the campaign. Flows isn't a cart-recovery builder.

For the bigger picture on studio versus ESP editor, see design then export versus build in your ESP.

FAQ

Does Upload to connection send my list?

Upload to connection creates a draft in your connected account (Zoho Campaigns for now, the same way as in the Zoho export read). You check the audience, subject and HTML there, then send or schedule it from your ESP.

Is Flows a Zapier replacement?

No. Flows runs Milo's own studio steps, like creating a draft, describing it to the AI designer and pushing a draft to a connected account. It isn't trying to be a general automation platform like Zapier or Make.

Can I schedule a flow?

Yes. On the flows list and in the flow editor, turn Schedule on, then choose daily or weekly (pick the days, Monday first), a time, and a time zone. Each time zone shows its UTC offset, and you can see when the next run is due. While the schedule's off, its settings are locked and keep the last cadence you saved. Upload to connection creates a draft, and you send the campaign from your ESP.

Which node types exist?

Run now, Variable, Concatenate, Date, Shift date, AI Designer, Create Draft, Get Email, Apply brand kit, Set due date, Send test and Upload to connection. File export isn't a node. Campaign status comes from your connected ESP, not from a flow step.

Can a flow set a due date?

Yes. Set due date takes an email and a date, either typed in or wired from Date or Shift date, and saves it on the email. The email then shows up on the Planner and in the Agenda, where you can still drag it to another day.

What if I delete a flow?

Any emails the flow already created stay in Emails, and you can still open them to edit, test, export or push.

Who can see Flows?

Flows belong to the organisation. Everyone in the same Clerk organisation can see, open, rename, save and remove them, and other organisations can't see them at all. You'll find them under Flows on the org dashboard if your workspace has the tab. Free includes 1 flow, and Pro and Team include 5 each.

Try a short flow

Start with the email you rebuild most often. Create Draft → AI designer → Upload to connection makes a good first flow (or stop after the design step and take export-ready HTML or MJML). Press Run now, then open the email in Emails if you want another pass on the canvas.

You can start on Milo, or go straight to connect Zoho and push a draft if you already know how you want to hand off. For the rest of the studio, see introducing Milo.

Try it on your next email

Describe the email to Milo's AI designer, tweak the blocks on the canvas and send yourself a test. Then export HTML or MJML, or push a draft to Zoho Campaigns.