The interactive guide to B2B outreach›Appendices›Writing a cold email and its follow-ups

How to write a cold email and its follow-ups

One short first message, one single intent, and a reader who understands from the first lines why this message reached them. Then two to four follow-ups in the same thread. Subject line, variables and spintax come after that, and it is all on this page.

Think sequence, not email

A campaign is not one email, it is two to five messages: a first email, then follow-ups that go out in the same thread. Keeping that in mind changes everything that follows.

There are two reasons for it. The first is that emails have to be short, and a long message does not work. The second is that you need material left for the follow-ups: if you empty the bag in the first message, the second step has nothing to say.

In Emelia, the Pure Cold Email template, offered when you create a campaign, sets up exactly this structure: five emails in a row, with the delays already set. All that is left is the writing.

3 days5 days8 days20 to 25 daysEmail 1The problem, theoutcome, 1 questionFollow-up 1Shorter:a client caseFollow-up 2Another angle,another benefitFollow-up 3The break-upmessageFollow-up 4Optional:something newDelays count in sending days · follow-ups stay in the thread, empty subject = automatic “Re:”
A typical sequence: a first email, three follow-ups, and an optional fourth.

The subject line: three or four words

The job of a subject line is not to get a click, it is to make people want to read on. And above all not to disappoint: the text that follows has to deliver what the subject line implied.

On length, the scale is simple. Three or four words is great. Five or six, why not. Past seven words the line gets cut off on phones and replaced by an ellipsis, so there is no point writing it.

The first name variable in the subject line? Sure, if it fits inside those three or four words.

A word on a debate that has gone around a lot: the idea that the subject line drives the open rate. We do not really buy it. The gap between a good subject line and an average one is real, but it is too small to be the lever you spend your day on. If your open rate is low, look at deliverability instead.

The opening is about the prospect, not about you

Never start with "let me introduce myself, I am so-and-so from such-and-such company". The principle to keep in mind is no duplicated information: your signature already carries your name, your company and your job title. Repeating it in the opening burns the only seconds of attention you will get.

Those lines have to be about the person. Reading them, they should know why this message reached them: their role, their situation, a problem their job inevitably brings. Raising an issue they recognize is worth more than any polite formula.

This is also where the icebreaker goes, the personalized line that breaks the ice. A few years ago we wrote them by hand, one per prospect. Today an AI can write it from the person's website or profile: the full method is in Generating personalized messages from a CSV.

Sell the outcome, not the product

This is the most widespread marketing mistake, and it does not come from beginners: plenty of founders describe exactly what they do, instead of saying what it changes.

At Emelia, we do not say we sell outreach software that does cold emailing. We sell what it brings: time saved, a lower acquisition cost, meetings, prospects, customers. The product is the means, the outcome is the argument.

And be clear. Write it straight, then have someone read it back with a single question: do you understand what I am selling? We see a lot of emails where the offer is impossible to work out. A reader who has to ask never replies.

Length, and the weight of the value proposition

A real example, received not long ago. A very short cold email, no personalization, nothing. But what it was selling was clear, obvious, and it interested us. In the signature, a link to a LinkedIn profile, a serious one. Trust granted, reply sent.

What made the difference was not the copywriting: it was that he offered something nobody had ever offered us. An original value proposition does very well without ornaments.

The reverse is true too, and that is the bad news. If you sell what thousands of others sell by cold email, SEO or website building for example, copywriting becomes even more decisive, and even harder. At that point it plays out as much in targeting and personalization as in the wording.

One call to action, and only one

Your email must have one objective, and one only. Either the person replies, or they click a link, or they book a slot in your calendar. Not all three.

The best objective, by far, is the reply. Asking someone to book a meeting or to buy without having exchanged a word is treating them like a robot. Get them to reply, reply in turn, and that is when you share your calendar link.

It gets more nuanced over time: if there is still no reply by the third or fourth message, a direct calendar link is defensible.

