Mail Merge Sent "Hi ," or "{{first_name}}"? How to Stop Blank Merge Fields
A mail merge sends "Hi ," when a row's cell is empty and the tag has no fallback, and sends the raw {{first_name}} when the tag doesn't match any column. Two more faults cause the rest: a junk value in the cell (n/a, null, #N/A), and a brace left open after an edit. Fix them in the file before you send: fill or drop the empty rows, make tag names match the column headers exactly, clear placeholder values, and add a fallback where your tool supports one.
The free mail merge field checker reads your template and CSV in the browser and lists every row that would render blank or with a placeholder, plus tags with no column and unclosed braces. Here's how each fault happens and how each tool handles it.
The four faults
| Fault | Template | Row | What the reader sees |
|---|---|---|---|
| Empty cell | Hi {{first_name}}, |
first_name is blank | Hi , |
| Name mismatch | Hi {{first_name}}, |
the column is firstName |
Hi {{first_name}}, or Hi ,, depending on the tool |
| Placeholder value | Loved what {{company}} is doing |
company is n/a |
Loved what n/a is doing |
| Unclosed brace | at {{company, |
any | at {{company, |
Placeholder values come from exports and formulas: n/a, null, none, unknown, test, -, 0, #N/A and #REF! from a lookup that failed, or a cell that still holds another tool's tag like [First Name]. The checker treats all of these as empty.
How the main tools match and fill tags
Instantly. Its variables article (read 2 November 2026) says: "The custom variable name must exactly match your column header in the original file", in answer to "Are variables case-sensitive?" It recommends previewing with "Load data for lead" before launch. The article doesn't document fallback text, so fill empty cells in the file or use spintax around them.
lemlist. Its format variables article (updated 4 August 2026) says "Your CSV column header must match the variable name exactly", gives the fallback format {{variable|fallback}} with the example {{firstName|there}}, and advises testing "with leads that have empty fields to verify fallbacks work."
Smartlead. Its liquid syntax article (modified 22 October 2026) shows a conditional fallback: {{#if first_name}} Hey {{first_name}}, {{else}} Hey there, {{/if}}, and says to "ensure variable names match your data fields exactly."
Mailchimp. Merge tags such as *|FNAME|* read audience fields. Mailchimp's default merge values let you set a "Default merge tag value" per field under Audience fields and merge tags, for every field except Email Address and physical Address. The default shows only in sent emails, not in the audience.
HubSpot. HubSpot's default values article (updated 10 September 2026) says "If no default value is set, the token will appear as blank for that contact," and that "personalization tokens in marketing emails must have a fallback value." Set global defaults under Settings > Marketing > Email > Personalization, or a fallback per token when you insert it. Sales templates and sequences have their own fallback field on each token.
Gmail mail merge add-ons (GMass, YAMM, Mailmeteor) read sheet column headers as tags, so the same rules apply: the header must match and the cell must hold a value. Our guide to verifying before a Gmail mail merge covers the sending side.
A pre-send check that catches the broken rows
A preview shows the lead you picked, which is usually a complete one. The broken rows are the ones you didn't open. So check the whole file:
- Paste the subject and body, with tags, and the CSV into the mail merge field checker. It matches tags to columns loosely (first_name, firstName and First Name are the same field), so you see the data problem even where your tool would be stricter. Then make the header exactly match the tag your tool uses.
- Read the tag list. A tag with no column is a typo or a column you forgot to export. Tags your tool fills itself, such as an unsubscribe link or sender signature, will show as having no column; that is expected.
- Fix or drop the rows listed. For first names, the first name cleaner fills and tidies the column (initials, ALL CAPS, emojis). For company names, fix the cell or drop the row; a fallback like "your company" in a compliment line reads worse than no email.
- Add fallbacks for the low-stakes slots, such as the greeting, in the syntax your tool supports. The checker counts
{{first_name|there}}and{{ first_name | default: "there" }}as filled, and shows the fallback in its preview. - Download the ready rows and send only those. The rows to fix come out in their own file, with the problem fields named.
The checker confirms a value is there, not that it is right. A wrong company name still renders. If the file came from several sources, our post on personalization at scale covers stale and misplaced fields.
Check the addresses in the same pass
Rows with empty name and company fields are often the weakest rows in a lead file: scraped, guessed or enriched from little data. Those are also the rows most likely to bounce. Once the merge fields are clean, upload the ready file on the verify page and send to the valid rows. Catch-all domains and Microsoft consumer mailboxes can't always be confirmed and come back risky; decide those by how much the lead is worth.
Where SimpleVerifier fits
The merge field checker is free and runs in your browser. For the mailbox check, the first 100 checks are free with a Google sign-in. Pro is $39 a month with the first 100,000 checks a month at full speed, then slower, never cut off. See pricing.
Common questions
Why did my mail merge send "Hi ,"?
The first name cell was empty for that row and the tag had no fallback, so it was replaced with nothing. Either fill the cell or add a fallback such as {{firstName|there}} in tools that support it.
Why did the email show {{first_name}} instead of the name?
The tag didn't match a column. In Instantly and lemlist, variable names are case-sensitive and must match the CSV header exactly, so {{first_name}} won't read a column called firstName. A brace left open, such as {{first_name}, is also sent as plain text.
How do I set a default value for an empty merge field?
It depends on the tool. lemlist uses {{variable|fallback}}. Smartlead's help shows an if/else block. Mailchimp sets a Default merge tag value per audience field. HubSpot sets global defaults in settings or a fallback per token, and requires one in marketing emails.
Is it better to use a fallback or fill the data?
Fill the data where you can, and use a fallback as a safety net. "Hi there" is fine; a fallback in a company or pain-point slot usually reads oddly, so drop or fix those rows instead.
Check your list before you send
Real mailbox checks over SMTP, and nothing is sent to the address. Sign in with Google and your first 100 email checks are free, no card. Plans for bigger lists are on the pricing page.