If your n8n workflow is producing JSON that ends up in a doc, a YouTube description, or an internal email, route it through the HTML node first. Same workflow, ten lines of template, one platform-appropriate output.
I've been running n8n in production for a year now — for editorial automation, internal ops, and the AI-assisted content pipelines I build for clients. About six months in, I hit the same problem on three different workflows: the output looked like garbage every time it left the platform.
JSON with literal \nsequences. Markdown that got mangled in Notion. Plain-text descriptions where every "smart quote" turned into ’. The fix turned out to be simpler than I expected, and it's been my default move ever since.
// HEADS UP
This post assumes you've already shipped at least one n8n workflow. If you haven't, start with the n8n getting-started guide and come back.
Most n8n workflows hand you data as JSON, which is great — until you need a human to read it. The default options are all bad in their own way:
JSON is a transport, not a presentation layer. Stop treating it like one.// THE THESIS
The HTML node in n8n is usually framed as "scrape a page" — but it's also a Handlebars-flavoured template renderer. You can pipe any upstream JSON into it and get formatted output the next node can consume. Here's the pattern I use:
// Handlebars template inside the HTML node {{#each items}} <h3>{{title}}</h3> <p>{{description}}</p> <a href="{{url}}">Read more →</a> {{/each}}
Set the node's output mode to HTML and the next node receives a clean, rendered string. From there I usually pipe it into one of four destinations:
Video descriptions with clean line breaks and chapter timestamps. Tags stripped, formatting kept.
Newsletter previews and transactional emails — formatting survives the round-trip.
Drop into rich-text fields and the formatting comes through cleanly.
Pipe straight into a draft post body — no Markdown round-trip.
\n sequences.Show up in destinations as text characters.’.| // DESTINATION | NATIVE FORMAT | HTML NODE FIT ★ | NOTES |
|---|---|---|---|
| YouTube | Plain text | STRONG | Line breaks survive |
| Gmail | HTML email | NATIVE | Pipes straight in |
| Notion | Markdown | SKIP | Use Markdown instead |
| Slack | Block Kit | SKIP | Block Kit is structured |
| WordPress | HTML | NATIVE | Drop into post body |
Yes — the HTML node is a core node, available in both. No plugin or community node required.
Absolutely. Drop your inline-CSS email template in directly. Pair it with the Gmail or SMTP node and you've got a workflow-driven newsletter.
Handlebars syntax handles {{#if}}, {{#each}}, and helpers. For anything beyond that, do the data work in a Code node first and keep the template dumb.
Try this on your next workflow. Drop an HTML node between your data-shaping nodes and your delivery node, give it 5 minutes of template-writing time, and watch the output quality jump.
// GROWTH SIGNAL · WEEKLY
SEO, AI automation, and the playbooks I actually run for clients. One email a week, no fluff.