✦ A question that takes one line to answer

Your question is your call to action. If answering it means looking up a figure or digging out a file, the person puts it off and never comes back to it. Aim for a reply someone can type on their phone, between two meetings.

Two ingredients to add if you have room

The risk reducer. This is about countering your prospect's objection before they even put it into words. If what you sell looks expensive but you are paid on results, say so. If your offer looks like work for the client, say it is turnkey and takes thirty minutes. If your software looks complicated, say it is simple.

A concrete example, seen from the other side: we regularly get emails about the innovation tax credit. Every time, the email gives the impression that it will take three days of paperwork. That is exactly why we never did it. "In thirty minutes, you could recover 22,700 euros" would have had a completely different effect.

The authority argument. The prestigious clients you have worked for, a mention in the press. It works, but it makes the email longer. The trick is to move it into the signature rather than the body: a line saying "see our feature on France 2" does the same job there without costing your pitch a sentence.

The format rules

An email that lands in the inbox is a light email. Whatever weighs it down costs you deliverability, however good the text.

What we recommend
  • A short message, in plain text, with no layout.
  • A single link in the body, in https, with no shortener.
  • The Unsubscribe link, inserted from the Add variable menu.
  • Your recipient's language.
What we advise against
  • An attachment: the editor lets you add one, but it is the worst enemy of deliverability. Link to the document instead.
  • A whole signature as an image: heavy, nothing in it is clickable, and it stays invisible while images are blocked.
  • Several links, or a URL shortener.
  • A message in English to a French prospect: that alone is a spam signal.

A first email skeleton

Here is the structure of a first email that applies everything above. Replace the brackets. Variables in double curly braces are filled in by Emelia when the email goes out, and {{signature}} inserts the signature of the sending mailbox (the Signature item in the Add variable menu).

First email : Read it on a phone before you save it: if you have to scroll, it is too long.

Subject: [three or four words about their topic] Hello {{firstName}}, [One sentence about their situation: their role, their industry, a problem they are bound to know.] [What you change for them, as an outcome: time, money, meetings. A figure if you have one.] [The risk reducer: paid on results, set up in thirty minutes, no commitment.] [One single question, answerable in one line?] {{signature}}

Writing the follow-ups

A campaign has between two and five steps. The editor only shows one at the start, but the total number is what you need in mind from the beginning, because it determines what you write in the first message.

Each follow-up goes out in the same thread as the first email: the prospect sees a conversation, not a new solicitation. Leave its subject line empty. Emelia reuses the previous email's subject with "Re:" in front, and the editor shows it greyed out in the Email subject field. The previous messages are quoted under the follow-up, as in a real conversation.

ℹ︎ No need for an "if the prospect replies" condition

By default, the campaign stops for a contact as soon as they reply, by email or on LinkedIn (the Condition to stop setting). Adding a reply condition after every email breaks nothing, but it does nothing either. See Handling replies after the launch.

What each follow-up says

The first follow-up is shorter than the first message. It is the right place for a link to a document or a use case, something you have already done for a comparable client.

The second brings extra value: one more feature, one more service, an angle the first message did not cover.

The third is the break-up message. It picks up elements from the first, and plays a little on the fact that there has been no reply. By that point three weeks have passed, and there is not much left to lose.

The fourth, if you send one, goes out twenty to twenty-five days after the break-up. You remind them you had already written, which is true and carries perfectly well, and you present something new to approach the prospect from another angle.

First follow-up : Subject left empty: the follow-up goes out as "Re:" in the same thread.

Hello {{firstName}}, Following up with a concrete example: [comparable client] got [result] in [timeframe]. The full case is here: [link] Would this be useful at {{companyName}}?

Break-up message : Short, honest, no blame: you close the door politely and leave the handle on.

Hello {{firstName}}, I have written a few times without hearing back, so I take it [the topic] is not a priority right now. I will not follow up again. If the question comes back on the table, just reply to this email. All the best,

