Home › Blog › Free Cold Email Merge Tag Checker: Find Broken Variables Before Sending
Nothing kills a cold email faster than 'Hey {{first_name}},' landing in a prospect's inbox. The prospect learns you mail merged them AND that you did it carelessly, in the first four words. Broken merge tags come from five specific mismatches between your sequence and your CSV, and every one of them is checkable before you hit launch. Here is where they hide and the free tool that catches them per row.

Merge tags break in five specific ways: the variable has no matching CSV column (typo or missing field), the names match loosely but not exactly (casing, spaces, underscores), the column exists but rows are blank and there is no fallback, the fallback exists but reads wrong in the sentence, and the syntax belongs to a different platform and renders literally. Our free Pre-Send Checker cross-checks every variable in your sequence against your actual CSV, per row, in your browser.
An email in spam was never seen; an email that opens with "Hey {{first_name}}," was seen and judged. The prospect now knows three things: you are running automation, your automation is broken, and you did not check. For a first touch that was supposed to demonstrate you did your homework, that is the maximum-damage outcome. And unlike deliverability problems, this one offers no partial credit: the copy can be brilliant, the offer can be perfect, and none of it survives a broken first line. The bitter part is that every one of these failures is deterministic. The data is in your CSV, the variables are in your sequence, and comparing the two is mechanical work a tool does in one pass.
1. EXTRACT List every {{variable}} in every step
of the sequence (follow-ups too, step 3
breaks as easily as step 1)
2. MATCH Each variable -> exact CSV column name
character-for-character, casing included
3. COUNT Blank cells per matched column
blanks > 0 and no fallback = blocker
4. RENDER Read each sentence with (a) real data,
(b) every fallback fired
both must read naturallyDoing this manually across a 4-step sequence and a 3,000-row CSV is 20 minutes of squinting at spreadsheets, which is why nobody does it consistently. The Pre-Send Checker does the extract, match, and count steps automatically: upload the CSV, paste the sequence with steps separated by ---, and it reports every variable with its column status, blank count, and fallback coverage, plus the list-quality, spintax, and volume checks in the same pass. Everything runs in your browser; the list never uploads.
Because most sequencers match variable names exactly, and 'exactly' includes casing, spaces, and underscores. {{firstName}} does not match a column named first_name, First Name, or firstname in every platform; some normalize, some do not, and the failure mode is silent: the tag renders literally or as a blank. The other silent killer is blank cells: the column exists, the tag matches, but 400 of your 3,000 rows have no value, so 400 prospects get 'Hey ,' with a floating comma. A merge tag checker that only validates syntax misses this; it has to count blanks per column against your actual file.
A fallback is the default text used when a row's value is blank, written as {{firstName|there}} in most sequencers, so the render becomes 'Hey there,' instead of 'Hey ,'. It fires only on empty values, not on missing columns: if the column itself does not exist, many platforms render the literal tag text, fallback and all. So fallbacks protect against sparse data, not against typos in the variable name. You need both checks: does every variable have a matching column, and does every variable with blank values have a fallback.
Preview-a-few is exactly how broken sends happen. The first records in an export are usually the most complete ones, enrichment tools write their best data first and their failures last, so previewing rows 1 through 5 tells you nothing about rows 2,800 through 3,000 where the blanks cluster. Checking per row costs nothing when a tool does it: upload the CSV, paste the sequence, and get the exact count of rows that will render blank for each variable.
Syntax from the old platform sends as literal text on the new one. Mailchimp's *|FNAME|*, HubSpot-style percent tokens, and square-bracket placeholders like [firstname] all mean nothing to Instantly or Smartlead, which render {{doubleBrace}} syntax. This is one of the most common migration failures because the template looks personalized in the editor; nothing errors until a prospect receives the raw token. Scan for foreign syntax any time copy moves between tools.
Neither is acceptable, but they fail differently. A blank produces grammar damage ('Hey ,' or 'I saw is hiring') that reads as automation carelessness. A generic fallback keeps the grammar intact but can read strangely if the sentence depended on the value: 'I saw your work at your company' is grammatical and empty. The fix is writing sentences that survive their fallbacks: read every sentence twice, once with real data, once with every variable replaced by its fallback, and only ship lines that work both ways.
Prewarmed Inboxes So You Can Send Cold Emails Today
Get Prewarmed & Fresh InboxesGoogle, Microsoft 365 and Azure inboxes with free prewarmed domains and DNS configured before you log in. Prewarmed inboxes send the day they land; every order is delivered within 48 to 72 hours.
Get Prewarmed & Fresh Inboxes