1. Home
  2. Free tools
  3. Email deliverability tools
  4. Personalization line builder

Personalization line builder: a first line for every row, from rules and your CSV

In short: Builds a new column from up to five if-then rules and a default line: "if title contains founder", "if recent_post is filled", "if industry is SaaS". Each line uses {{column}} tags from your CSV, and a rule only fires when every field it uses has a value, so no row gets "Saw is hiring". Templates and rules, not AI. Limit: It doesn't research anything: the lines can only use what is already in the CSV.

Write up to five rules, such as "if recent_post is filled, write Enjoyed {{recent_post}}.", plus a default line, then upload your CSV and press Build lines. Each row gets the first rule whose condition holds and whose fields are all filled; the rest get the default. Download the CSV and map the new column to a custom variable.

Price: this tool is free. Checking a whole email list is from $9/mo, and the first 100 checks are free with Google, no card. See pricing

Rules, tried top to bottom

A rule writes its line only when its condition holds and every {{field}} in the line has a value in that row; otherwise the row moves on to the next rule. Use {{field|fallback}} for a field that may be blank.

1.
2.
3.
4.
5.
Runs in your browser. Nothing is uploaded.
Sample result from the Personalization line builder
Show the sample result as

Sample result

5 contacts, 5 lines: 3 from rules, 2 from the default, none with a blank field.

Lines
5 written
From rules
3
Default
2

What this means for you

Map the personalization column to a custom variable and every row opens with a line its data supports.

Next step:Check the list you're sending to
  • If-then rules per column
  • Skips lines with blank fields
  • Default line with fallbacks
  • Column for a custom variable
  • Personalisation
  • First lines
  • CSV

By SimpleVerifier Team · Last updated · Runs in your browser; nothing you paste is sent to us

Also in: Português (Brasil) · Español

How do I check the addresses before the sequence starts?

  1. Download the CSV with the new column here.
  2. Upload it at /verify. Every address gets a live mailbox check, and valid, risky and invalid download as separate files. The first 100 email checks are free with a Google sign-in, no card.
  3. Import the valid file into the sequencer with the personalization column mapped.
Check the list

How do I create a personalised first line column for a cold email list?

  1. Export the list with the columns your lines will use (company, title, city, a recent post, a trigger you researched).
  2. Write the rules from most specific to most general, and a default line with fallbacks like {{company|your team}}.
  3. Upload the CSV, press Build lines and read the lines per contact.
  4. Download the CSV and map the personalization column to a custom variable in Instantly, Smartlead or lemlist.

Example

You enter
5 contacts and three rules: if recent_post is filled, Enjoyed {{recent_post}}.; if title contains founder, ceo or owner, a founder line with {{company}}; if city is filled, a city line; default Hope the week at {{company|your team}} is going well.
You get
2 rows get the recent-post line, 1 the founder line and 2 the default; Sam's row skips the city line because company is blank and gets "Hope the week at your team is going well."
Limits
Runs in your browser with no row cap; an uploaded file can be up to 25 MB.

Why build lines from rules instead of one merge field?

Because one template can't fit a whole list. "Loved your post on {{recent_post}}" is the best opener for the 20% of rows that have a post and a broken sentence for the rest. Sequencers' own conditional blocks exist but differ per tool and are easy to get wrong in a live campaign. A pre-built column moves the logic into the CSV, where you can read every line before it is sent.

Rules also keep the copy honest. Each line says only what the row's data supports: a founder line for founder titles, a city line where the city is known, and a plain default where nothing specific is known, instead of an invented compliment.

How are the rules applied?

Top to bottom, first match wins. A rule has a column, a condition (is filled, contains any of a few comma-separated words, or is exactly one of them) and a line. Column names are matched loosely, so First Name, first_name and firstName are one column, the same way the mail merge field checker reads them.

Before a rule writes its line, every {{field}} in that line must have a real value in the row, not a blank or a placeholder like n/a; if not, the row moves on to the next rule, and the note column says which rule was skipped and why. A field with a fallback, {{company|your team}}, always counts as filled. The default line catches everything else; if it can't be filled either, the row is left empty and counted.

Who uses this tool, and for what?

Cold emailers
Turn researched columns (posts, hiring, funding, tech used) into one opener per row without blanks.
Agencies
Write segment-specific openers for a client's list and review every line before launch.
SDR teams
Give each persona its own opening line in a single campaign.
Founders
Personalise a small list properly without a paid enrichment or AI tool.

What can’t this tool tell you?

  • It doesn't research anything: the lines can only use what is already in the CSV.
  • Conditions are simple text matches; there are no numeric comparisons or AND/OR groups.
  • Five rules plus a default per run; build a second column in another pass for a second line.
  • It can't tell whether the email addresses on the list exist.

Common questions

Is this an AI first-line generator?
No. It writes only the lines you give it, filled from your own columns. That makes every line predictable and checkable; it also means the lines are as good as the rules and the research in your CSV.
How do I use the column in Instantly or Smartlead?
Import the CSV and map the column as a custom variable; then put {{personalization}} (or the name you chose) where the line goes. The merge tag converter rewrites the rest of the template for the tool you use.
Can I use spintax in a line?
Yes. Spintax like {Saw|Noticed} is copied into the line as written for the sequencer to spin; check it with the spintax checker.
Is my list uploaded?
No. It is read in your browser and nothing is sent anywhere.

A tidy list can still be full of dead addresses.

Extracting, deduplicating and syntax checks all work on the text of an address. None of them can tell whether the mailbox exists. Only the server that hosts it can answer that, through an SMTP check, and that is what the paid product does.

  • Upload the cleaned file as it is: CSVs up to 100,000 rows
  • A real SMTP mailbox check on every row, with catch-all detection
  • Small list? Starter at $9/mo covers 2,500 emails a month, cancel anytime

Plans from $9 a month, cancel anytime, no contract. Sign in with Google and your first 100 email checks are free, no card. The free tools stay free either way.

Clean your next list before it bounces

100 free email checks when you sign in with Google, no card. Then monthly plans from $9, or one flat price with fair use, never cut off.

100 free checks, no card Cancel anytime Secure payment by Stripe