Four email templates that drifted apart — and the one setting that merges them
Welcome free. Welcome pro. Welcome with a coupon. Welcome back.
Four templates that started identical. Then somebody fixed a typo in one of them.
That is how templates drift — quietly, and only in three of the four. So let’s put them back together, into one.
The panel nobody opens
Open the template, click any block, and scroll the configuration panel all the way down. Past the colours, past the padding, to the thing most people never open: Visibility.
Two fields and a list.
- Variable name — “The template variable to check.”
- Condition — Is not empty, Is empty, Equals, Not equals, Contains.
Five operators. That is all of them. The last three reveal a Value field to compare against; the first two don’t need one.
One rule, two things change
Take the Upgrade button and give it a rule: variable plan, condition Equals, value free.
The panel header was grey and said Visibility. Now it’s blue and says Conditional visibility. And up on the canvas the block picks up a badge: if plan.
Note what the badge shows. The variable, not the rule — so at a glance you can see which blocks in a template are conditional, and on what.
Two more and you’re done. The roadmap link gets plan Equals pro. The coupon banner gets coupon_code Is not empty — because you don’t care what the code is, only whether there is one.
Three blocks. Three rules. One template.
Watch it built
The panel, the rules, both traps and two sends — in three minutes:
It removes the block. It does not hide it.
This distinction is the whole reason conditional blocks are worth using. Hiding leaves a hole — an empty row, a gap where the button used to be, the tell-tale sign of an email assembled by a machine that didn’t quite finish.
When you set a rule, FlowMattic wraps that block in a pair of invisible markers, and those markers carry a condition:
<!-- invisible marker block -->
{% if plan == "free" %}
<!-- your button, untouched -->
{% endif %}
<!-- invisible marker block -->Is empty writes {% unless %}. The other four write {% if %}. And at send time the whole block between the markers is either kept, or removed from the email completely.
Two things that will catch you out
1. The comparison is exact
Pro with a capital P is not pro. Spaces around the value are trimmed; the letters are not touched. Whatever your workflow sends, match it character for character.
This one is nasty because nothing errors. The block is simply removed, on every single send, until somebody notices the email is missing a button.
2. One condition per block
There is no and. There is no second rule underneath the first. A block carries exactly one condition.
And the answer is not to nest blocks inside blocks and hope the two rules resolve in the right order. It is to decide upstream: work out the one thing you are actually asking, earlier in the workflow, and send it in as a single variable.
show_upgrade Equals yesOne variable, one rule, done — and the logic now lives somewhere you can test it.
Two sends, two emails
Same workflow. Same template.
- Amelia is on free, with a coupon → upgrade button in, coupon banner in, roadmap link gone.
- Priya is on pro, no coupon → roadmap link in, the other two gone.
Two emails. Neither one has a gap in it.
And there is still only one template to fix when you find the next typo. Which was the whole point.
New to FlowMattic? It’s the AI-native automation platform for WordPress — visual workflows, 800+ integrations, AI agents and a full builder suite, self-hosted inside your own dashboard. Get FlowMattic.
