A visual automation builder that doesn't lie about what it runs
Most "workflow" builders are linear drips in a trenchcoat. FlowingMail ships a proper canvas: triggers, branches, delays, filters, parallel paths, and send actions that bind to whichever email provider you've connected - with flat startup-friendly pricing and a generous free tier.
What 'workflow' should actually mean
A node that does exactly one thing. Clear edges between them. No hidden state. No surprises at runtime. Event-driven email automation for developers - the way your codebase works, not the way marketing dashboards work.
- Canvas-based automation builder with true branches and merges
- Every node is inspectable - see what data flows in/out, in real time
- Hot-reloadable: edit a live flow without halting in-flight contacts
- Version history and one-click rollback - treat flows like code
- Generous free tier - 5 flows, 25,000 contacts, no credit card
- Runs on your own provider (SES / Resend / SendGrid / Mailgun / SMTP) with flat pricing
Every node type you need
Five primitives compose into every real-world email flow.
Triggers
Contact Created, Added to Group, REST/Webhook event, Schedule, Cron, Contact Attribute Changed.
Conditions (branches)
If/else on any attribute, group membership, engagement signal, or custom event property.
Delays
Relative (2 days later), absolute (next Monday 9am local), and send-window constraints.
Filters
Narrow the working set mid-flow - continue only for contacts who clicked, or who never opened, etc.
Actions (sends)
Send email (any provider), add/remove from group, set attribute, fire a webhook, or exit the flow.
Merges & parallel paths
Multiple triggers feeding one flow, parallel branches re-converging - model real funnels, not straight lines.
Building your first workflow
Pick a starting template
Welcome series, trial nudge, abandoned-cart, win-back, or blank canvas.
Wire the nodes
Drag nodes in, connect edges, configure each one in the side panel.
Dry-run & activate
Step through with a test contact, confirm every branch, then flip activation on.
Trigger workflows from your code
Every flow is addressable by its flw_xxx ID and triggered via a single REST call - regardless of the underlying email provider.
# $FLOW_ID is the flw_xxx ID from the dashboard.
curl -X POST "https://api.flowingmail.com/v1/flows/$FLOW_ID/trigger" \
-H "Authorization: Bearer $FLOWINGMAIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contactId": "cnt_abc123",
"variables": { "plan": "pro" }
}'Email workflows - FAQ
A campaign is a one-off broadcast sent at a scheduled time. A workflow is an always-on, contact-triggered sequence - a welcome series, a trial nudge, a re-engagement drip. FlowingMail supports both side-by-side.
Yes. Flows can have multiple trigger nodes (e.g. Contact Created + Added to 'Newsletter' group), which merge into the same canvas. Each trigger is evaluated independently.
New contacts enter the updated version. Contacts currently in the flow finish on the version they started on unless you force a migration. Every change is versioned - you can roll back with one click.
Yes. Provider webhooks populate engagement attributes (last_open_at, clicked_campaign) in real-time, which you can branch on. You can also wait-for-event nodes - e.g. 'wait up to 3 days for a click'.
Yes. A single workflow can have send-actions bound to different providers - e.g. trigger onboarding via Resend, while the 'paid plan welcome' action sends through SES. Useful for isolating marketing vs transactional traffic.
Use Dry-Run mode. Step through the flow node-by-node with a test contact, inspect the data at each step, and confirm branching logic before activating.
Explore more
Broader platform overview - triggers, delivery, and pricing.
A deep dive into the canvas UI that powers every flow.
A 6-step onboarding workflow, node by node.
A canonical 5-step welcome workflow you can clone.
Single-send workflows for receipts and notifications.
Campaign-style workflows for weekly/monthly newsletters.