CSV Merge Field Mapping for Cold Email, Done Right

How to design CSV columns that survive every sender — per-step body variables, fallback values, naming rules, and the mistakes that quietly break campaigns.

SS
SimpleSend Labs
Field notes from the research team
READ8 minWORDS1,280UPDATEDMay 31

If your CSV exports clean, stable headers, importing it into any sender is just field mapping. The convention is one column per step — like step_1_subject and step_1_body through step_N_subject and step_N_body — plus the basics like first_name and email. This guide shows the exact mapping for Smartlead, Instantly, Apollo, and HubSpot, one section each. Bookmark it for your next campaign.

First, understand the column layout

A personalized sequence CSV looks like this. Each row is one contact, and each step's subject and body live in their own columns, already written for that person.

emailfirst_namestep_1_subjectstep_1_bodystep_2_subject
theo@northwind.devTheoThe ingestion bug you postedTheo, saw your post about…Following up on the runbook

Because the writing is already done per row, your sending tool does not generate anything. It just inserts the right column into the right step. That is what the merge field does.

Smartlead

In Smartlead, create a new campaign and upload the CSV as your lead list. Any column beyond the standard ones is read as a custom variable automatically. When you build your sequence, add one email step per step in your CSV, and reference the matching columns with double curly braces.

  • Email 1 subject: {{step_1_subject}}
  • Email 1 body: {{step_1_body}}
  • Email 2 subject: {{step_2_subject}}, and so on.

Send a test to yourself first to confirm the variables resolve. If you see the raw {{step_1_body}} text in the test, the column name in your CSV does not match the variable exactly, so check casing and spelling.

Instantly

The flow in Instantly is nearly identical. Upload the CSV when creating a campaign, and Instantly maps known columns and keeps the rest as custom variables. During import you can confirm or adjust how each column maps. Build your sequence steps and drop the same variables in, using Instantly's variable syntax — again one step per pair of columns.

One tip: Instantly lets you preview a few contacts before launching. Use it. Scan three or four rows to make sure each contact's body matches their company, not someone else's, which catches any column misalignment instantly.

Apollo

In Apollo, import the CSV into a list, and the per-step columns come in as custom fields on each contact. When you build a sequence, reference those custom fields as variables in the subject and body of each step. Apollo's variable picker will show your imported fields, so you select step_1_subject for the first email's subject line and so on.

Since Apollo also bundles data and sending, this is a common path for teams already living in Apollo: enrich and source there, draft the emails elsewhere, then bring the finished copy back in as fields.

HubSpot

HubSpot treats the columns as contact properties rather than campaign variables, so there is one extra setup step. Before importing, create custom contact properties that match your column names, such as a single-line text property called step_1_subject. Then import the CSV and map each column to its property.

In a HubSpot sequence or marketing email, you reference these as personalization tokens. Insert the token for step_1_body into the first email, and HubSpot fills in each contact's stored value. The mapping is a little more manual than the dedicated senders, but it works the same way underneath.

A quick troubleshooting checklist

SymptomLikely causeFix
Raw {{step_1_body}} shows in the emailVariable name does not match the columnMatch casing and spelling exactly
Wrong contact's text appearsColumns shifted during importRe-import and verify the header row
A step is blankEmpty cell in that rowFilter for blanks before sending
Special characters look brokenEncoding mismatchSave and import the CSV as UTF-8
Where SimpleSend fits

SimpleSend exports exactly this CSV format, with stable headers like step_1_subject and step_1_body that map cleanly into every tool above. It writes the full personalized sequence per contact, then hands you the file ready to import, so the only work left is the field mapping in this guide. It stays out of the sending side on purpose, so you keep your domain reputation in the sender you trust.

Try it free and generate a CSV to map into your own setup. Walk through the full upload-to-send tutorial in how to personalize a 7-step sequence for 240 leads.

Frequently asked questions

How do I import a CSV into Smartlead with custom fields?
Create a campaign, upload the CSV as your lead list, and Smartlead reads any extra columns as custom variables. Reference them in your email steps with double curly braces, for example the step_1_body column inside the first email.
What are merge fields in cold email?
Merge fields are placeholders in an email that pull a value from each contact's row, written with double curly braces in most tools. They let one campaign send a different value to each recipient, such as a personalized subject or body for each step.
Can I use a personalized CSV in HubSpot for cold email?
Yes. Import the CSV as contact properties, then reference those properties as personalization tokens in a HubSpot sequence or email. Each contact receives the value stored in their own row.

Sending tools referenced: Smartlead, Instantly, Apollo, and HubSpot. Exact menu labels change as these tools update, so use this as a map rather than a literal click path.

If you'd rather not assemble the research, voice-matching, and QA layers yourself, SimpleSend does all three out of a CSV. Every contact gets fresh research, every draft is written in your voice from samples, and every email goes through the QA pass before it lands in your output file. Trial usage is included on the Free tier, no credit card.
TRY THE FRAMEWORK

Run your next 50 contacts through SimpleSend.

Drop a CSV, paste 1–3 of your past emails, and get a full 7-step sequence drafted row by row. Free tier, no card.

Start free ← Back to the blog
← All posts