Personalization
Flomailr personalizes at send time, once per recipient. Merge tags insert a contact's details into the subject line and body. Conditional blocks show or hide a whole block depending on who is receiving the email.
Merge tags
There are four tags. Write them with double braces and no spaces inside.
| Tag | Inserts | Empty when |
|---|---|---|
{{firstName}} | First name | The contact has no first name |
{{lastName}} | Last name | The contact has no last name |
{{fullName}} | First and last name joined by a space | Both names are missing |
{{email}} | Email address | Never |
- Tags are not case sensitive.
{{FirstName}}works. - In the builder, use the Personalize menu next to Subject line, or the
{ }button in the text toolbar. Both insert the tag for you. - Values are HTML-escaped in the body. In the subject, control characters are stripped.
- The plain-text version of a campaign gets the same substitution.
Empty and unknown tags
A known tag with no value becomes an empty string. Hi {{firstName}}, becomes Hi , for a contact with no first name. There is no fallback syntax, so write copy that reads without the name, or use a conditional block (below).
Anything else is sent exactly as typed. That covers a misspelled tag such as {{firstname2}}, a tag with spaces such as {{ firstName }}, and single braces such as {firstName}. The Preflight panel in the builder warns about unknown tags and single-brace tags before you send.
Where tags are filled in
| Message | Tags filled in |
|---|---|
| Campaign sends, including scheduled and RSS | Yes |
| Emails sent by an automation | Yes |
| Test emails sent from the builder | No |
send_email and POST /api/v1/send | No |
Test emails show tags as typed and include every conditional block. To see how a message resolves for a sample contact, use the preview_personalization tool (see MCP tools). For single sends, write the final text yourself.
Conditional content
Any block can carry a rule. Select the block and open Show to in the inspector, then turn on Only some contacts. Flomailr removes the block from the document before rendering, so each recipient gets an email that contains only their blocks. This works for blocks inside columns and sections too.
A rule tests one field with one condition:
| Field | Conditions |
|---|---|
| Email, First name, Last name | is exactly, is not, contains, does not contain, is set, is empty |
- Comparison ignores case and surrounding spaces.
- Only these three fields can be tested. Contact tags, list membership and custom fields cannot.
- A rule with a condition that needs a value but has none is ignored, and everyone sees the block. An unknown or half-written rule also resolves to visible, because hiding content silently is harder to notice than showing too much.
- A campaign with no rules renders once for the whole list. Only campaigns that use rules are rendered per recipient. Automation emails apply rules the same way.
A common use: one heading shown when First name is set, and a second heading shown when First name is empty.
Custom fields
Custom contact fields (Settings > Workspace > Custom contact fields) are stored on the contact, can be imported and exported, and can drive segments. They are not merge tags, and a rule cannot test them. To send different content to different groups, build a segment and send to it.
See also Campaigns and Automations.