The delays between messages

The Pure Cold Email template comes with its delays already set. On our own campaigns, we bring the break-up message a little closer. Both work; what does not work is following up every day.

StepDelay in the Pure Cold Email templateDelay on our campaigns
Email 1at launchat launch
Follow-up 13 days3 days
Follow-up 25 days5 days
Follow-up 3, the break-up10 days8 days
Follow-up 4, optional25 days20 to 25 days

Delays count in sending days, meaning the days ticked in the campaign's Time settings. With sending from Monday to Friday, a follow-up set to 3 days after an email sent on a Thursday goes out the following Tuesday. The delay is set on the link before each step, in minutes, hours or days; the first email always goes out at launch.

✕ Following up every day is pushy

Someone who gets three messages in a week from a stranger does not unsubscribe, they report you. And a spam report weighs far more on your domain's reputation than an unsubscribe.

Personalizing with variables

A variable inserts a piece of data specific to each contact into the message: their first name, their company, their job title, or any column of your file. It is written in double curly braces, with the field's technical name: {{firstName}} becomes "Julie" when the email goes out. It works in the subject line as well as the body, in email as well as on LinkedIn.

Do not type it by hand. In a step's editor, click Add variable, or type "/" in the text: the menu lists the items you can insert (signature, unsubscribe link, spintext), then every variable from the lists attached to the campaign. So attach your lead list before you write. One wrong capital letter is enough to empty a variable: {{firstname}} will never be filled in.

Email bodyHello{{firstName}},At{{companyName}}, you handle…{I am reaching out|I am writing} because…Tip: type “/” to open the same menuAdd variableINSERTSignatureUnsubscribe linkSpintextVARIABLESFirst NameCompany NameJob TitleCityNo contact has this variableFilled for 312/400 contacts
The Add variable menu. On hover, a variable shows how many contacts have it filled in; greyed out, no contact has it.

The most common variables

VariableWhat it inserts
{{firstName}}the first name
{{lastName}}the last name
{{jobTitle}}the job title
{{companyName}}the company name
{{websiteUrl}}the company website
{{industry}}the company's industry
{{city}}the contact's city

In the menu, these variables show their technical name in readable form: "First Name", "Company Name". It is the same name as the matching column in Lead Lists.

Your own variables, from your file

Any column of your file can become a variable: an icebreaker written for each contact, a product name, a figure. At import, map the column to a custom variable with Add Custom Variable, at the bottom of the field list. In a list you have already imported, hover over a column header and open the three dots to Add a column.

The variable takes the technical name you chose: a column named icebreaker is inserted with {{icebreaker}}. Stick to letters, digits and underscores.

Two traps. A header that looks like a standard field is mapped to that field automatically ("Sector" becomes the company's industry): for a real custom variable, pick a name that looks like no field, or fix the mapping by hand. And first and last names always go on the predefined fields, never in a custom variable: the LinkedIn steps need them.

When the data is missing

Before you write, check your variables' coverage: on hover, the menu shows how many contacts have them filled in ("Filled for 312/400 contacts"). Then you have three options, from the simplest to the finest:

  • Write a sentence that works without the data, and keep variables for fields that everyone has.
  • Complete or sort the list before launching: find the missing data, or move incomplete contacts to another list with another version of the message.
  • Branch the sequence: a Condition based on variables step with the is empty operator sends an email without the variable to some contacts and the personalized email to the others.
⚠︎ An empty variable leaves a hole

A missing first name produces a "Hello ," in the email that goes out, with no error and no warning. That is the kind of detail that ruins an entire campaign.

ℹ︎ Check contact by contact

A step's Preview shows the message with your contacts' real data, one at a time, and highlights variables with no value. The method is in Testing before you launch.

Varying the wording with spintax

Spintax makes the text vary from one email to the next: several options in curly braces, separated by a vertical bar, and Emelia picks one at random for each email. It works in the subject line as well as the body, in email as well as on LinkedIn. You insert it with Spintext, in the Add variable menu or by typing "/".

Two or three options are enough, on a few sentences. It is not an A/B test: it varies the text, it measures nothing.

A greeting that varies : The variable stays outside the curly braces.

{Hello|Hi} {{firstName}},

A whole sentence : The options sit right against the bar, with no space around it.

{I am reaching out|I am writing to you} because [reason].

Nested options : It works, but keep it readable.

{I {wanted|was hoping} to ask you a question|A quick question}

Spintax traps

Spintax never tells you when it breaks. These five traps are the ones we see in support:

  • A space around the bar ends up in the email: {Hello | Hi} gives a double space, or a sentence that starts with a space.
  • A variable stuck to a curly brace breaks both: in {Hello {{firstName}}|Hi {{firstName}}}, the last variable goes out empty and a brace stays in the text. Move the variable out of the spintax: {Hello|Hi} {{firstName}}.
  • Spintax in the first email's subject line: each follow-up reuses that subject as "Re:" and picks an option again, which may differ from the one the prospect received. Keep a fixed subject line.
  • Spintax in the unsubscribe link sentence: that link must work in every email, it is a legal obligation. Leave that sentence as it is inserted.
  • A single test to check everything: each test email picks only one option. Send two or three.
✕ The preview is not enough

The Preview can show a variable stuck to a curly brace correctly while the real send empties it. Only the test email goes through the same engine as the real send: send one before every launch.

Frequently asked questions

The questions we get asked on this topic, answered briefly.

How long should a cold email be?

Short enough to get straight to the point: an opening focused on the prospect, what you bring, and a single question. What does not fit that format is not lost: it feeds the follow-ups in the sequence.

How many follow-ups should I plan?

Two to four, so two to five messages in total. A short first follow-up three days later, a second one with another angle, then the break-up message. A fourth follow-up, several weeks later, is optional.

Should I fill in the subject line of follow-ups?

No. Left empty, the subject reuses the previous email's subject with "Re:" in front, and the follow-up stays in the same thread. If you write one, the thread is kept but without the "Re:".

Do you have to personalize every message?

It is better, but it is not the number one factor. A genuinely original value proposition does without personalization, and we experienced that ourselves by replying to a completely generic email. On the other hand, if you sell the same thing as hundreds of others, personalization and targeting become your only edge.

Why is my variable empty in the email?

Four causes come up: the contact does not have that data, the variable name has a wrong capital letter ({{firstname}} instead of {{firstName}}), it was typed by hand with one curly brace too many or too few, or it is stuck to a spintax brace. Insert it from Add variable, and check with a test email.

Can you put a calendar link in the first email?

It is not advisable. Asking for a meeting from someone who has never spoken to you skips a step, and the reply rate shows it. Aim for a reply to the first message, then share your calendar in your own reply. From the third or fourth message with no answer, a direct link becomes a reasonable option.

Can I attach a file to a campaign email?

The editor allows it, but we advise against it: an attachment is what weighs most on deliverability, to the point that some providers refuse to send. Link to the document instead, a single link, in https.

Should I add an "if the prospect replies" condition after each email?

No. The campaign's Condition to stop already stops the sequence for a contact as soon as they reply, by email or on LinkedIn. The extra condition breaks nothing, it is simply redundant.

Does the subject line really drive the open rate?

Less than people say. The gap between a decent subject line and a polished one is real, but it stays small next to the effect of deliverability, list quality and the offer itself. A short, honest subject line is enough: its job is to make people want to read on, not to work miracles.

Can you write your cold emails with an AI?

For inspiration and for generating ten subject lines to pick from, yes, any model will do. For writing the message itself, not as is: a general-purpose model does not know the rules of cold email and produces metaphors and marketing phrasing that sink the message. Feed it this page first with the Educate my AI button at the top of the page, then ask. To go further, see Prospecting and AI.